5种常用程序入口特征
根据提供的信息,我们可以详细探讨五种常用编程语言的程序入口特征。这五种语言包括:C++(使用Microsoft Visual C++ 6.0)、Delphi(使用Borland Delphi 6.0-7.0)、VB(使用Microsoft Visual Basic 5.0/6.0)、BC++(使用Borland C++ 1999)以及E语言(一种与C语言类似的编程语言)。此外,还提到了汇编语言(Dasm)。下面我们将逐一分析这些语言的程序入口特征。 ### C++ (Microsoft Visual C++ 6.0) 在C++语言中,程序入口通常为`main`函数。对于Microsoft Visual C++ 6.0而言,其入口代码特征可以通过汇编代码来识别。例如: ``` 00405777: 55 push ebp 0040577D: 8bec mov ebp, esp 0040577F: 6aff push -1 00405781: 6830b24000 push EasyClea.0040b230 00405786: 6884704000 push EasyClea.00407084 0040578B: 64a100000000 mov eax, dword ptr fs:[0] 00405791: 50 push eax 00405792: 64892500000000 mov dword ptr fs:[0], esp 00405799: 83ec58 sub esp, 58 0040579C: 53 push ebx 0040579D: 56 push esi 0040579E: 57 push edi 0040579F: 8965e8 mov [local_6], esp 004057A2: ff15ecb04000 call dword ptr ds:[<&KERNEL32.GetVersion>; kernel32.GetVersion] ``` 这段汇编代码展示了一个典型的C++程序入口特征,其中包括设置栈帧、保留寄存器值、调用系统API等步骤。具体来说,首先通过`push ebp`保存旧的基指针,然后通过`mov ebp, esp`更新基指针指向当前栈顶。接下来的指令用于初始化栈空间,并调用`GetVersion`函数获取操作系统版本信息。 ### Delphi (Borland Delphi 6.0-7.0) Delphi是一种基于Pascal语言的开发工具,其程序入口同样为`main`函数。下面是使用Borland Delphi 6.0-7.0时的程序入口特征示例: ``` 004f2f68: 55 push ebp 004f2f69: 8bec mov ebp, esp 004f2f6b: 83c4f0 add esp, -10 004f2f6e: 53 push ebx 004f2f6f: b8102b4f00 mov eax, Unpacked.004f2b10 004f2f74: e8ef3bf1ff call Unpacked.00406b68 004f2f79: 8b1df4505000 mov ebx, dword ptr ds:[5050f4]; Unpacked.00506c14 ``` 从上述汇编代码可以看出,Delphi程序入口也包含了设置栈帧、调用函数等步骤。首先通过`push ebp`保存旧的基指针,并通过`mov ebp, esp`更新基指针。接着,`add esp, -10`用于分配栈空间。之后的指令用于调用函数和处理数据。 ### VB (Microsoft Visual Basic 5.0/6.0) Visual Basic是一种事件驱动的编程语言,主要用于Windows平台的应用开发。在Visual Basic中,程序的执行起点通常不是一个固定的函数,而是根据应用程序的形式和结构而变化。对于Windows Form应用,通常会在Form Load事件中启动程序的主要逻辑。 ### BC++ (Borland C++ 1999) Borland C++ 1999与Microsoft Visual C++类似,其程序入口也是`main`函数。程序入口的特征与上述C++示例相似,但具体的实现细节可能会有所不同。 ### E语言 E语言是一种类似于C语言的编程语言,因此其程序入口特征也与C语言非常接近,即`main`函数。 ### Dasm: 汇编 汇编语言是低级语言的一种,直接对应计算机硬件指令集。不同的处理器架构有不同的汇编语言格式。上述示例中的C++和Delphi程序入口特征均是以汇编代码形式展示的。在实际开发过程中,了解汇编语言有助于理解高级语言底层实现原理,尤其是在调试和优化程序时尤为重要。 不同编程语言的程序入口特征各有特点,但大部分遵循通用模式:设置栈帧、调用函数、处理数据等。了解这些特征有助于开发者更好地理解和调试程序。
要熟记,看到就要认得!
C++ (Microsoft Visual C++ 6.0)
0040577C >/$ 55 PUSH EBP (C的入口)
0040577D |. 8BEC MOV EBP,ESP
0040577F |. 6A FF PUSH -1
00405781 |. 68 30B24000 PUSH EasyClea.0040B230
00405786 |. 68 84704000 PUSH EasyClea.00407084 ; SE 句柄安装
0040578B |. 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
00405791 |. 50 PUSH EAX
00405792 |. 64:8925 00000>MOV DWORD PTR FS:[0],ESP
00405799 |. 83EC 58 SUB ESP,58
0040579C |. 53 PUSH EBX
0040579D |. 56 PUSH ESI
0040579E |. 57 PUSH EDI
0040579F |. 8965 E8 MOV [LOCAL.6],ESP
004057A2 |. FF15 ECB04000 CALL DWORD PTR DS:[<&KERNEL32.GetVersion>; kernel32.GetVersion
---------------------------------------------------------------------------------------------------------------------------------
Delphi (Borland Delphi 6.0 - 7.0)
004F2F68 > $ 55 PUSH EBP
004F2F69 . 8BEC MOV EBP,ESP
004F2F6B . 83C4 F0 ADD ESP,-10
004F2F6E . 53 PUSH EBX
004F2F6F . B8 102B4F00 MOV EAX,Unpacked.004F2B10
004F2F74 . E8 EF3BF1FF CALL Unpacked.00406B68
004F2F79 . 8B1D F4505000 MOV EBX,DWORD PTR DS:[5050F4] ; Unpacked.00506C14
004F2F81 . E8 56ACF8FF CALL Unpacked.0047DBDC
004F2F86 . 8B03 MOV EAX,DWORD PTR DS:[EBX]
004F2F88 . BA F42F4F00 MOV EDX,Unpacked.004F2FF4 ; ASCII " Hide Private File Pro"
004F2F8D . E8 32A8F8FF CALL Unpacked.0047D7C4
004F2F92 . 8B0D 904E5000 MOV ECX,DWORD PTR DS:[504E90] ; Unpacked.00509144
004F2F98 . 8B03 MOV EAX,DWORD PTR DS:[EBX]
004F2F9A . 8B15 70E44E00 MOV EDX,DWORD PTR DS:[4EE470] ; Unpacked.004EE4BC
004F2FA0 . E8 4FACF8FF CALL Unpacked.0047DBF4
004F2FA5 . 8B0D 3C525000 MOV ECX,DWORD PTR DS:[50523C] ; Unpacked.0050909C
004F2FAB . 8B03 MOV EAX,DWORD PTR DS:[EBX]
004F2FAD . 8B15 48B14E00 MOV EDX,DWORD PTR DS:[4EB148] ; Unpacked.004EB194
004F2FB3 . E8 3CACF8FF CALL Unpacked.0047DBF4
004F2FB8 . 8B0D 0C535000 MOV ECX,DWORD PTR DS:[50530C] ; Unpacked.005090A4
004F2FBE . 8B03 MOV EAX,DWORD PTR DS:[EBX]
004F2FC0 . 8B15 7CB34E00 MOV EDX,DWORD PTR DS:[4EB37C] ; Unpacked.004EB3C8
004F2FC6 . E8 29ACF8FF CALL Unpacked.0047DBF4
004F2FCB . 8B0D 30505000 MOV ECX,DWORD PTR DS:[505030] ; Unpacked.005090D4
004F2FD1 . 8B03 MOV EAX,DWORD PTR DS:[EBX]
004F2FD3 . 8B15 B0BF4E00 MOV EDX,DWORD PTR DS:[4EBFB0] ; Unpacked.004EBFFC
004F2FD9 . E8 16ACF8FF CALL Unpacked.0047DBF4
004F2FDE . 8B03 MOV EAX,DWORD PTR DS:[EBX]
004F2FE0 . E8 8FACF8FF CALL Unpacked.0047DC74
004F2FE5 . 5B POP EBX
004F2FE6 . E8 7115F1FF CALL Unpacked.0040455C
004F2FEB . 00FF ADD BH,BH
004F2FED FF DB FF
---------------------------------------------------------------------------------------------------------------------------------
VB (Microsoft Visual Basic 5.0 / 6.0)
剩余6页未读,继续阅读
- northwestanimal2013-10-23真心不错,帮助很大
- 粉丝: 3
- 资源: 24
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助