Learning Man's Blog

动态调试 with smali

字数统计: 687阅读时长: 2 min
2019/01/25

0x01 步骤

1. Vysor 安装

为什么安装这个,adb wifi 连接测试机后远程操作才是王道_(:з」∠)_

有能力请支持正版!!!有能力请支持正版!!!有能力请支持正版!!!

官网下载,修改Vysor.app/Contents/Resources/app/unpacked-crx/license.js解锁Pro版

var isLicensedScoped = true;
var isLicenseCachedScoped = true;

担心版本更迭后失效,可修改同目录下Manifest.json中的版本号至大数字

2. smalidea 安装

官方文档:https://github.com/JesusFreke/smali/wiki/smalidea

  1. IntelliJ/Android Studio 安装 smalidea 插件

    1. 进入 IDE settings 中的 Plugins

    2. 选择Install plugin from disk

    3. 选择smalidea-0.xx.zip,目前最新是0.05

  2. apktool 反编译 apk

     # 这里反编译wx,因为对资源混淆了,所以使用 -r 不解码资源
     > apktool -r d xx.apk

    P.S. 不要用baksmali,是因为baksmali只反编译classes.dex中的代码,但是其他扩展dex没有处理。现在大的app基本都会有若干扩展dex

  3. 导入IDE,选择Import project(Eclipse ADT, Gradle, etc.)

  4. 选择Create project from existing sources 之后一路next。

  5. 将dex对应的目录(smali, smali_classes2…)都执行Mark Directory As -> Sources Root(图里因为已经标记了,所以显示为unMark)

  6. File –> Project Structure配置 SDK

  7. 添加一个 Remote 配置,更改端口为8700(也可以直接改为ADM中进程对应端口,只是会每次debug前都需要查看是否变更)

  8. 先在测试机中安装要调试apk

  9. 在 ADM 选择要调试的进程,选中后会可见在后面自动添加8700调试端口(图中8611/8700两个端口都可实现调试连接)

  10. 按下debug开始调试

0x02 可能遇到的问题

1. ADM功能无反应

MAC上ADM(Android Device Monitor)在高版本jdk中无任何响应,需要降级到jdk-8u151-macosx-x64
Windows暂时未知

相关链接

  1. https://stackoverflow.com/questions/47089757/android-device-monitor-freezes-on-mac-os-x
  2. https://blog.csdn.net/OneDeveloper/article/details/80039843

替换教程

  1. 下载链接中下载jdk-8u151-macosx-x64进行安装
  2. 进入/Library/Java/JavaVirtualMachines删除高版本jdk目录
  3. java -version检查版本,如果缺少环境变量需要在.bash_profile配置JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

2. 真机ADM不显示进程

通常在用IDA调试android dex时,如果程序的debugable选项未开启,则无法进行smali调试,以往通常有两种做法:

  1. 修改程序的AndroidManifest.xml中的debugable="true",然后签名重打包
  2. 修改系统属性,将defalut.propro.debugable设置为1,然后刷机进去

相关链接

  1. https://security.tencent.com/index.php/opensource/detail/17

安装教程

  1. 需要刷twrp、mgisk后,安装xposed
  2. adb install BDOpener.apk

3. 断点处查看变量值

Variables内没有出现的变量,可在断点相应的Frames使用Evaluate Expression功能计算获取变量值

CATALOG
  1. 1. 0x01 步骤
  2. 2. 0x02 可能遇到的问题