都是自己编的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 

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何更省钱? 近期特价热门硒鼓... 如今激光打印设备已经成为商务或企业的绝对主力办公设备,但采购者往往忽视了激光打印设备所用的耗材,相对...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...