前言
apk的反编译是我们在Android开发中绕不开的一个坎,对于反编译这门技术,我们应该抱着学习的态度,学的越多,也越能防备别人反编译我们,这就是所谓的知己知彼吧,哈哈
需要准备的工具
- Apktool,解包和重新打包都需要它
- dex-tools,可以直接把apk中的classes.dex文件反编译为.jar文件
- jd-gui,直接查看.jar文件中的java文件
- JEB,同时满足dex-tools和jd-gui的功能,但反编译出来的代码不太一样,可以互相对照
- Notepad++,非常强大的文档编辑器,用来查看各种文件,修改.smali我用的就是它
- Android SDK target版本的build-tools中的apksigner,用于给打包好的apk签名
具体实现
apktool
Apktool - A tool for reverse engineering 3rd party, closed, binary Android apps.
用来解包和重新打包apk的工具,命令最多只用得到几行,可以反编译出AndroidManifest.xml和各种资源文件。
解包
这句命令是指在D:\tools\apk_tool_2.7.0文件夹中有一个test.apk文件,这个test.apk文件反编译到同路径下的test文件夹中,该操作会反编译AndroidManifest.xml和res的资源文件
apktool d D:\tools\apk_tool_2.7.0\test.apk -o D:\tools\apk_tool_2.7.0\test
但需要注意的是,重新打包时不能用反编译过res和AndroidManifest.xml的文件夹打包,不然会报错,不会反编译AndroidManifest.xml和res的命令如下:
apktool -r d test.apk
这句命令省略了当前文件路径和输出文件夹路径,和上面的命令相差只是在d前面多加了一个-r
该操作不会反编译AndroidManifest.xml和res的资源文件,可以被重新打包
重新打包
把apktool相同路径下的test文件夹重新打包为test.apk
apktool b test
dex-tools
github地址:
GitHub - pxb1988/dex2jar: Tools to work with android .dex and java .class f

本文介绍了Android应用的反编译过程,包括使用Apktool进行解包和重新打包,dex-tools将dex文件转为jar,jd-gui查看jar中的源码,以及更高级的JEB工具进行反编译和调试。强调了学习反编译技术有助于提高应用的安全性,并提供了详细的步骤和所需工具。
最低0.47元/天 解锁文章
1万+





