-
-
[求助]ida 中函数调用
-
发表于:
2007-4-25 21:19
10061
-
最近在做一个usb <-> serial 驱动的逆向,在其所用的一个dll 中,有这样两个函数调用:
1:
lea ecx, [esi+0Ch]; // esi 为一个新分配的有关器件驱动信息的数据结构的指针
push ecx;
push ebx; // ebx 也为有关器件驱动信息的数据结构的指针,但为已存在的
call loc_10005E90 ;
。。。。。。
loc_10005E90:
push ebp
mov ebp, esp
push edi
push esi
mov esi, [ebp+0Ch]
。。。。。。。。。。。。
2:
mov edx, [ecx]
mov eax, [edx+10h]
push ebx
call eax
而一般函数调用大部分都为call sub_xxxxx
为什么函数调用用这种形式呢?有什么特殊用途忙?在何种情况下用这种形式,是编译器自动生成的,还是自己指定的呀
还有想弱弱的问一句:是不是在所有的windows函数调用中,当从函数返回后当前寄存器的内容都不改变(除了EAX)
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课