首页
社区
课程
招聘
[旧帖] [求助]大家帮我看看在调用函数之前为什么总是需要调用这个语句? 0.00雪花
发表于: 2009-10-10 23:00 3444

[旧帖] [求助]大家帮我看看在调用函数之前为什么总是需要调用这个语句? 0.00雪花

2009-10-10 23:00
3444
调用函数之前
00413624  |. 8B4D F8        MOV ECX,DWORD PTR SS:[EBP-8]    ; 调用这个是起到什么作用
00413627  |. E8 0EE1FFFF    CALL Test.0041173A

进入函数之后
00413660  /> 55             PUSH EBP
00413661  |. 8BEC           MOV EBP,ESP
00413663  |. 81EC E4000000  SUB ESP,0E4
00413669  |. 53             PUSH EBX
0041366A  |. 56             PUSH ESI
0041366B  |. 57             PUSH EDI
0041366C  |. 51             PUSH ECX
0041366D  |. 8DBD 1CFFFFFF  LEA EDI,DWORD PTR SS:[EBP-E4]   ; 调用这个又是什么意思?

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 133
活跃值: (113)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
个人理解:
第一个程序栈顶指针+8,为调用预留空间,
第二个Sub esp,0e4  调用函数内部指向预留空间
2009-10-10 23:42
0
雪    币: 172
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
它起到的作用是什么哪?我把这两个指令全部换成nop,也可以正常运行的。
2009-10-11 19:53
0
雪    币: 251
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
那两句是准备this指针,可能ecx恰好一直是那个值,没被破坏,所以nop掉没出错。
2009-10-11 21:17
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
leftup真是热心人啊,再请教个问题啊

00454A10    55              push    ebp
00454A11    8BEC            mov     ebp, esp
00454A13    8B45 10         mov     eax, dword ptr [ebp+10]
00454A16    50              push    eax
00454A17    8B4D 0C         mov     ecx, dword ptr [ebp+C]
00454A1A    51              push    ecx
00454A1B    8B55 08         mov     edx, dword ptr [ebp+8]
00454A1E    52              push    edx
00454A1F    E8 3C100000     call    00455A60
00454A24    83C4 0C         add     esp, 0C
00454A27    5D              pop     ebp                              ; 前面没有通常的 mov esp,ebp
00454A28    C3              retn

我以为
[ebp+8] 通常是参数1
[ebp+C] 通常是参数2
那么[ebp+10]是什么呀,而且取的是个DWORD,
我看了下,
mov     eax, dword ptr [ebp+10] 执行后,eax 变成1了,这是怎么回事呢

mov     ecx, dword ptr [ebp+C] 执行后,ecx 变成 012395B8 了

mov     edx, dword ptr [ebp+8] 执行后,edx 变成 004D4880 了
2009-10-13 20:07
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
LZ不好意识呵,我再开一贴:
2009-10-13 20:22
0
雪    币: 251
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
被点名了,不敢当
[ebp+10]意思是[ebp+10H],也就是第3个参数
2009-10-13 20:24
0
雪    币: 76
活跃值: (27)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
楼主应该看看  通过堆栈传递函数参数和通过寄存器传递函数参数这2种传递参数的方式
2009-10-14 10:22
0
游客
登录 | 注册 方可回帖
返回
//