如何进行反编译
这里我们需要用到几个工具
- apktools 主要用户反编译和打包
- dex2jar 主要用于将dex文件转化为jar文件
- jd-gui 主要用于对.class文件展示为源码(比如jar文件)
-
smalidea 是一个IntelliJ IDEA/Android Studio smali语言插件,可实现动态调试smali代码。
记得配制相关的环境变量,否则要使用java -jar 方法运行。
apktool
源代码 https://github.com/iBotPeaches/Apktool
对于 apk包来说,如果直接改后缀名的,打开的布局文件是乱码,原因在于打包成apk文件,对原始的文件进行特殊压缩处理,而通过apktool工具就可以看来原始的布局文件。
命令
apktool d xxx.apk
或者
java -jar apktool.jar d xxx.apk
如下图
apktool
解压后生成test的文件,里面就有布局文件
解压后生成test的文件
dex2jar
我们生成apk,将所有java类都编译放在了classes.dex文件中。
命令
dex2jar classes.dexdex2jar classes.dex
会自动生成classex-dex2jar.jar文件,而jar文件中包含的都是类的class文件,是不可读的,因此需要第三个工具,jd-gui。
jar文件
jar文件
jd-gui
jd-gui可以查看具体class文件
jd-gui
smalidea
smalidea源代码 https://github.com/JesusFreke/smali/wiki/smalidea
smalidea包 https://bitbucket.org/JesusFreke/smali/downloads/
通过Android Studio 动态调试安卓app
这里有个前提是手机Root过。
安装smalidea
- 下载smalidea包,
- 打开Android Studio,按Alt+Ctrl+S打开设置界面,点击Plugins——Install plugin from disk…——选择下载好的smalidea包,进行安装
- 重启Android Studio
得到smali代码
有两种方式
- 通过apktool 反编译可以得到smali代码
- 通过baksmali反编译也可以得到
apktool反编译
参考上面的apktool使用方法。
baksmali反编译
将Apk后缀名改成rar 解压得到 classes.dex。
命令
java -jar baksmali-2.2.5.jar d classes.dex
通过以上命令得到smail文件。
导入smail文件到Android Studio
通过 File->New->Import Project,导入项目
配制端口
Edit Configurations… 添加一个remote调试 修改调试的端口 用8900端口。
调试app
- 在smali代码中需要调试的地方打上断点
- 运行应用,并在DDMS中选中应用的进程
- 点击Debug按钮,开始调试
当运行到断点时应用就会被暂停,就像平时调试操作一样。
工具下载地址
apktool 链接:http://pan.baidu.com/s/1skm3d6l 密码:6525
dex2jar 链接:http://pan.baidu.com/s/1jHdTNka 密码:8jlh
jd-gui 链接:http://pan.baidu.com/s/1kUsfbDH 密码:jhbw
apktool官方下载
smalidea 下载
网友评论