前言

之前分析游戏进行破解的时候,都是通过字符串和日志的方式来对程序进行静态分析。但是在遇到算法类型的程序时,这种方法就显得效率特别低,所以就需要对代码进行动态调试。

配置调试插件

使用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代码步骤总结

  1. Android Killer反编译apk,生成smali代码
  2. 使用Android Studio导入反编译生成的Project文件
  3. 如果没有安装Smali插件,需要先安装一下,安装完成之后重启
  4. 开启monitor
  5. 开模拟器,并以调试方式启动apk
  6. 在monitor中找到调试进程,选择进程,设置通用调试端口8700
  7. 点击调试按钮,连接调试

常见问题

  1. 模拟器无法在monitor中正常显示进程列表

    关掉模拟器,结束掉adb进程,重启模拟器

  2. 调试连接的端口无法连接8700

    换进程另一个端口

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐