APK调试(二) 无代码调试smali

本文介绍了两种方法对反编译的APK进行无代码调试Smali的步骤,包括修改AndroidManifest.xml,添加调试标志,使用androidkiller工具,并在Android Studio中配置远程调试。详细步骤涉及apktool反编译、Smali代码修改、项目编译及端口转发。

使用反编译的项目进行调试

 

方法一(麻烦不建议用,不全请参考方法二):

  • 步骤

    1. apktool d -d 目标.apk -o 结果存放路径

    2. 修改Andriod.manifest文件,在application节点中添加    android:debuggable="true"(使用emeditor修改)

    3. 在入口点的类的onCreate方法中添加   invoke-static{},Landroid/os/Debug;->waitForDebugger()V(使用emeditor修改)

    4. 编译修改过的apk文件

 

 

方法二:

 

  • 步骤

    1. 使用androidkiller反编译apk(如反编译失败,请看 androidkiller(二) 解决Android killer1.3.1反编译高版本apk卡死

    2. 修改Andriod.manifest文件,在application节点中添加    android:debuggable="true"(使用emeditor修改)

    3. 在入口点的类的onCreate方法中添加(使用emeditor修改)

      • invoke-static{},Landroid/os/Debug;->waitForDebugger()V

    4. androidkiller编译修改过的项目(android->编译->工具->apk签名(勾选签名成功后自动安装))。完成此步骤后debug app已安装,可调式的项目也已生成

    5. copy编译后的项目,用于调试(cp AndroidKiller_v1.3.1\projects\app-release AndroidKiller_v1.3.1\projects\app-release_as -r    伪代码,各系统请自行操作)

    6. 使用android studio打开app-release_as

    7. android studio新建remote调试配置(Run->Edit configurations->+->remote->修改名称)

    8. 调试程序方式启动app

      • adb shell am start -D -n  com.example.ndk_onload/.MainActivity(com.example.ndk_onload为project的名称,.MainActivity为active的名称,可用AndroidManifest.xml中找到)

    9. 查看调试程序的远程端口号

      • adb shell ps | findstr "com.example.ndk_onload"

      • 第二个值即为端口号

    10. 设置端口转发

      • adb forward tcp:5005 jdwp:29676

      • 第一个值为本地端口,jdwp为手机app的端口

    11. android studio项目调试(android studio需要安装smaliide插件,详见 smaliide安装

      • 在smali中下好断点

      • Run->Debug 'remote'

 

技巧:修改dex的伪代码

 

还有一篇不错的介绍:https://www.cnblogs.com/goodhacker/p/5592313.html

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值