憔悴心只为你 发表于 2011-11-7 19:47:55

反汇编练习

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开始的区域)初始化成全部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       
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

cqy55555 发表于 2011-11-7 21:40:03

{:7_155:},,,

cyht33 发表于 2011-11-8 12:56:52

{:5_107:}学习学习

api 发表于 2011-11-8 19:43:44

完全看不懂
页: [1]
查看完整版本: 反汇编练习