能力值:
( LV2,RANK:10 )
|
-
-
2 楼
sub_804c044 proc near
mov eax,ebp
retn
sub_804c044 endp
这个函数的功能就是取栈底
你的这部分代码极有可能是C++的内联汇编
因为函数参数的传递和局部变量一般是使用堆栈的,所以在调用一个函数时,一般都会用到堆栈来存储数据,但都会把之前的堆栈信息保存,调用完函数则还原
mov [eax+1ch],esp 这句就是把堆栈指针给保存起来了
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
这段函数
mov edx,[eax+1ch]
mov [eax+1ch],esp
mov esp,edx
mov ebp,[eax+20h]
实际上是将[eax+1]和esp做了交换,还把ebp的值也给改变了,我实在看不懂,我再把整个函数贴出来,高手帮忙再分析一下
sub_804c054 proc near
push ebp
push ebx
push esi
push edi
mov eax,ds:dword_99A9e20
mov edx,[eax+1ch]
mov [eax+1ch],esp
mov esp,edx
mov ebp,[eax+20h]
mov ebx,[eax+24h]
mov esi,[eax+28h]
mov edi,[eax+2ch]
retn
sub_804c054 endp
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
保存寄存器,载入另一组寄存器的值,顺便切换堆栈
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
这样切换堆栈,堆栈还能平衡吗?为什么不正常用函数调用切换
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
堆栈不平衡也不要紧,要紧的是你知道自己操作堆栈在做什么
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
不是我操作呀,是我看的代码,栈不平衡,程序还能正常运行吗
|
|
|