导语
逆向基本上离不开ida,今天讲下如何使用ida来调试app
app运行时调试
第一种方法就是在app运行时,使用ida的Attach
命令通过pid来附加上去
安装server
- 找到ida的安装目录,找到
dbgsrv
目录
- 将
android_server64
和android_server32
push到手机上
执行以下命令:
adb push android_server64 /data/local/tmp && adb push android_server /data/local/tmp
推送到手机
运行server
adb shell
进入手机环境su
获取root权限或者执行adb root
这样一开始就有root权限cd /data/local/tmp
切换到tmp目录chmod 777 android_server64 && chmod 777 android_server
修改执行权限./android_server64
运行server- 得到一个端口
23946
端口转发
adb forward tcp:23946 tcp:23946
运行完后需要新开一个终端进行端口转发
ida附加进程
- ida左上角导航栏Debugger->Attach->Remote ARMLinux/Android debugger
- 点击ok即可
command(curl) + F
搜索目标进程的包名
- 运行完后点击这里即可恢复进程
app启动时调试
我们都知道,使用注入或者Hook的时候时机很关键,如果时机不正确,做再多也是白费,这时候需要在应用启动的第一时间附加上去
临时获取全局可调试权限
adb shell
进入手机环境su
获取root权限或者执行adb root
这样一开始就有root权限magisk resetprop ro.debuggable 1
设置全局可调,重启失效stop;start;
,以此种方式重启
以调试模式启动app
图形化
- 在手机的开发者选项中选择app
- 这种方法只适用于带有debug标志的应用
adb命令
- 获取app的包名和启动类
- 一般都在
AndroidManifest.xml
中的android.intent.category.LAUNCHER
上面
adb shell am start -D -n com.XXX.XXX/启动MainActivity
- 根据图中的,即为:
adb shell am start -D -n com.aster.zhbj/com.aster.comic.app.view.WelcomeActivity
- 这时候会停在这个界面
- 还需要启动Java层的调试器
- 首先使用ida附加进程得到PID
ida附加完毕后,记得放行,不然后面的命令无法执行
- 打开
monitor
,mac如果打开白屏,需要下载旧版本的jdk1.8并设置相应的环境变量 - 检查端口
jdb -connect com.sun.jdi.SocketAttach:127.0.0.1,port=8656# 具体的端口看monitor
jdb命令
评论区