首页
社区
课程
招聘
请问怎样的数据如何找?
发表于: 2010-6-6 01:42 3582

请问怎样的数据如何找?

2010-6-6 01:42
3582
005FE1B0  /$  55            push    ebp
005FE1B1  |.  8BEC          mov     ebp, esp
005FE1B3  |.  83EC 0C       sub     esp, 0C
005FE1B6  |.  894D F4       mov     dword ptr [ebp-C], ecx
005FE1B9  |.  8B45 08       mov     eax, dword ptr [ebp+8]
005FE1BC  |.  50            push    eax
005FE1BD  |.  8D4D F8       lea     ecx, dword ptr [ebp-8]           ;  想找ECX的值!

我想找最后一行里ECX的值,不太明白,lea取的是地址,ebp又是变来变去的。把ebp-8当作一个整体往上找,上面有没有了,只有返回上级,怎么找呢?

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

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 2513
活跃值: (615)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
1 ebp从第3行开始就是不会变的
2 ecx = ebp - 8
2010-6-6 08:18
0
雪    币: 183
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
ecx=ebp-8 这个我知道,但是去找ebp的值,这个值变化无常,就像一般不会有人去找esp的值一样吧,应该怎么找呢?

我现在就是想回溯出ecx的值!
2010-6-6 17:08
0
雪    币: 213
活跃值: (24)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最后一句等价
mov ecx,ebp
sub ecx,8
2010-6-12 20:31
0
雪    币: 2513
活跃值: (615)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
ecx就是这个函数里的第2个局部变量的地址
2010-6-13 08:40
0
雪    币: 1137
活跃值: (10)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
6
在当前call的栈空间,ebp指向基址,除开场景保护的代码,ebp的址是不会变化的,一般用他来取变量或参数。
ebp(+-)x 就指向的是地址,所以需要[]
在OD的命令中输入 d ecx或 d [ebp-8]就是地址指向的值..
2010-6-13 08:57
0
雪    币: 96
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
X86中堆栈向低地址增涨。

根据函数调用规则:

ebp-n  代表局部变量

ebp+n 代表函数参数(当然EAX,EBX,ECX,也可能函数参数)

最后3句应该是函数调用前的参数传递语句。

要调用的函数有一个指针型参数,指向当前函数的局部变量。

至于最后一句使用该种方法取址可能是IA20时,地址是20位的,寄存器是16位的。CX=BP-8得到得并不是地址,还缺了段选。(猜测)
2010-6-14 21:54
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
005FE1B0  /$  55            push    ebp                            ;
005FE1B1  |.  8BEC          mov     ebp, esp                   ;前两句是保护现场
005FE1B3  |.  83EC 0C       sub     esp, 0C                   ;分配函数所需要的空间
005FE1B6  |.  894D F4       mov     dword ptr [ebp-C], ecx;把ecx覆盖局部变量
005FE1B9  |.  8B45 08       mov     eax, dword ptr [ebp+8];拷贝第二个入参
005FE1BC  |.  50            push    eax                                   ;入参压栈
005FE1BD  |.  8D4D F8       lea     ecx, dword ptr [ebp-8]           ;  ECX为ebp-8 即一个局部变量的地址。

注释:
lea是一个多目运算符,含义如下:
示例1:
lea eax, dword ptr [eax * 5 + 3]
等价于
eax = eax * 5 + 3
示例2:
lea ebx, str
等价于
ebx = &str
2010-6-17 18:56
0
游客
登录 | 注册 方可回帖
返回
//