都是自己编的VS2003代码格式欢迎大家指点改正
创始人
2024-06-12 21:50:48
0

 本人介绍下注入VS2003代码到PE,文件格式的Import Table(导入表,也有译为“引入表”)技术,其也被称为API重定向技术,这些都是通过平时的学习和实践中得出的结果。

让我们想像一下:如果我们可以通过操作导入表thunks将导入函数的入口点(thoroughfare)重定向到我们的指定的例程,用我们的例程过滤导入(消息)就成为可能。此外,我#t#们可以通过这个功能实现安排给我们适当的例程,VS2003代码专业的Portable Executable (PE) Protectors正是这么来做的,另外一些种类的rootkits使用这个方法通过一个特洛伊木马嵌入其恶意代码到受害者。在反向工程世界里,我们称之为:API重定向技术,然而我不准备通过源代码描述这个领域的所有观点,本文只是通过一个简单代码介绍一下这个技术的概况。我将描述这个源代码中没有的其他一些问题;我不能公开这些代码,原因是其关系到一些商业项目或可能会被怀有恶意者利用,然而我想本文可以被用来作为一个关于该主题的入门。

进入导入表

PE文件格式包括:MS-DOS header、NT headers、Sections headers和Section images(译注:正如很多技术读物上一样,其实header可以译为“头”,image可译为“映像”,但本文正文在不影响理解的前提下尽量保留原文术语,以免误解。)正如你在下图中所看到的。MS-DOS header是自DOS时代到Windows时代在所有微软可执行文件格式(executable file format)公有的。NT headers的思想来源于UNIX系统的Executable and Linkable Format (ELF),当然Portable Executable (PE)格式是Linux Executable and Linkable Format (ELF)的姐妹。PE 格式包括"PE" Signature、Common Object File Format (COFF) header、Portable Executable Optimal header和Section headers。

Portable Executable 文件格式结构

在Portable Executable Optional header,有一些数据目录(data directories)描述了当前进程在虚拟内存中主信息表(the principal information tables)的相对位置和大小。这些表可以有关于VS2003代码资源的信息、import(导入)、export(导出)、relocation(重定位)、Debug(调试)、thread local storage(线程本地存储)和COM运行时。没有导入表想要找到一个PE可执行文件是不可能的;

该表包含DLL的名称和Functions(函数)名称,这些是当程序意图通过它们的虚地址来请求(调用)它们时所必需的。在Console executable files(控制台可执行文件)中没有发现资源表(resource table);然而它是拥有Graphic User Interface (GUI)的Windows可执行文件的至关重要的部分。导出表(export table)在一个动态链接库想要导出它的函数到外界时是必需的,并且它也在OLE Active-X容器中。Dot NET虚拟机在没有COM+ runtime header下时不能被执行。正如你看到的VS2003代码,在PE格式中每个表都有特定的委派任务。

 Data Directories(数据目录)

  1. PIMAGE_NT_HEADERS pimage_nt_headers = ImageNtHeader(pImageBase);  
  2. DWORD it_voffset = pimage_nt_headers->OptionalHeader.  
  3. DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;  
  4. PIMAGE_DOS_HEADER pimage_dos_header = PIMAGE_DOS_HEADER(pImageBase);  
  5. PIMAGE_NT_HEADERS pimage_nt_headers = (PIMAGE_NT_HEADERS)  
  6. (pImageBase + pimage_dos_header->e_lfanew);  
  7. DWORD it_voffset = pimage_nt_headers->OptionalHeader.  
  8. DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...