首页
社区
课程
招聘
反汇编对应VC代码的跟踪疑问
发表于: 2010-9-19 18:48 3507

反汇编对应VC代码的跟踪疑问

2010-9-19 18:48
3507
0196B33F    8B10            mov     edx, dword ptr [eax]
0196B341    53              push    ebx
0196B342    55              push    ebp
0196B343    8BC8            mov     ecx, eax

// jump call
0196B345    FF52 10         call    dword ptr [edx+10]                                        ; char *Fun(int)

0196B348    8BCF            mov     ecx, edi
0196B34A    83E1 1F         and     ecx, 1F
0196B34D    84DB            test    bl, bl
0196B34F    74 23           je      short 0196B374

跟踪某个函数到这段代码,现在有几个疑问,麻烦大家解答下!
1、通过源代码已经推断出call dword ptr[edx+10]原型应该为char *Fun(int),是否正确?
2、如果1正确,那么该函数应该返回一个char*类型,那么请问这个返回值是保存在edi还是eax中?
3、call之后的mov、and、test、je详细解释?

我的答案如下:有错误希望指正!
1、函数原型应该是正确的。
2、不知道返回值保存在那里。。。
3、如果返回一个char*,那么move、and、test、je的详细解释是:
把edi赋值给ecx;
然后跟31求与运算,对应的C代码会不会是这样:strcpy_s(a,b31)?
test bl bl,判断strcpy_s后的目标字符串是否为空?
如果为空,跳转到0x0196B374

请大牛指点!

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

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你怎么没有跟踪到这个call中呢
2010-9-20 11:20
0
游客
登录 | 注册 方可回帖
返回
//