android binary for beginner
Android二进制调试入门
设备开启调试模式
magisk版本
1 | |
kernelSU版本
1 | |
开启成功后:
调试模式启动APP
adb shell am start -D -n 包名/主Activity
包名获取方法
方法(1):
打开APP,然后输入adb shell dumpsys window | findstr mCurrentFocus
方法(2):
jeb查看,由于(1)中Activity不一定是MainActivity,所以jeb直接查看更好
如图第二行package="com.excelliance.dualaid"即是包名
搜索MAIN即可找到MainActivity
然后我们输入命令:
adb shell am start -D -n com.excelliance.dualaid/com.excelliance.kxqp.ui.EmptyActivity
IDA PRO连接
(1)启动android_server
然后打开IDA
PRO安装目录,选择合适架构的android_server,adb push android_server64 /data/local/tmp
启动android_server64(必须使用su,否则IDA中只能看到很少的进程)
1 | |
然后输入adb forward tcp:23946 tcp:23946
(2)开启jdwp
查看调试进程pid,adb shell ps | findstr com.excelliance.dualaid
转发adb forward tcp:8700 jdwp:28865
(3)IDA PRO Debugger设置
打开IDA PRO
选择架构
这里我选择Android
Debugger options
打开Debugger中的Debugger options
设置在特定事件触发暂停
设置连接地址和端口
Attach
然后点击Debugger->Attach to process,并找到要调试的进程,双击连接
连接后:
此时就可以打断点了
使APP继续运行
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
我超,我写过一遍了吗已经,我的脑子完全坏掉了真是