练习:各种语言程序.zip
一、识别程序的特征
0. 如何识别程序的特征
- 使用PE查看工具查看 链接器版本
- 使用PE查看工具查看 区段信息
- 查看目标程序的 二进制特征
1. BC++ 程序
- 程序的二进制特征
- BC++ 编写的程序,IAT函数的调用通常都是 E8 跳转表 + FF25 IAT 地址
EB 10 66 62 3A 43 2B 2B 48 4F 4F 4B 90
- 链接器版本
- 区段特征:
2. Delphi 程序
- 连接器版本:2.25
- 区段特征:
- 二进制特征:连续的 5 个 call 后面紧跟着一堆 0
55 8B EC 83 C4 F0 B8 ?? ?? ?? ?? E8 ?? ?? ?? ?? A1 ?? ?? ?? ?? 8B 00
3. VB6 程序
- 链接器版本
- 区段特征
- 二进制特征(VB程序一般直接使用工具进行反编译)
4. 易语言、VC6
二进制特征,两个的特征基本信息
55 8B EC 6A FF 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? 64 A1 00 00 00 00 50 64 89 25 00 00 00 00
连接器特征
- 区段特征
5. 汇编程序
- 汇编程序的链接器版本和区段特征都是不固定的,也没有明确的二进制特征。可以通过查看文件的大小来猜测是不是一个汇编程序。程序的 OEP 部分通常直接就是逻辑代码,也可以作为标识。
6. VS 程序的特征
- 不同版本的VS编写出来的程序,特征是不同的
- 通常 debug 版本的程序入口点可能存在 call + call,而 release 是 call + jmp | VS 版本 | 链接器版本 | | :—-: | :—-: | | VC 6.0 | 6.0 | | VC2003 | 7.0 / 7.1 | | VS2005 | 8.0 | | VS2008 | 9.0 | | VS2010 | 10.0 | | VS2012 | 11.0 | | VS2013 | 12.0 | | VS2015 | 14.0 | | VS2017 | 14.1 | | VS2019 | 14.2 |