能力值:
( LV2,RANK:10 )
|
-
-
2 楼
看[esp]........
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
[QUOTE=loqich;1199570]看[esp]........[/QUOTE]
能说一下具体是咋看吗??我对比了一下OD,EIP里的数据根返回地值或是调用地址没有什么关系啊!!
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
call 指令会压栈它的下一条指令~
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
不是EIP是ESP 栈顶指针寄存器
调用到该函数一般是用call
而call的时候 会将返回地址入栈 也就是说 call相当于
push backAdd
jmp ××××
所以自己的函数的开头 会执行
push ebp
mov ebp,esp
以平衡栈
这时候。ebp就等于之前的esp
而[esp + 4]
(esp栈顶 因为push ebp 所以esp指向的地址是保存的ebp 所以+4指向返回地址 在自己函数中获取自己返回地址 就是ebp + 4)
也就是返回地址了
因为开头有执行push ebp 所以[ebp]的值其实是原本的ebp的值。需要+4以获取上一条记录
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
如果是长跳转,这样的方法好象不行。但多数情况下还是可以的!
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
谢谢大家的讲解!!!!
|
|
|