摘要
安卓漏挖第二步,学会动态调试smali代码。
由apk获取smali代码
用上文自己写的apk,以下三种方法都可以将apk反编译成smali代码。ps:win10的环境
01
Android Killer反编译去获取
Android Killer的安装,只需将附件中的安装包解压,双击AndroidKiller.exe即可。
将app-debug.apk拖入到AK中,选中smali右键点击属性即可进行反编译,得到Smali所在的文件夹。
02
通过解压apk提取dex
java -jar baksmali.jar d classes.dex
得到Smali代码
03
使用apktool工具反编译apk
apktool工具安装参考文章(https://blog.csdn.net/weixin_42603784/article/details/86102599),下载apktool_2.3.4.jar,将apktool_2.3.4.jar重命名为apktool.jar,将apktool.bat和apktool_2.3.4.jar和我们要反编译(https://so.csdn.net/so/search?q=反编译&spm=1001.2101.3001.7020)的apk文件放在一个目录即可。
反编译后会生成一个以apk文件名命名的目录。
java -jar apktool.jar d app-debug.apk
I: Using Apktool 2.6.1 on app-debug.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file:
C:UsersyangmutouAppDataLocalapktoolframework1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
APP-DEBUG
├─.idea
├─original
│ └─META-INF
│
├─res
│ ├─anim
│ ├─color
│ ├─color-v21
...
Android Studio动态调试smali代码
01
安装ideasmali插件
AS打开File-Settings-Plugins,搜索idesmali发现并没有该插件
我们进行本地install,首先下载该插件,插件官网下载地址(https://bitbucket.org/JesusFreke/smali/downloads/smalidea-0.05.zip),然后在箭头处导入刚下载的插件。
这里有安装第三方插件的提示,
Accept,然后就能在installed里面看到了
建议重启下AS(习惯了)。这里坑到我了,我后面导入Smali代码后,里面的一些代码一直爆红色,是因为这个插件重启后没有安装加载成功。搜了搜,看到了这个链接(https://blog.51cto.com/lilongsy/5456865),
猜测是新版本的AS不支持加载老版本的Smalidea。所以解决方案是下载更高版本的smalidea-0.06.zip。下载链接(https://bitbucket.org/JesusFreke/smalidea/downloads/)然后同样的操作,导入成功。
02
查看apk是否可调试
开始动态调试之前,需要有个前提条件。在AK或者AS中看AndroidManifest.xml中的application的android:debuggable要为 true,如果为flase或者不存在的话,要修改添加后才能调试。
另外,这里要注意下apk的package名和入口Activity
03
AS导入反编译后的目录并配置SDK
AS导入反编译后的目录apk-debug,
然后点击smali_classes3目录右键->Mark Directory->Source Root,完成后,该目录会变成浅蓝色。
因为插件idesmali成功加载了所以打开Smali代码是可以成功解析的,不会爆红。
配置SDK,File-->Project Structure,
04
新版本AS调试Smali代码
配置雷电模拟器,打开root权限和ADB调试。
Run-->Attach to Process,点击红框的位置,选择helloworld2进程。
现在模拟器成功连接。
下断点,点击行数,然后输入用户名和密码,点击登录.发现调试成功.
原文始发于微信公众号(华云安):【车联网安全系列】安卓漏挖之“动态调试smali代码”
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论