输入表结构解析

本文详细介绍了PE文件的输入表结构,包括输入表的作用、结构、解析方法和实验步骤。通过解析输入表,理解PE文件如何调用其他DLL模块的函数,以及如何手工和编程实现输入表的解析。
摘要由CSDN通过智能技术生成

预备知识

一、相关实验

本实验要求已经认真学习和完成了《IMAGE_DOS_HEADER解析》、《PE头之IMAGE_FILE_HEADER解析》、《PE头之IMAGE_OPTIONAL_HEADER解析》、《节表头解析以及RVA与文件偏移地址的转换》。

二、输入表简介

可执行文件在调用来自其他DLL模块的函数的时候,称为输入,例如当EXE程序弹出一个消息框时,是通过调用User32.dll的MessageBoxA(或者MessageBoxW)来实现的,称该EXE程序输入了User32.dll的MessageBoxA(或者MessageBoxW)函数。不仅仅是EXE,PE文件(如DLL)都可以输入其他模块中的函数。

三、API版本

Win32 API是区分字符集的,对于有字符串参数的API而言,其通常存在两个版本:ANSI版本与Unicode版本,前者使用A后缀,后者使用W后缀。如MessageBox在MSDN中的声明如下:
在这里插入图片描述
其中参数lpText以及lpCaption都是字符串,其类型为LPCTSTR。事实上LPCTSTR是一个宏,根据编译器的设置选项的不同,其可以表示不同的含义(根据编译器的设置,LPCTSTR可以解释成LPCSTR或者LPCWSTR):
在这里插入图片描述
因此,编程时使用的MessageBox也是一个宏,根据编译字符集的设定,这个宏最终被转换为MessageBoxA或者MessageBoxW,这才是Win32提供的API,如下图所示:
在这里插入图片描述
如果一个PE文件中存在对MessageBox的调用,那么PE文件的输入表中存在的API将是MessageBoxA或者MessageBoxW。

实验目的

1)了解PE文件的输入表结构;
2)手工解析PE文件的输入表;
3)编程实现PE文件输入表的解析。

实验环境

在这里插入图片描述
服务器:Windows XP,IP地址:随机分配
辅助工具:C32Asm、LordPE、Python

实验步骤一

输入表结构分析。
从本实验开始将陆续对PE文件中数据目录表的重要表项进行介绍,本实验将介绍数据目录表的第二个成员——输入表。
PE文件中存在一个叫做输入表的结构,这个表保存了PE文件的所有输入信息,包括输入了哪个DLL文件的哪个函数、函数是以名称还是以序号的方式输入、被输入函数在内存中的地址等。数据目录表的第二个成员指向输入表,输入表是一个类型为IMAGE_IMPORT_DESCRIPTOR(简称IID)的数组,每一个DLL都对应有一个IID结构,由于没有字段指明这个IID数组的长度,所以通过在末尾添加一个空的IID结构来表示数组的结束,IID结构体在WinNT.h头文件中的定义如下所示:

<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值