0
点赞
收藏
分享

微信扫一扫

安卓逆向 -- IDA动态调试


一、前言

上节课已经分析出了关键函数,这里只要在关键函数下断,然后,动态调试就可以获取想要获取的数据

二、IDA动态调试步骤

1、将IDA目录dbgsrv文件夹下的android_server复制到真机

adb push ....as /data/local/tmp

2、执行android_server

adb shell进入手机操作模式

cd /data/local/tmp 进入到as所在的位置

chmod 777 as 给as可执行权限

./as 执行

3、转发端口

adb forward tcp:23946 tcp:23946

安卓逆向 -- IDA动态调试_安卓逆向

安卓逆向 -- IDA动态调试_寄存器_02

4、启动IDA附加进程

Debugger--attach--Remote ARM Linux/Android debugger

安卓逆向 -- IDA动态调试_安卓逆向_03

5、设置本地IP及上面设置的端口号23946,点击ok

安卓逆向 -- IDA动态调试_安卓逆向_04

6、选择要调试的进程名字

安卓逆向 -- IDA动态调试_寄存器_05

7、点击运行,让程序跑起来

安卓逆向 -- IDA动态调试_数据_06

8、从Modules模块,选择要分析的so文件及getSign函数

安卓逆向 -- IDA动态调试_寄存器_07

安卓逆向 -- IDA动态调试_动态调试_08

9、函数名都变成了unk开头的,所以需要结合静态分析,记住偏移地址

安卓逆向 -- IDA动态调试_安卓逆向_09

安卓逆向 -- IDA动态调试_动态调试_10

10、所以我们需要在B3556A56处下断,这就是我们分析出的函数地址

安卓逆向 -- IDA动态调试_寄存器_11

11、在数据窗口查看R0寄存器,右击数据窗口,选择Synchronize--R0

安卓逆向 -- IDA动态调试_安卓逆向_12

安卓逆向 -- IDA动态调试_IDA_13

0093CB6721DAF15D31CFBC9BBE3A2B79 1634609878317

0093CB6721DAF15D31CFBC9BBE3A2B79 1634621200870

12、查看R1寄存器2D,十进制是45,正好是上面取出来的位数

安卓逆向 -- IDA动态调试_IDA_14

13、查看数据窗口中R2的数据,按F8单步执行,里面的数值发生了变化

安卓逆向 -- IDA动态调试_寄存器_15

14、将上面的数据进行md5运算,正好是执行后得到的数据

45 E9 08 4E  5B D8 5B 94 B5 C5 98 13

3E 90 09 1F

安卓逆向 -- IDA动态调试_动态调试_16

寄存器

SP:栈寄存器

LR:保存函数返回地址

PC:当前运行到的地址

R0-R3:用来放函数的参数,执行完后,R0存放返回值

R4-R7:用来放函数的局部变量

禁止非法,后果自负

欢迎关注视频号:之乎者也吧

安卓逆向 -- IDA动态调试_IDA_17


举报

相关推荐

0 条评论