关于自己反汇编的一个的一个DLL 中某个函数不是很了解,请高手过来指点一下
push ebp mov ebp,esp
mov eax,000010f0
call 1001105A ;这里面迷糊
push ebx
push esi
push edi
lea edi,dword ptr [ebp+FFFFEF10];其实就是开辟ebp-10f0 局部空间
mov ecx,0000043c
mov eax,cccccccc
repz
stosd ;初始化 局部空间 全部填充为 0xcc
========================================
但call 1001105A 里面的 是干嘛的? 是开辟局部空间的?
push ecx ;设置一个小的局部变量????
lea ecx,dword ptr [esp+04]; 指向返回地址的 堆栈??
sub ecx,eax ;ecx-10f0
sbb eax,eax
not eax
and ecx,eax
mov eax,esp
and eax,FFFFF000;这一步想干嘛??
L2: cmp ecx,eax
jb L1 ;这里我简化下用L1代替 下面都不是很明白 最后怎么平衡堆栈啊 esp 跟 eax 都对换了 ret还怎么回去?
mov eax,ecx
pop ecx
xchg eax,esp
mov eax,dword ptr [eax]
mov dword ptr [esp],eax
ret
L1: sub eax,00001000
test dword ptr [eax],eax
jmp L2