Learning Man's Blog

动态调试 with smali

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

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. 0x01 步骤
    1. 1. Vysor 安装
    2. 2. smalidea 安装
  2. 0x02 可能遇到的问题
    1. 1. ADM功能无反应
    2. 相关链接
    3. 替换教程
    4. 2. 真机ADM不显示进程
      1. 相关链接
      2. 安装教程
    5. 3. 断点处查看变量值