`

通过SDK自带ProGuar工具 对 dandroid jar(sdk)包混淆处理

阅读更多

        好长时间没有写技术博客了,转眼间已经有5年没有写,最近有点时间,打算把这几年里积累都发表贡献出来,希望广大博友多支持和拍砖,进入正题。

        android 开发过程中会遇到自己开发(封装)的jar包需要提供给别人使用,这时候又不想把源码暴露给他人,所以就会用到jar包混淆 。再有就是网络提共的很多示例或者其它人写的方法都不起作用,经过小弟一周多来的努力,终于成功了,以下就是经验之谈。

1、下载最新的混淆工具

      如果jdk 是1.8及以上的,下载地址:http://proguard.sourceforge.net/index.html#downloads.html

      如果jdk 是1.8以下的,用sdk 自带的就可以,路径在“你的sdk路径\tools\proguard”

 

2、接下来就是编写pro文件了。

     相信很多人都试过N多个混淆文件,但是虽然混淆成功了最终运行还是失败了,以下是我的文件, 以下文件可以正常混淆且运行无错,可以放心的修改吧,记住一定要把注释去掉才能使用。

    

//需要混淆的jar包
-injars 'D:\ProGuard\acquireurlhistory.jar'
//混淆成功后生成的jar包
-outjars 'D:\ProGuard\output\mj_sdk_20160425.jar'
//你开的的jar包里需要引用的第三方jar包,这些jar包我都放在我的D盘上
-libraryjars 'D:\Program Files\Java\jdk1.8.0_73\jre\lib\rt.jar'
-libraryjars 'D:\ProGuard\libs\android.jar'
-libraryjars 'D:\ProGuard\libs\annotations.jar'
-libraryjars 'D:\ProGuard\libs\dbutil.jar'
-libraryjars 'D:\ProGuard\libs\mjoysmaster.jar'
-libraryjars 'D:\ProGuard\libs\protobuf-java-2.5.0.jar'

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-optimizationpasses 5
-dontusemixedcaseclassnames
//原数据 不能混淆
-keepattributes *Annotation*
-verbose



//你开发的jar包里引用到的R文件 不需要混淆
-dontwarn com.androld.tools.R*


-keep class org.apache.3rdparty.stuff.**

-keep public class * extends android.app.Activity

-keep public class * extends android.app.Application

-keep public class * extends android.app.Service

-keep public class * extends android.content.BroadcastReceiver

-keep public class * extends android.content.ContentProvider

-keep public class * extends android.app.backup.BackupAgentHelper

-keep public class * extends android.preference.Preference


//这是我开放出来给别人调用的sdk 入口 ,要排除掉,不能混淆
-keep class com.androld.tools.mjoys.MjoysSdkAgent {
    <fields>;
    <methods>;
}
//同理,DB 的初始化要开放出来
-keep class com.androld.tools.common.MJDBHelper {
    <fields>;
    <methods>;
}
//开放接口里的方法也不能混淆
-keepclassmembers public class com.androld.tools.mjoys.MjoysSdkAgent {
    public static <fields>;
}
//同上
-keepclassmembers public class com.androld.tools.common.MJDBHelper {
    public static <fields>;
}



-keepclasseswithmembers class * {
    public <init>(android.content.Context,android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context,android.util.AttributeSet,int);
}

-keepclassmembers class * extends android.app.Activity {
    public void *(android.view.View);
}

-keep class * extends android.os.Parcelable {
    public static final android.os.Parcelable$Creator *;
}

-keepclasseswithmembers,allowshrinking class * {
    native <methods>;
}

# Also keep - Enumerations. Keep the special static methods that are required in
# enumeration classes.
-keepclassmembers enum  * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

 以上用注释的地方就是我自己的需要,所以我做了修改,其它没有加注释的,就是不要修改了,相信大家看其它人写的和我这的都一样,所以不作多解释。

 

3、进入proGuard的bin目录

     

 

 

 看到以下界面 :

   

 

如果文件编写错误,就会提示错吴,仔细观察文件是不是那里注释没有删除掉还是那里语法写错误。之后点击左边的process 进入混淆界面,点击右下角的process 开始混淆,如果内容里看到successfully 说明混淆成功,但是不一定运行不报错,所以要测试混淆好的jar包是否可用,也可以看看你的代码里那里出错,再按以上方法,把你的类或者方法排除不混淆,直到成功。

 



 

至此,已经完成,我搞了一周才能搞好,大家加油吧,我把我的proGuard文件放到附件里供大家下载。

 

 

  • 大小: 44.3 KB
  • 大小: 89.3 KB
  • 大小: 125.6 KB
0
6
分享到:
评论

相关推荐

    android反编译,二次打包一套工具

    - **优化**:最后,使用dex2jar等工具将Java类文件转换回Dex格式,并可能用ProGuard进行混淆,以增加反编译的难度。 2. **jd-gui**: jd-gui是由Jochen Hoenicke开发的一个图形界面工具,用于快速查看Java字节码...

    android反编译工具包

    这就是Android反编译工具包的作用。本文将深入探讨其中的主流工具——Apktool,以及如何利用它来进行APK的反编译。 Apktool是一款强大的开源工具,专为Android开发者设计,用于解包和重新打包APK文件。它能够解析...

    aapt apktool apktool.jar

    首先,AAPT是Android SDK的一部分,它负责处理应用程序资源,如图片、布局文件、字符串等。AAPT的主要功能包括: 1. **资源编译**:将XML资源文件转换为二进制格式,以便于Android系统快速解析。 2. **资源打包**:...

    apktool(2.2.4-2.9.3)打包

    6. **版本更新**:从2.2.4到2.9.3,Apktool经历了多次更新,修复了诸多bug,增强了稳定性,增加了对新版本Android SDK的支持,使得其在处理现代APK时更加得心应手。 **Apktool的使用步骤** 1. **安装Apktool**:...

    APKTool apktool.jar 2.2.4

    6. **支持多种版本**: APKTool适用于不同版本的Android SDK,使其在处理各种APK时具有广泛的兼容性。 ### 使用APKTool的步骤 1. **下载和安装**: 获取apktool.jar文件,将其放置在一个方便的目录,并确保JRE(Java...

    android apk反编译工具

    4. **dex2jar**:工具用于将Dalvik Executable (DEX) 文件转换为Java的jar文件,便于用Java反编译器进一步处理。 反编译步骤如下: 1. **获取APK文件**:首先,你需要有一个想要反编译的APK文件。 2. **安装JDK**...

    Android反编译APK的两种方式

    - **dexdump**:Android SDK自带的命令行工具,可以显示.dex文件的详细信息。 在实际工作中,开发者可能会结合使用上述工具,以获取更全面的APK分析结果。但记住,理解反编译的目的和限制,以及遵守相关法规,是...

    apktool android工具

    **Android工具:Apktool详解** Apktool是一款强大的Android反编译工具,它主要用于解析APK文件,帮助开发者深入理解APK的内部结构,学习并借鉴其他应用的优秀算法和设计。通过Apktool,我们可以对APK进行解包、修改...

    apktool、apktool.jar、apktool.bat

    对于进行了混淆处理的DEX文件,反编译后的代码可能难以理解。此外,Apktool无法解密加密的资源或还原资源的原始值。 6. **注意事项** 使用Apktool进行反编译应遵循合法和道德的原则,不得用于非法目的,如侵犯他人...

    android自动打包方法(ant+proguard+签名)知识.pdf

    通过使用Ant构建工具,结合ProGuard进行代码混淆,并完成最终的签名操作,可以极大地提高Android应用的构建效率,同时也能有效保护应用的安全性。本篇文章提供了一个完整的示例,可以帮助开发者快速实现自动化打包...

    android安卓app教程之反编译App,修改资源文件后,重新打包生成新的APK.zip

    开发者可以通过混淆代码、加固等方式来防止应用被轻易反编译,例如使用ProGuard或R8混淆工具。 通过以上步骤,你可以理解Android应用的反编译过程,掌握修改资源文件和代码的基本方法。然而,这只是一个基础教程,...

    android安卓app反编译apk反编译教程.zip_android反编译smali

    - 遇到`could not decode arsc file`错误时,可能是因为APK使用了较新的Android SDK版本,这时可以尝试更新Apktool或者使用特定版本的SDK。 3. **Smali代码**: - 当反编译过程中无法获取到Java源代码时,我们...

    apk工具集合

    6. **签名与优化**:如果ApktoolPlus集成了签名和zipalign,那么在打包后可以直接执行这两个步骤,否则需要使用Android SDK提供的工具进行签名和优化。 7. **安装与测试**:最后,将签名并优化后的APK安装到设备上...

    手机apktool

    2. **依赖问题**: 反编译的应用可能依赖特定的 Android SDK 版本或库,打包时需要保证这些依赖项被正确处理。 3. **混淆代码**: 如果原始应用进行了代码混淆,反编译后的代码可能难以理解,需要借助其他逆向工程...

    apktool_2.2.4版本

    在压缩包中,`aapt.exe`是Android Asset Packaging Tool的命令行工具,它是Android SDK的一部分,用于处理应用程序的资源,如创建、提取、打包和编译资源。`apktool.bat`是一个批处理文件,方便Windows用户通过...

    查看apk 源码

    在Android开发领域,有时我们需要对已有的APK文件进行反编译,以便查看其源代码、资源文件或进行二次开发。APK反编译是一种逆向工程的技术,它可以帮助我们理解应用程序的工作原理,修复错误,或者学习其他开发者的...

    一键apktool

    Android Asset Packaging Tool(aapt)是Android SDK的一部分,它负责处理应用的资源,包括创建资源表、编译资源文件和生成R.java类。在Apktool的反编译和打包过程中,aapt用于生成和验证APK的资源部分。 5. **...

    Android Jenkins文档2(使用及常见问题)

    ### Android Jenkins 使用与常见问题详解 #### 一、Android Jenkins 的...通过以上详细的解析和解决步骤,可以帮助开发者更好地理解和处理在使用 Jenkins 构建 Android 项目时可能遇到的问题,提高构建效率和质量。

    apktool apk反编译攻击

    1. **混淆代码**:使用ProGuard或R8等混淆工具对DEX文件进行混淆,使得反编译后的代码难以阅读和理解。 2. **加密资源**:敏感数据不应直接存储在资源文件中,而应加密处理并在运行时解密。 3. **数字签名**:确保...

    超详细搭建UIautomator环境.pdf

    Android SDK是进行Android应用开发和测试的基础工具,UIAutomator要求SDK版本高于API 15。 - **下载地址**:http://developer.android.com/sdk/index.html - **安装路径**:选择合适的安装位置,例如`E:\tools`。 -...

Global site tag (gtag.js) - Google Analytics