AndroidStudio 动态调试

上篇文章简单介绍了apktool的使用
方法,本片文章主要介绍无源码动态调试。

为何要使用无源码动态调试

目前很多app都针对反编译及二次打包做了处理,想要使用源码进行调试需要花费很多时间,需要反编译app,设置为可调试状态,重新打包。而使用动态调试,只需要smali文件及原始app即可,虽然smali文件的可读性较差些,需要对比源码来进行。

准备工作:

1.apktool 反编译出的smali文件
2.jadx 查看源代码
3.root 手机
4.Android Studio

前两步比较简单,上篇文章已经介绍过了,动态调试需要运行app,我选择的是模拟器,国内的很多模拟器做的比官方的还要好......,基本自带root,只要将设备的secure 关闭即可。

手机 root

我使用的是setprops,按照文档操作生成setprops,并拷贝到手机的data/local/tmp/ 目录下,然后关闭secure ./setprops ro.secure 0 打开debugable 即可。

接下来以debug模式运行你要调试的app

adb shell am start -D -n com.xxx/.modules.main.SplashActivity

查找应用进程的端口并进行转发 adb forward tcp:8700 jdwp:3296

修改系统属性的方式,每次重启都会失效,不过操作很简单,修改镜像的方式可以一劳永逸但是较为麻烦。

AndroidStudio导入工程

首先创建一个目录 DebugApp,并创建src 子目录,将你反编译后的工程复制到src目录下。

studio 导入


image.png

一路next。

src 目录右键

image.png

设置为source root,我这里已经设置了,所以没有这个选项。

然后设置sdk


image.png

之后配置调试


image.png
image.png

添加一个remote 并设置端口。

准备工作完成,在需要调试的smali代码里打断点,然后 run->debug即可。

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