文章目录
- 前言
- 配置调试插件
- 调试插件的使用
- 总结
- 常见问题
前言
之前分析游戏进行破解的时候,都是通过字符串和日志的方式来对程序进行静态分析。但是在遇到算法类型的程序时,这种方法就显得效率特别低,所以就需要对代码进行动态调试。
配置调试插件
使用Android Studio可以动态调试Smali代码,需要用到一个插件smalidea-0.05.zip
打开插件选项
点击Install plugin from disk
找到插件目录,点击确定,然后重启IDE
调试插件的使用
将apk导入到Android Killer,点击工程管理->在Windows Explorer中打开
这个文件夹就是Android Killer反编译后生成的目录文件
- Bin:编译后生成的apk文件
- Project:反编译后生成的文件,内含Smali代码
- ProjectSrc:Dex2jar工具生成的jar文件
- cfg.ini:配置文件
我们在Android Studio中导入Project文件夹即可
点击Import Project导入项目,项目路径不能有中文字符
一直点击Next
项目默认用Android apk的方式显示路径,这里需要切换为Project
通过Android Killer中的入口类信息找到onCreate方法
在函数开头的位置下断
确保adb能够连接上模拟器,然后输入下面这条命令
adb shell am start -D -n com.bufish.org/.LogoActivity
以调试方式启动APP
打开Monitor,查看调试端口为8700
然后点击Add Configuration增加一个配置
这里需要把Android Studio更新到4.2,然后把插件换成smalidea-0.06.zip,否则无法继续后面的步骤
点击加号,新增一个Remote
修改名称和端口,点击apply
开启Debug,断点断下说明远程调试连接成功
F9运行程序,找到order方法
点击购买金币
此时程序断下
在控制台左边是调用栈,中间是参数,如果还想查看其他变量,可以在右侧按加号添加
总结
动态调试smali代码步骤总结
- Android Killer反编译apk,生成smali代码
- 使用Android Studio导入反编译生成的Project文件
- 如果没有安装Smali插件,需要先安装一下,安装完成之后重启
- 开启monitor
- 开模拟器,并以调试方式启动apk
- 在monitor中找到调试进程,选择进程,设置通用调试端口8700
- 点击调试按钮,连接调试
常见问题
- 模拟器无法在monitor中正常显示进程列表
关掉模拟器,结束掉adb进程,重启模拟器 - 调试连接的端口无法连接8700
换进程另一个端口