首页
社区
课程
招聘
[求助]IDA 代碼產生返回的值
发表于: 2016-1-22 20:26 4554

[求助]IDA 代碼產生返回的值

2016-1-22 20:26
4554
unknown_libname_1672 proc near
arg_0           = dword ptr  4
                mov     eax, [esp+arg_0]
                mov     eax, [eax+18h]
               retn
unknown_libname_1672 endp

IDA 按F5得代碼,得以下C碼

int __cdecl unknown_libname_1672(int a1)
{
  return *(a1 + 24);
}

v24 = unknown_libname_1672(a1);

其中  "return *(a1 + 24);"的"*(a1 + 24)"是啥意思?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 99
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
简单来说就是返回  a1 + 24 位置的值。
如果没有*()运算,就是单纯返回 a1 +24
2016-1-22 20:50
0
雪    币: 123
活跃值: (144)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
这个原型实际上应该是
int __cdecl unknown_libname_1672(unknown_struct *struct_ptr)
{
  return struct_ptr->element_6;//第6个元素(假设unknown_struct前面都是4个字节一个的成员)
}
但是ida因为你没有结构信息,它就直接逆向出对结构的成员寻址的本质-------从某个地址偏移一定数量,来寻址某个成员。

如果你继续逆向分析、跟踪,就能够找到谁调用了这个函数,从调用链一直往上分析,就能找到传到这个函数的参数,然后就能分析它的结构了
2016-1-23 09:17
0
雪    币: 1176
活跃值: (1264)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
4
楼上俩位已经说的很清楚了。
2016-1-23 10:14
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
謝謝你
2016-1-23 11:08
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
謝謝你的解答,你能給我一些 ida 設定struct的相關資訊嗎?謝謝你.
2016-1-23 11:13
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
Tks.
2016-1-23 11:16
0
雪    币: 123
活跃值: (144)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
直接写个定义了结构体的头文件然后把这个头文件引入到ida即可~
2016-1-25 16:15
0
游客
登录 | 注册 方可回帖
返回
//