软件逆向——常见编译器和程序的特征

文章目录

  • BC6
    • 入口点特征
    • 连接器的版本
    • 区段的名称
  • Borland Delphi
    • 入口点特征
    • 连接器的版本
    • 区段的名称
  • VC6.0&易语言程序特征
    • 入口点特征
    • 连接器的版本
    • 区段的名称
  • (重点)VS程序特点
    • 链接器版本
    • 程序入口点
      • 第一个需要进去的CALL的对应关系。
      • 第二个需要进去的CALL的对应关系
      • 第三个需要进去的CALL的对应关系

BC6

入口点特征

程序入口处会有:66 62 3A 43 2B 2B 48 4F 4F 4B 90 E9
软件逆向——常见编译器和程序的特征_第1张图片
且第一个调用的call是GetModuleHandleA
在这里插入图片描述

连接器的版本

软件逆向——常见编译器和程序的特征_第2张图片

区段的名称

BC的区段表:具有idataedata
软件逆向——常见编译器和程序的特征_第3张图片


Borland Delphi

可以通过DarkDe4反汇编程序处理Delphi程序。
软件逆向——常见编译器和程序的特征_第4张图片

入口点特征

程序入口处会有:55 8B EC 83 C4 F0 B8 ?? ?? ?? ?? E8
问号为会被重定位的数据。
软件逆向——常见编译器和程序的特征_第5张图片

连接器的版本

版本:2.25
软件逆向——常见编译器和程序的特征_第6张图片

区段的名称

软件逆向——常见编译器和程序的特征_第7张图片


VC6.0&易语言程序特征

入口点特征

总结:vc6.0和易语言的第一个CALL都是GetVersion ,在OEP中VC6.0的RELEASE版本和易语言版本都是使用SUB esp,0x58来抬高栈帧,VC6.0的RELEASE版本则是使用ADD ESP,-0x5c来太高栈帧。
vc6.0 DEBUG版本:
软件逆向——常见编译器和程序的特征_第8张图片
vc6.0 release版本:
软件逆向——常见编译器和程序的特征_第9张图片
易语言程序:
软件逆向——常见编译器和程序的特征_第10张图片

连接器的版本

6.0
软件逆向——常见编译器和程序的特征_第11张图片

区段的名称

DEBUG版本会多几个。
软件逆向——常见编译器和程序的特征_第12张图片


(重点)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

程序入口点

第一个需要进去的CALL的对应关系。

软件逆向——常见编译器和程序的特征_第13张图片
软件逆向——常见编译器和程序的特征_第14张图片

第二个需要进去的CALL的对应关系

软件逆向——常见编译器和程序的特征_第15张图片
软件逆向——常见编译器和程序的特征_第16张图片
在其中的第一个CALL为 __security_init_cookie(),表示初始化一个cookie来检测是否存在栈溢出。
从第二个CALL__scrt_common_main_seh()中进去。

第三个需要进去的CALL的对应关系

在这里插入图片描述
软件逆向——常见编译器和程序的特征_第17张图片


你可能感兴趣的:(软件逆向——常见编译器和程序的特征)