首页
社区
课程
招聘
IDA如何用结构标识偏移
发表于: 2015-5-12 11:06 4496

IDA如何用结构标识偏移

2015-5-12 11:06
4496
LDR R4, =SMTCNSta
MOV R5, R1
LDRB R3, [R4,#0x448]


问题是这样的,有3个结构

SMTCNSta  长度 6
pfsm 长度0x440
SMTCNResult 长度 0x610

现在 [R4,0x448]已经偏移到 SMTCNResult里面去了,我想如何在IDA中把[R4,0x448]改成SMTCNResult.xxx 这样的,

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
分析JNI的时候遇到相同的问题,是通过IDA的菜单项 File->Load file -> Parse c header file,选择jni.h头文件,加载成功以后,点击主界面的Structures选项卡,按insert键打开 'create structure/union‘对话框,点击add standard structure按钮,在打开的结构体选择对话框中选择添加相应的结构。回到反汇编代码界面,也就是上面你贴的代码界面,在你想要解析的偏移值指令想点击右键,就可以看到结果了。
所以觉得你只要把你的结构体定义头文件导入,按照上面的步骤应该也是可以的 :).

ps.上面的jni结构导入步骤可以在《android软件安全和逆向分析》7.6.2节看到.
2015-5-12 11:57
0
雪    币: 2458
活跃值: (3318)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
哥们,你的方法我知道,可以直接去struct界面,自己手工添加结构,然后对偏移量按alt+q来选择结构。

但是我这里R4并不是SMTCN_RESULT的基址,而是SMTCNSta的,但是 R4+448却到SMTCN_RESULT里面去了,这个时候,系统貌似就没法理解这个结构也替换不了了

我并不是要把 [xxxx, xxxx+6]这块地址理解成某个结构,这个工作我已经做了,我是想把系统里所有对[xxx, xxx+6]地址的访问都转换成某个结构
2015-5-12 14:54
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=baikaishiu;1370323]问题是这样的,有3个结构

SMTCNSta  长度 6
pfsm 长度0x440
SMTCNResult 长度 0x610

现在 [R4,0x448]已经偏移到 SMTCNResult里面去了,我想如何在IDA中把[R4,0x448]改成SMTCNResult.xxx 这样的,[/QUOTE]

就是说R4指向一个结构体,这个结构体有包含三个结构体.长度分别是6,0x440,0x610是吗

如果把这几个结构体导入系统还是不识别0x448这样的访问,那你就把几个结构体的定义合并起来试试,对应原结构体的成员你加个前缀分辨下,勉强可以阅读达到你要的效果
2015-5-12 15:42
0
雪    币: 2458
活跃值: (3318)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
R4指向一个结构体,然后另外2个结构体在他的物理位置后面,并不包含。

R4+0x448指向的是第3个结构体的数据

不过你的方法挺不错,在弄一个结构体,里面包含这3个结构,分给你了,谢谢。
2015-5-12 16:02
0
游客
登录 | 注册 方可回帖
返回
//