美文网首页
IDEA 动态调试Smali代码

IDEA 动态调试Smali代码

作者: Andrew玩Android | 来源:发表于2017-04-12 15:52 被阅读1117次

    逆向方式有多种:静态、动态, 工具也很多:JEB、IDA、IDEA/AndroidStudio,调试内容:Smali、So库。

    本文介绍IDEA动态调试Smali方式。

    获取Smali文件

    Apktool反编译获取Smali文件,也可使用集成工具AndroidKiller反编译apk。

    1. Apktool 在jar和apk所在目录使用命令行 apktool d ***.apk -o Project,即反编译到Project目录。
    2. AndroidKiller 直接将apk拖进主界面即可,反编译后结构:
    killer-project-dir.png

    生成可调式APK

    1. AndroidManifest.xml中添加android:debuggable="true"
    2. 在入口Activity的onCreate方法开始处添加android.os.Debug.waitForDebugger()
      对应的smali代码为:invoke-static {}, Landroid/os/Debug;->waitForDebugger()V
      onCreate.png
    3. 重新打包。
    • Apktool: b -d Project -o debug.apk
    • AndroidKiller: 菜单栏 Android -> 编译
    1. 安装生成apk。

    IDEA 导入Project

    1. 导入反编译项目:Import Project,选择Project目录后将反编译文件导入到IDEA。
    2. 在目标Smali文件打上断点。


      breakpoint.png

    IDEA的smalidea插件用0.0.3断点进不去,升级至0.0.5后调试成功。
    smalidea下载地址


    调试环境配置

    1. 运行程序,手机会显示白屏或等待调试界面。
    2. 打开DDMS,目录\sdk\tools下运行monitor.bat,DDMS出现程序待调试状态。
      ** 红色Debug表示此进程正等待调试,15745为pid/进程ID,8600为此进程的远程机器调试端口号,8700为通用备用端口号**。


      ddms.png
    3. 配置远程调试选项,
      点击菜单栏** Run ,选择 Edit Configurations ,点击 ** + ** 选择 Remote **。

    ** 配置远程调试选项 **

    Host:localhost
    Port:8600
    调试模式:Attach
    项目:<whole project> 或 Project

    remote-debug.png

    远程调试

    点击Debug开始远程调试。

    debug-start.png

    开始调试后,DDMS中Debug标志变成绿色,表示已经成功连接远程调试服务端。
    Console中也有成功连接输入Connected to the target VM, address: 'localhost:8600', transport: 'socket'

    ddms-debuged.png

    然后触发断点条件后,就会进入断点。


    breakpoint-checkin.png

    剩下的就跟平时开发断点调试一样。


    相关推荐:
    JEB动态调试apk
    AndroidStudio 动态调试Smali代码


    参考:

    使用IDEA动态调试smali代码

    相关文章

      网友评论

          本文标题:IDEA 动态调试Smali代码

          本文链接:https://www.haomeiwen.com/subject/npkmattx.html