首页
社区
课程
招聘
mov ecx,dword ptr ss:[ebp-24C] 含义。送分的问题,快来啦
发表于: 2012-1-20 21:13 5144

mov ecx,dword ptr ss:[ebp-24C] 含义。送分的问题,快来啦

2012-1-20 21:13
5144
mov ecx,dword ptr ss:[ebp-24C]      
sub ecx,120                          

第一句是 [ebp 减 24c]获得的值放进ecx里
第二句是 ecx 减 120 获得的值放进ecx里

求助的问题如下:

ebp 是如何获得的,可以直接在远程调用的汇编代码开头这样写吗?

push ebp
mov ebp,esp

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
ebp 是  栈底
esp 是  栈顶

PUSH EBP 是保存栈底
mov ebp,esp 是把栈顶给栈底成为新栈底 下一句应该是 sub esp,xxx 提升栈顶
2012-1-20 22:32
0
雪    币: 227
活跃值: (66)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
通常MSAPI特征都比较一致,框架如下:
kernel32!GetProcAddress:
7c80ae40 8bff            mov     edi,edi   ;无意义,用于HotPatch
7c80ae42 55              push    ebp    ;保存原始ebp的内容
7c80ae43 8bec            mov     ebp,esp    ;另ebp指向当前栈顶
……


执行完上述3条指令后,才开始函数内部的操作。接下来通常会为局部变量开辟栈空间
比如:
sub esp, 60h   ;开辟一段大小为0x60的内存


esp即随之变化,但ebp不变,此时:
ebp - 0x60 == esp + 0x00
ebp - 0x5C == esp + 0x04
……
ebp - 0x04 == esp + 0x5C
ebp - 0x00 == esp + 0x60
用ebp或esp都可以访问局部变量
参数的话通常用ebp来寻址:
ebp + 0x08 == Param1
ebp + 0x0C == Param2
……(仅讨论WINAPI __stdcall)

当前栈空间大体布局如下:
+0xXX参数n
……
+0x0C参数2
+0x08参数1
+0x04返回地址(某一时刻的EIP)
+0x00原始EBP(push ebp存进来的)
=====当前EBP(曾经这里是栈顶,然后mov ebp,esp来着!)=====
-0x04局部变量1
-0x08局部变量2
……
-0xXX局部变量n
=====当前ESP(传说中的栈顶)=====

希望对你有帮助
2012-1-21 13:50
0
游客
登录 | 注册 方可回帖
返回
//