上篇文章简单介绍了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 导入

一路next。
在src
目录右键

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

之后配置调试


添加一个remote 并设置端口。
准备工作完成,在需要调试的smali代码里打断点,然后 run->debug
即可。
网友评论