前言
本文也是根据各位大神的文章参考总结,简化了,并不是很详细,后面有不足的地方再补充
adb 连接
adb devices
查看连接设备列表
List of devices attached
emulator-5554 device
下面 emulator-5554
就是设备的序列号, device
表示设备已连接并处于正常状态。如果设备未正确连接或出现其他问题,可能会显示其他状态,如 unauthorized
、offline
等,这通常需要进一步调试和解决。
adb push android_server /data/local/tmp
adb shell su
chmod 777 android_server
cd /data/local/tmp
./android_server
adb forward tcp:23946 tcp:23946
端口转发adb shell am start -D -n com.qiyi.xhookwrapper/com.qiyi.xhookwrapper.MainActivity
启动并挂起程序,需要程序的包名和类名
app运行时直接暂停,等待附加调试
- 启动
DDMS
,建立vm连接 - 启动
ida pro
附加进程
由于我们上面设置的就是23946
所以就直接用默认的就可以,没必要去修改
点击 debug options
勾选如下选项
点击OK开始附加
8.输入 jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
继续进程
将Android
根目录下的 default.prop
的 ro.debuggable
设置为1
(getprop
、setprop
),强制所有app都可以进行调试,这样就不用修改app并重新打包了,
- 雷电模拟器直接就是 1
- 夜神模拟器需要自己去用工具修改,关键修改还是临时的,重启失效,蛋疼。。。。。
- 修改工具 Android修改ro.debuggable 的四种方法 用的是这位大神的工具
注意
adb
和ddms
版本要一致,如果不一致,启动ddms
时,将会杀死刚刚adb shell
进程,导致端口断开- 将
Android
根目录下的default.prop
的ro.debuggable
设置为 1(getprop
、setprop
),强制所有app都可以进行调试,这样就不用修改app并重新打包了 -
ro.secure=1 是 adb 降权配置 , 默认为 1
-
ro.debuggable=0 可调式配置 , 默认为 0
IDA 快捷键
空格键:切换文本视图与图表视图
ESC:返回上一个操作地址
G:搜索地址和符号,在IDA调试页面的时候,我们可以使用S键快速跳转到指定的内存位置
N:对符号进行重命名
冒号:常规注释
分号:可重复注释
Alt+M:添加注释
Ctrl+M:添加标签
Ctrl+S: 查查看段的信息
F5 快捷键可以将arm指令转化成可读的C语言,帮助分析 需要时32
位的
Shift+F12 快捷键,速度打开so中所有的字符串内容窗口
Ctrl+S 快捷键,有两个用途,在正常打开so文件的IDA View视图的时候,可以查看so对应的Segement信息
代码数据切换
C 代码
D 数据
A ascii字符串
U 解析成未定义的内容
X 查看交叉应用
F5 查看伪代码
Alt+T 搜索文本
Alt+B 搜索十六进制