【软件逆向-ebp并不总是局部变量和参数的参考线】此文章归类为:软件逆向。
下面是一个函数入口处的部分反汇编代码截取:
1
2
3
4
5
6
7
8
9
10
|
.text:
004079C0
; __unwind {
/
/
__ehhandler$?update@SnakeGame@@UAEXABVTime@sf@@@Z
.text:
004079C0
push ebx
.text:
004079C1
mov ebx, esp
.text:
004079C3
sub esp,
8
.text:
004079C6
and
esp,
0FFFFFFF8h
.text:
004079C9
add esp,
4
.text:
004079CC
push ebp
.text:
004079CD
mov ebp, [ebx
+
4
] ; [ebx
+
4
]
-
> ret addr
.text:
004079D0
mov [esp
+
0Ch
+
var_8], ebp
.text:
004079D4
mov ebp, esp
|
当eip在.text:004079C0处,esp所指向的是ret addr.
当eip在.text:004079C1处,ebx 所指向的是esp-4.此时:
- ebx+4指向的是ret addr
- ebx+8 指向的是第一个参数
接下来的
1
2
3
4
|
.text:
004079C3
sub esp,
8
.text:
004079C6
and
esp,
0FFFFFFF8h
.text:
004079C9
add esp,
4
.text:
004079CC
push ebp
|
总结:对于这个函数来讲,并不是按照套路ebp作为局部变量和函数参数的唯一参考.
更多【软件逆向-ebp并不总是局部变量和参数的参考线】相关视频教程:www.yxfzedu.com