下面是一个函数入口处的部分反汇编代码截取:
当eip在.text:004079C0处,esp所指向的是ret addr.
当eip在.text:004079C1处,ebx 所指向的是esp-4.此时:
接下来的
esp实现了向下最近的8的倍数取证。比如12取整就是8,16取整就是16,18取整就是16.因为是针对栈结构地址取整,所以越是往小的方向越安全,因为对于栈结构来讲,越小的地址是没有用过的地址。所以后面的ebp,esp, ebp只能作为局部变量的索引,而对于参数的索引,用ebx比较合适。
总结:对于这个函数来讲,并不是按照套路ebp作为局部变量和函数参数的唯一参考.
.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
.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
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2023-12-6 08:23
被_THINCT编辑
,原因: