1. 反编译APK获取源码(为混淆可以获取源码;混淆过后获取的源码方法名等为随机字母;套壳后基本拿不到源码,但不影响获取resources资源)
a. 需要工具:dex2jar 和 jd-gui , 其中,dex2jar 这个工具用于将dex文件转换成jar文件 ,
下载地址:http://sourceforge.net/projects/dex2jar/files/ ;
jd-gui 这个工具用于将jar文件转换成java代码 , 下载地址:http://jd.benow.ca/
b. 解压dex2jar压缩包后,你会发现有很多个文件, 我们只需要 d2j-dex2jar.bat 这个文件
c. 将 XXX.apk 重命名为 XXX.zip 解压 --》 获取classes.dex文件
d. 将classes.dex文件复制到dex2jar的解压目录下,执行命令: d2j-dex2jar classes.dex
e. 执行成功后,会发现目录下多出了 classes-dex2jar.jar 文件
f. 用jd-gui 工具打开 classes-dex2jar.jar 文件,可以看到源码(为 .class文件只能看不能修改)
h. 在 jd-gui 中点击 File --》 选择保存所有源码 --》成功后即可拿到 .Java 的源代码,可以修改
2. 反编译APK获取resources 资源文件
a. 需要apktool 这个工具用于最大幅度地还原APK文件中的9-patch图片、布局、字符串等等一系列的资源,
下载地址:http://ibotpeaches.github.io/Apktool/install/
b. 新建一个文件夹,将 apktool_2.3.0 --》重名为apktool.jar, 和 apktool.bat 文件一起放到该新建文件夹下
c. 将XXX.APK 也放到该文件夹下,执行命令: apktool d Demo.apk
3. 重新对APK签名打包
a. 新建签名文件放到和 APK,apktool.jar,apktool.bat,反编译获得的文件夹,相同的目录下;
b. 执行命令: apktool b Demo -o New_Demo.apk 打包APK;
c. 执行命令:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 签名文件名 -storepass 签名密码 待签名的APK文件名 签名的别名 --》对APK进行签名
d. 签名之后已经可以安装了,但最好在执行一步对齐操作: 执行命令: zipalign 4 XXX.apk XXX_signed.apk
e. 可能需要将 zipalign 配置到系统环境变量 path 中: F:\develop\android_studio_2.3\sdk\build-tools\26.0.0
4. 上述操作其实也可以通过 Android逆向助手 这个工具来进行快捷的操作,反编译的一些具体操作可以参考郭林的文章:
a. http://blog.csdn.net/guolin_blog/article/details/49738023/
a. http://blog.csdn.net/guolin_blog/article/details/49738023/