-
-
反汇编对应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
请大牛指点!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!