Apktool 是一个反编译Android Apk的第三方工具。它可以反编译资源,并在进行修改之后重新打包Apk。
APKTool是GOOGLE提供的APK编译工具,能够反编译及回编译apk,同时安装反编译系统apk所需要的framework-res框架,清理上次反编译文件夹等功能。需要java支持。apktool支持将apk文件或dex转换为jar文件
apktool官方:https://ibotpeaches.github.io/Apktool/
Java SDK18 :https://www.oracle.com/java/technologies/downloads/#jdk18-windows
apktool特点:
反编译apk
重建apk
签名apk
优化apk
framework-res.apk 工具,实现安装和管理
apk转jar
dex转jar
1、配置好环境变量
2、反编命令
反编译: java -jar apktool.jar d -f wmphp.apk -o wmphp (简写java -jar apktool.jar d -f wmphp.apk )
二次打包:java -jar apktool.jar b wmphp -o wmphp.apk (简写java -jar apktool.jar b wmphp)
签名 java -jar signapk.jar platform.x509.pem platform.pk8 xxx.apk xxx_new.apk (签名请看本站之前文章,keytool和jarsigner进行签名)
此命令也可以对已经签名过的apk进行重新签名,步骤是使用压缩软件打开apk,进入META-INF目录下,删除应用程序的3个签名文件,然后执行上面的命令即可。
FAQ:
安装apk后可能出错
重新打包签名后如果安装出现Failed to extract native libraries, res=-2
出现这个问题的原因是在AndroidManifest.xml中的application标签中加了一句: android:extractNativeLibs="false".
3、使用gradlew.bat 创建生成apktool.jar反编译包,由于apktool.jar开源的,我们如果有能力可对其增加功能。
git clone https://github.com/iBotPeaches/Apktool.git
(1)打包shadowJar,此jar包会将依赖都打包进去,执行gradlew.bat,如果是linux系统则执行./gradlew
gradlew.bat build shadowJar
输出目录:./build/libs/Apktool2.6.2.jar
(2)打包混淆过的jar
gradlew.bat build shadowJar proguard
输出目录:./brut.apktool/apktool-cli/build/libs/apktool-xxxxx.jar
ProGuard是一个压缩、优化和混淆Java字节码文件的免费的工具,它可以删除无用的类、字段、方法和属性。可以删除没用的注释,最大限度地优化字节码文件。它还可以使用简短的无意义的名称来重命名已经存在的类、字段、方法和属性。常常用于Android开发用于混淆最终的项目,增加项目被反编译的难度。
JAVA源代码(.java文件)通常被编译为字节码(.class文件)。而完整的程序或程序库通常被压缩和发布成Java文档(.jar文件)。字节码比 Java源文件更简洁,但是它仍然包含大量的无用代码,尤其它是一个程序库的时候。ProGuard的压缩程序操作能分析字节码,并删除无用的类、字段和方法。程序只保留功能上的等价,包括异常堆栈描述所需要的信息。
完美源码 » apktool反编译教程