鱼C论坛

 找回密码
 立即注册
查看: 2903|回复: 3

[技术交流] 反汇编练习

[复制链接]
发表于 2011-11-7 19:47:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1:    #include <stdio.h>
2:    int main(int argc,char* argv[])                        ;参数的获取是ebp+12字节作为第二个参数,ebp+8为第一个参数,依次增加
                                                              ;最后ebp+4字节处是要返回的地址
3:    {
00401010 55                   push        ebp                ;把基址ebp入栈
00401011 8B EC                mov         ebp,esp            ;保存栈顶指针到ebp
00401013 83 EC 40             sub         esp,40h            ;ebp下移一个范围,等于在堆栈中放出一片新的空间用以保存变量
00401016 53                   push        ebx                ;入栈三个寄存器
00401017 56                   push        esi
00401018 57                   push        edi
00401019 8D 7D C0             lea         edi,[ebp-40h]       ;把保存局部变量的区域(从ebp-40h开始的区域)初始化成全部0cccccccch
                                                              ;occh实际是int 3指令的机器码,这是一个断点中断指令。因为局部变量不可能被执行
                                                                                                                          ;如果执行了,必然程序有错,这时发生中断来提示开发者
0040101C B9 10 00 00 00       mov         ecx,10h             ;stos是串存储指令,它的功能是将eax中的数据放入edi所指的地址中,同时edi会增加4(字节数)。
00401021 B8 CC CC CC CC       mov         eax,0CCCCCCCCh      ;rep使指令重复执行ecx中填写次数
00401026 F3 AB                rep stos    dword ptr [edi]      
4:        printf("Hello world!");
00401028 68 1C 20 42 00       push        offset string "Hello world!" (0042201c) ;将字符串“Hello world”入栈
0040102D E8 2E 00 00 00       call        printf (00401060)                        ;调用printf函数输出
00401032 83 C4 04             add         esp,4                                    ;esp加4
5:    }
00401035 5F                   pop         edi                   ;回复edi、esi、ebx、esp、ebp,最后返回
00401036 5E                   pop         esi
00401037 5B                   pop         ebx
00401038 83 C4 40             add         esp,40h
0040103B 3B EC                cmp         ebp,esp
0040103D E8 9E 00 00 00       call        __chkesp (004010e0)
00401042 8B E5                mov         esp,ebp               ;回复原来的ebp和esp,让上一个调用的函数正常使用
00401044 5D                   pop         ebp
00401045 C3                   ret

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-7 21:40:03 | 显示全部楼层
{:7_155:},,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-8 12:56:52 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-8 19:43:44 | 显示全部楼层
完全看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 10:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表