动态调试某个apk的smali代码,微信举例
本地环境:
PC:windows 10,Intellij IDEA (android studio应该一样的)
手机:nexus5 8.1系统,
其他依赖:smalidea插件,xposed
插件 https://github.com/JesusFreke/smali
我使用的版本的下载链接,也是官方的:https://bitbucket.org/JesusFreke/smali/downloads/smalidea-0.05.zip
这个插件不能在线安装,需要下载后通过Install plugin from desk来安装
apktool 反编译出smali,多dex的apk会反编译出很多个smali文件夹,我们把它们复制到同一个文件夹内
然后在命令行启动ddms,命令是monitor,如果没配置环境变量可以去Sdk\tools里运行,启动后应该是这个样子的
但是此时应该看不到应用列表,需要安装一个xposed模块来把微信变成debuggable的,我用的是BDOpener,地址在:https://github.com/riusksk/BDOpener
模块生效后应该和上图就差不多了,但是只能看到debug列表,不能通过正常的点小虫子的方式debug,这时去手机端设置。
在开发者选项中找到 选择调试应用,选上微信,然后打开等待调试程序的开关。
这时运行微信就会变成这样
是不是熟悉多了?
然后回到IDEA,来配置我们的调试器。
先把刚才反编译出来的smali整理一下,放到一个src文件夹,比如wechat/src
然后用IDEA打开项目,Android Studio可以用Open an existing Android Studio Project
然后需要右键点击src,选择Mark Directory As > Sources Root
然后给项目设置一个jdk,我的是1.8
然后配置run config
取个名字,配好端口号就行。
让手机端打开微信,运行我们的调试器吧,当然手机要usb连接电脑。
出现下图就是成功连接上了,
然后就可以愉快的下断点了