文章目录

  • 前言
  • 配置调试插件
  • 调试插件的使用
  • 总结
  • 常见问题


前言

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

配置调试插件

使用Android Studio可以动态调试Smali代码,需要用到一个插件smalidea-0.05.zip

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_重启

打开插件选项

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_反编译_02

点击Install plugin from disk

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_重启_03

找到插件目录,点击确定,然后重启IDE

调试插件的使用

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_android_04

将apk导入到Android Killer,点击工程管理->在Windows Explorer中打开

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_android_05

这个文件夹就是Android Killer反编译后生成的目录文件

  • Bin:编译后生成的apk文件
  • Project:反编译后生成的文件,内含Smali代码
  • ProjectSrc:Dex2jar工具生成的jar文件
  • cfg.ini:配置文件

我们在Android Studio中导入Project文件夹即可

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_反编译_06

点击Import Project导入项目,项目路径不能有中文字符

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_重启_07

一直点击Next

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_反编译_08

项目默认用Android apk的方式显示路径,这里需要切换为Project

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_Android_09

通过Android Killer中的入口类信息找到onCreate方法

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_Android_10

在函数开头的位置下断

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_重启_11

确保adb能够连接上模拟器,然后输入下面这条命令

adb shell am start -D -n com.bufish.org/.LogoActivity

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_android_12

以调试方式启动APP

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_Android_13

打开Monitor,查看调试端口为8700

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_重启_14

然后点击Add Configuration增加一个配置

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_android_15

这里需要把Android Studio更新到4.2,然后把插件换成smalidea-0.06.zip,否则无法继续后面的步骤

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_Android_16

点击加号,新增一个Remote

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_重启_17

修改名称和端口,点击apply

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_Android_18

开启Debug,断点断下说明远程调试连接成功

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_android_19

F9运行程序,找到order方法

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_Android_20

点击购买金币

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_反编译_21

此时程序断下

Android apk如何避免frida动态调试注入等风险 androidkiller动态调试_Android_22

在控制台左边是调用栈,中间是参数,如果还想查看其他变量,可以在右侧按加号添加

总结

动态调试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
    换进程另一个端口