前期准备
添加android:debuggable=”true” 属性
在AndroidManifest.xml application 标签中添加 android:debuggable=”true” 属性
添加方式有两种
android:debuggable="true"
在入口处添加waitForDebugger代码进行调试等待
这里说的入口处,就是程序启动的地方,就是我们一般的入口Activity,查找这个Activity的话,方法太多了,比如我们这里直接从上面得到的AndroidManifest.xml中找到,因为入口Activity的action和category是固定的。
invoke-static {}, Landroid/os/Debug;->waitForDebugger()V
查看端口号
将已经重新打包的apk安装到手机上,打开Android Device Monitor (Tools -> Android ->Android Device Monitor),可以看到程序已经处于等待调试状态,记录下端口号 8700,下一步要使用。
android studio导入smail代码
1.导入smail文件 选择红框选择的类型
2.将smail文件夹设置Generated Source Root
设置端口号
-
在菜单栏选择 “Run”标签,并在下拉选项中选择 "Edit configuration"选项。在新页面选择 “+”,并选择Remote。
-
将前边在 Android Device Monitor 看到的端口号填到Port中。单击OK保存
开始调试
在插入 invoke-static {}, Landroid/os/Debug;->waitForDebugger()V 代码附件添加几个断点点击,同时打开待调试的app,点击android studio 的调试按钮。
调试过程中app可能会处在白屏状态。
参考资料
《智能硬件安全》
apktool动态破解apk https://blog.csdn.net/xiangzhihong8/article/details/51483224
Android逆向之路—IDEA动态调试smali语言 https://blog.csdn.net/hanchaohao2012/article/details/63253725
我是IT小王,如果喜欢我的文章,可以扫码关注我的微信公众号