Android smali动态调试

调试步骤

反编译apk

  1. 使用apktool工具反编译apk
java -jar apktool.jar d -fo out/
  1. 在AndroidManifest.xml里面的Application标签添加以下内容打开调试开关
  1. 除此之外,还要在启动的Activity的onCreate方法添加等待调试语句,防止apk已启动就代码执行了,具体看一下:
invoke-static {}, Landroid/os/Debug;->waitForDebugger()V

和包,将上一个步骤产生的文件合成apk

  1. 和包
java -jar apktool.jar b out/
  1. 签名并安装到手机上,如果此时启动应用,apk可能处于白屏无影响状态,这就是等待你调试启动

Android studio开始调试

  1. 将第一个步骤反编译产生的smali文件导入到studio工程中,一直选默认即可
Android smali动态调试_第1张图片
1.png
  1. 使用adb 命令或者手动启动应用,adb命令如下:
adb shell am start -D -n com.jack.qrcode/.ui.MainActivity

1.png

-D:开启debug模式
-n打开以包名/Activity名方式启动
相关命令详解可点击

  1. 查看手机端的应用进程并进行端口映射
adb shell ps | grep "qrcode"
adb forward tcp:8901 jdwp:16886
1.png

插入知识点:adb调试桥,adb调试桥是Android官方定制的一款Android强大的调试工具,通过adb工具我们可以向设备发送调试指令,获取设备的运行状态,操作控制设备;adb调试桥分为三个部分:服务器(PC端,代码在Android sdk里面)、客户端(PC端,我们通常发送一个指令,如adb shell install xx.apk就是客户端的操作)和后台程序(设备端,接收执行反馈状态);服务端端用于连接客户端和后台程序,知道数据发送接收工作,Android studio等开发工具的调试工具部分就是利用adb功能编写,上面的端口映射也就是讲PC端口8091的数据都转发到设备端16886的进程中去;具体工作流程可点击这里:

  1. 配置Android studio的debug参数
Android smali动态调试_第2张图片
1.png
  1. 设置断点后开始调试即可,下图是到断点处的调试信息
Android smali动态调试_第3张图片
1.png
  1. 后面就可以点IDE上的调试按钮开始调试了,祝你成功

你可能感兴趣的:(Android smali动态调试)