170519 逆向-局部变量

来源:互联网 发布:java里random() 编辑:程序博客网 时间:2024/06/09 20:41

1625-5 王子昂 总结《2017年5月19日》 【连续第230天总结】

A.加密与解密 数据结构

B.数据结构是计算机存储、组织数据的方式。逆向分析时,确定了数据结构后,算法就容易得到了。不过有些时候也会反过来,根据特定算法来判断数据结构。

局部变量:

局部变量的生命周期只在函数内部。

从汇编角度看,就是在堆栈中进行分配空间,而函数执行完毕后释放这些堆栈。

程序用"sub esp,8"为局部变量分配空间,用[esp-xxxx]寻址调用这些变量。而参数调用相对于ebp偏移量是正的,因此容易区分

当函数退出时,用esp,8指令平衡堆栈

另外,编译器可能会用push reg指令来取代sub esp,4指令以节省几个字节

局部变量的起始值是随机的,是其它函数执行后留在堆栈中的垃圾数据,因此需要对它进行初始化。

初始化局部变量有两种方法,一种是通过mov进行赋值,一种是直接push赋初值

除了堆栈占用2个寄存器外,编译器会利用剩下的6个通用寄存器尽可能有效地存放局部变量,这样可以产生最小的代码。当然,如果寄存器不够用,就将变量放入堆栈中

C.明日计划

数据结构,全局变量和数组


原创粉丝点击