android binary for beginner

Android二进制调试入门

设备开启调试模式

magisk版本

1
2
3
4
adb shell #adb进入命令行模式
su #切换至超级用户
magisk resetprop ro.debuggable 1
stop;start; #一定要通过该方式重启

kernelSU版本

1
2
3
4
adb shell #adb进入命令行模式
su #切换至超级用户
resetprop ro.debuggable 1
stop;start; #一定要通过该方式重启

开启成功后:

image-20240518133943259

调试模式启动APP

adb shell am start -D -n 包名/主Activity

包名获取方法

方法(1):

打开APP,然后输入adb shell dumpsys window | findstr mCurrentFocus

image-20240518134528861

方法(2):

jeb查看,由于(1)中Activity不一定是MainActivity,所以jeb直接查看更好

如图第二行package="com.excelliance.dualaid"即是包名

image-20240518134946586

搜索MAIN即可找到MainActivity

image-20240518135436445

然后我们输入命令:

adb shell am start -D -n com.excelliance.dualaid/com.excelliance.kxqp.ui.EmptyActivity

image-20240518140032195

IDA PRO连接

(1)启动android_server

然后打开IDA PRO安装目录,选择合适架构的android_serveradb push android_server64 /data/local/tmp

image-20240518140233765

启动android_server64(必须使用su,否则IDA中只能看到很少的进程)

1
2
3
4
PS C:\Users\showfaker> adb shell
panther:/ $ cd data/local/tmp
panther:/data/local/tmp $ su
panther:/data/local/tmp # ./android_server64
image-20240518140557198

然后输入adb forward tcp:23946 tcp:23946

image-20240518142308397

(2)开启jdwp

查看调试进程pid,adb shell ps | findstr com.excelliance.dualaid

image-20240518140855224

转发adb forward tcp:8700 jdwp:28865

(3)IDA PRO Debugger设置

打开IDA PRO

image-20240518141128722

选择架构

这里我选择Android

image-20240518141617686

Debugger options

打开Debugger中的Debugger options

image-20240518141210551
设置在特定事件触发暂停
image-20240518141502998
设置连接地址和端口
image-20240518142055392
Attach

然后点击Debugger->Attach to process,并找到要调试的进程,双击连接

image-20240518142500633

连接后:

image-20240518142628400

此时就可以打断点了

使APP继续运行

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700

我超,我写过一遍了吗已经,我的脑子完全坏掉了真是


android binary for beginner
http://showfaker.top/2024/05/18/android-binary-for-beginner/
作者
ShowFaker
发布于
2024年5月18日
许可协议