C语言最简main函数的反汇编代码解析.docx

C语言最简main函数的反汇编代码解析.docx

ID:55131163

大小:17.94 KB

页数:3页

时间:2020-04-28

C语言最简main函数的反汇编代码解析.docx_第1页
C语言最简main函数的反汇编代码解析.docx_第2页
C语言最简main函数的反汇编代码解析.docx_第3页
资源描述:

《C语言最简main函数的反汇编代码解析.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、个人收集整理-ZQC语言最简main函数的反汇编代码解析目前我们写的最简单的函数如下:代码: "" ( , * []){   ;}利用编译器将运行时程序反汇编,结果如下:代码: ( , * []){                                                                                     ,[]                                     :[]     ;             }                        

2、                                           看起来汇编很头疼吧,那么让我们来茅塞顿开吧。首先了解一下以前几个未知半懂的汇编指令的含义:代码:                 :把一个位操作数压入栈中,这个操作导致被减。 被用来保存这个函数执行前的的值,执行完毕后用恢复。同时,调用此函数的上层函数也用做同样的事情。所以先把压入堆栈,返回之前弹出,避免被我们改动。b5E2R。b5E2R。代码:         3/3个人收集整理-ZQ 常用来代替 。清零操作。在中,函数返回值都是放在中然后返回,外部

3、从中得到返回值。这就代表 操作。代码:         ,[]取得第二个参数代表的地址放入第一个参数代表的寄存器中。代码:                             :[]  是串存储指令,它的功能是将中的数据放入所指的地址中,同时会增加个字节。使指令重复执行中填写的次数。由于的寄存器有限,而且操作寄存器会影响标志值,作用是压栈,是退栈。即保存寄存器标志的值和寄存器本身的值,以便在函数调用完毕后恢复原有的标志值。这也是为什么我们见到在调用某个函数或者运行一个程序时,入口总是一堆寄存器的东东,也就是这个原因。通过上面的基础知

4、识,我们来看看函数的反汇编解释:p1Ean。p1Ean。代码: ( , * []){            ;保存,返回之前弹出,避免被我们改动。操作使减小,不变           ; 被用来保存这个函数执行前的的值,执行完毕后用恢复;原值已经被压栈(位于栈顶),而新的又恰恰指向栈顶;此时寄存器就已经处于一个非常重要的地位,该寄存器中存储着栈中的一个地址(原入栈后的栈顶);从该地址为基准,向上(栈底方向)能获取返回地址、参数值(假如中有参数,“获取参数值”会比较容易理解;向下(栈顶方向)能获取函数局部变量值,而该地址处又存储着上一层函

5、数调用时的值            ;把往上移动一个范围,等于在栈中开辟一片空间存储函数的局部变量;由于冯诺依曼机是小端模式,所以操作可以理解为将栈顶减去,实际上是为栈增加空间                                    ;保存三个寄存器的值,待结束恢复,原来的值被破坏有可能引起系统崩溃           ,[]  ;把加载到中,目的是保存局部变量的区域             3/3个人收集整理-ZQ                      :[]  ;从开始的局部变量空间区域初始化成全部(也就是 中断指

6、令的机器码);局部变量不可能被执行,执行了就会出错。这样发生意外时执行堆栈里面的内容会引发调试中断提示开发者   ;           ; 返回值将放在返回(这就是很多软件给秒杀爆破的原因,因为的返回值是可以改的) }                                       ; 恢复原来寄存器的值,怎么“吃”进去,怎么“吐”出来            ;恢复栈顶指针           ;恢复,也就是恢复调用函数之前各个寄存器的状态   ;将返回地址存入,退出主函数通过以上分析,大家应该对函数的反汇编解析有一定的概

7、念了吧。返回去看文章开头的反汇编代码,心里肯定比刚开始看的感觉舒服多了。在实战中,我们的汇编代码基本也就是这个套路,当然细节还得另外分析。有什么错误,敬请大伙指正,共同学习。参考资料:DXDiT。DXDiT。3/3

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。