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 子程序返回 用来平衡堆栈
分享到:
相关推荐
对于Win32汇编也是如此,从最简单的例子开始总是没错的,笔者建议读者跟随本书中从简到繁的例子,努力做到理解并灵活引用这些例子中的各种功能,正如“熟读唐诗三百首,不会写诗也会吟”,最后能够熟练地使用Win32...
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 ...
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 ...
OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...
OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...
OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...
OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...
OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 ...
OD反汇编引擎(带VC修改版和原版) 如题。主要文件就4个,非常适合学习,详细见源码。 OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology 文档。 ...
<<page 1>> page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 ... 比尔....这一天 微软公司正式推出了其下一代...