+ -
当前位置:首页 → 问答吧 → 反汇编遇到疑问

反汇编遇到疑问

时间:2010-12-13

来源:互联网

我是用IDA5.0进行反汇编的。在反汇编某一函数时,在开头都有一串如下的赋值:

Assembly code
var_59= word ptr -59h
var_57= word ptr -57h
var_C= dword ptr -0Ch
var_4= dword ptr -4
arg_0= byte ptr  8
arg_3= byte ptr  0Bh


这些一般来说都是与保存了栈顶指针的寄存器配合来访问堆栈,比如Assembly code
movzx   eax, [ebp+arg_0]


arg_开头的,一般都是参数。
而var_开头的,我都理解成了此函数用到的一些局部变量。
变量在使用之前都应该先初始化吧?如果不进行初始化,必然会导致最终结果无法预料,但是找遍了整个函数中,之前的代码,没有一处对那个空间进行初始化的地方。
请问,这是怎么回事哦?
难道是把那个堆栈空间当成了全局对象,并在程序开头初始化?那岂不是很危险?并且,我反汇编的是一个DLL!

作者: PDD123   发布时间: 2010-12-13

这个与编译器有关,局部变量不一定预先初始化,可能需要程序中自己初始化。

作者: DelphiGuy   发布时间: 2010-12-13

初始化的问题ukjg

作者: abgood   发布时间: 2010-12-13

引用 1 楼 delphiguy 的回复:
这个与编译器有关,局部变量不一定预先初始化,可能需要程序中自己初始化。


我说的初始化的意思就是赋一个确定的值,或者经过计算可以确定的值。

我遇到的问题就是无法确定那个空间里面是什么值,似乎完全依赖以前遗留的状态,不可确定。

作者: PDD123   发布时间: 2010-12-13