Android动态调试合集
文章目录
JEB动态调试smali
-
选中smali代码后,
Ctrl B
下断点 -
启动app
-
JEB附加进程
使用AndroidStudio配合Smalidea插件来动态调试smali
- Smalidea安装
- 获得反编译apk后的smali文件夹
方法一:
-
AS准备调试
-
开始调试
-
点击【运行】右侧的【调试】按钮,程序开始运行,运行到断点断下
-
左上角选择【停止】按钮左侧的【Attach Debugger to Android Process】附加按钮
-
以debug模式启动Activity(调试一启动就执行的方法)
adb shell am start -D -n [package_name]/[activity_name]
-
转发app运行端口到
8700
(可选)-
命令方式
adb forward tcp:8700 jdwp:[app_port]
-
使用ddms(monitor);位于
Sdk\tools\monitor.bat
(需下载)- 打开monitor,选中app包名所在进程,该进程的port后会出现
/8700
- 打开monitor,选中app包名所在进程,该进程的port后会出现
-
-
点击【附加】按钮选择设备下的进程,点击OK,即可开始调试
-
-
方法二:
可直接【运行】、【调试】、【附加】
IDA动态调试so
调试app一启动就执行的native函数
如JNI_OnLoad
、.init_proc
或.init_array
等
调试此类函数需要以debug模式启动app
-
启动
android_server
- 复制
IDA\dbgsrv\
下的对应的android_server
到手机的如/data/local/tmp/
目录下,并给予执行权限 - 在
su
下运行server启动监听
- 复制
-
开启端口转发(将设备与客户机间的23946端口连通
adb forward tcp:23946 tcp:23946
-
以debug模式启动Activity
adb shell am start -D -n [package_name]/[activity_name]
-
转发app运行端口到
8700
(可选,详见【步骤6】)-
命令方式
adb forward tcp:8700 jdwp:[app_port]
-
使用ddms(monitor);位于
Sdk\tools\monitor.bat
(需下载)- 打开monitor,选中app包名所在进程,该进程的port后会出现
/8700
- 打开monitor,选中app包名所在进程,该进程的port后会出现
-
-
IDA准备、附加进程
- IDA载入so,在native方法所需处下断点(可选)
- 配置调试器选项
- 附加进程
-
jdwp
使app开始运行,此处的8700
为【步骤4】中转发端口(若未执行步骤4,可使用ddms的最后一列数字)jdb -connect com.sun.jdi.socketAttach:hostname=localhost,port=8700
-
返回IDA,
-
寻找加载的so
-
当被调试so加载进来并且下好断点后,F9运行,即可断在
JNI_onLoad
开头处
-
-
完成,可以愉快的调试啦。记得根据需要取消【步骤5.2.3】,不然会一直断下
调试可以手动触发的函数
自然也可以按照上面那种方式,但是比较慢,因为app要加载
或者
- 【如上步骤1】
- 【如上步骤2】
- 手动启动app,或命令
adb shell am start -n [package_name]/[activity_name]
(即去掉-D
参数) - 【如上步骤5】,一般不需要【步骤5.2.3】(根据自己情况)
- 【步骤4】附加完成后,会弹出【same】窗口,之后点击运行、触发断点,即可开始调试
错误踩坑解决
Smalidea调试
【附加】时无设备或进程
没有设备进程供选择,点击菜单栏【File】的【Invalidate Caches / Restart…】来清理缓存并重新启动AS
此外
debuggable属性
app在清单中添加debuggable属性
在AndroidManifest.xml
的application
标签中添加android:debuggable="true"
修改设备的ro.debuggable=1
安装magisk后
magisk resetprop ro.debuggable 1
magisk resetprop ro.secure 0
magisk resetprop ro.adb.secure 0
重启设备后失效
magisk安装MagiskHide Props Config
模块
使用命令props
来修改(未测试)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。