`
sjk2013
  • 浏览: 2182376 次
文章分类
社区版块
存档分类
最新评论

简单win32反汇编学习

 
阅读更多

windows代码如下:

#include<windows.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
MessageBox(NULL,TEXT("你好,编程世界"),TEXT("你好"),0x00000000);
return 0;
}

很简单的程序,运行后弹出一个窗口,显示“你好,编程世界”,标题为"你好"

用OD反汇编如下:

00401005 /$ E9 06000000   jmp     WinMain        //主函数入口点
0040100A |   CC            int3 //单步中断 用来调试用的
0040100B |   CC            int3
0040100C |   CC            int3
0040100D |   CC            int3
0040100E |   CC            int3
0040100F |   CC            int3
00401010 >|> 55            push    ebp       //将ebp保存 压栈,应为下面会用到ebp
00401011 |. 8BEC          mov     ebp, esp   //令ebp指向栈顶
00401013 |. 83EC 40       sub     esp, 40   //给栈中空出一片空间用来保存变量
00401016 |. 53            push    ebx     
00401017 |. 56            push    esi
00401018 |. 57            push    edi      //将ebx,esi,edi压栈,主要是怕后面会用到,或者影响这3个寄存器的数据
00401019 |. 8D7D C0       lea     edi, dword ptr [ebp-40] //传送ebp-40的地址给edi,腾出空间放变量
0040101C |. B9 10000000   mov     ecx, 10
00401021 |. B8 CCCCCCCC   mov     eax, CCCCCCCC
00401026 |. F3:AB         rep     stos dword ptr es:[edi]  //以上3条指令 为初始化变量空间为CC,也就是int 3中断
00401028 |. 8BF4          mov     esi, esp     //令esi和esp相等
0040102A |. 6A 00         push    0                                ; //Style = MB_OK|MB_APPLMODAL ,messagebox的第4个参数压栈
0040102C |. 68 30004200   push    00420030                         ; //Title = "你好" messagebox的第3个参数压栈

00401031 |. 68 1C004200   push    0042001C                         ; //Text = "你好?,AC,"编程世",BD,"? messagebox的第2个参数压栈

00401036 |. 6A 00         push    0                                ; //hOwner = NULL   messagebox的第1个参数压栈

00401038 |. FF15 94524200 call    dword ptr [<&USER32.MessageBoxA>>; //MessageBoxA
0040103E |. 3BF4          cmp     esi, esp       //检查esi 和esp是否相等,如果有异常则不等
00401040 |. E8 3B000000   call    _chkesp    //检查esp
00401045 |. 33C0          xor     eax, eax        //eax清零
00401047 |. 5F            pop     edi
00401048 |. 5E            pop     esi
00401049 |. 5B            pop     ebx                   //恢复寄存器相关值
0040104A |. 83C4 40       add     esp, 40      
0040104D |. 3BEC          cmp     ebp, esp      //同样检查esp是否恢复正常
0040104F |. E8 2C000000   call    _chkesp    //检测esp,debug模式中才有的
00401054 |. 8BE5          mov     esp, ebp      //栈顶指针给esp
00401056 |. 5D            pop     ebp       //恢复ebp寄存器
00401057 \. C2 1000       retn    10       //esp+16 子程序返回 用来平衡堆栈


分享到:
评论

相关推荐

    windows环境下32位汇编语言程序设计

    对于Win32汇编也是如此,从最简单的例子开始总是没错的,笔者建议读者跟随本书中从简到繁的例子,努力做到理解并灵活引用这些例子中的各种功能,正如“熟读唐诗三百首,不会写诗也会吟”,最后能够熟练地使用Win32...

    软件破解入门教程.txt

    Win32 函数 Windows消息 Windows资源 win98注册表 win2000注册表 注册表工具 第6章 软件保护技术 常见保护技巧 反跟踪技术 加密算法 软件保护建议 第7章 VB程序 解释语言介绍 动态跟踪分析 ...

    【软件加密_技术内幕】

    [Trial version] Win32调试API学习心得(一).htm [Trial version] Win32调试API学习心得(二).htm [Trial version] win32调试API学习心得(三).htm [Trial version] 用调试函数跟踪API.htm [Trial version] 3.2 ...

    网络渗透技术

    1.4.1 强大的反汇编功能 1.4.2 方便的代码阅读功能 1.4.3 常用默认快捷键 第2章 缓冲区溢出利用技术 2.1 缓冲区溢出历史 2.2 Linux x86平台缓冲区溢出利用技术 2.2.1 Linux的内存管理 2.2.2 缓冲区溢出的流程 2.2.3 ...

    Reversing:逆向工程揭密

    1.6.2 反汇编器 15 1.6.3 调试器 15 1.6.4 反编译器 16 1.7 逆向合法吗? 17 1.7.1 互操作性 17 1.7.2 竞争 18 1.7.3 版权法 19 1.7.4 商业机密和专利权 20 1.7.5 美国数字千禧版权法 20 1.7.6 DMCA案例 22 1.7.7 ...

    vc++ 应用源码包_6

    OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...

    vc++ 应用源码包_5

    OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...

    vc++ 应用源码包_1

    OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...

    vc++ 应用源码包_2

    OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...

    vc++ 应用源码包_3

    OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...

    vc++ 开发实例源码包

    OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology 文档。 ...

    C#微软培训资料

    &lt;&lt;page 1&gt;&gt; page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 ... 比尔....这一天 微软公司正式推出了其下一代...

Global site tag (gtag.js) - Google Analytics