第七课 认识导入表

 

认识导入表(_IMAGE_IMPORT_DESCRIPTOR)结构。

简单的说一个程序不可能完全包含整个系统中的代码,当我们要实现一些功能的时候,系统的API已经包含了这个功能,那么我们就可以将系统的这个dll加载到我们程序的内存内存空间中,然后去执行他就可以了。比如一个简单的窗口中弹出对话框如果要我们自己写全部代码,我想没有几周是不可能实现的,因为他涉及到显卡的驱动调用等相关内容。而Windows在编写过程中就为程序员预留了一些接口API,我们只需要按照规定调用这些预留的接口就可以实现其功能了。那么程序要用的功能在那个dll中呢?调用的是哪个函数呢?在PE文件内,有一组数据结构,他们分别对应着每个被输入的DLL。每一个这样的结构都给出了被输入的DLL的名称并指向一组函数指针。这组函数指针被称为输入地址表(Import Address Table)。

重要成员如下

成员1:包含指向输入名称表简称INT的RVA,INT是一个IMAGE_THUNK_DATA结构数组,数组中的每一个IMAGE_THUNK_DATA结构指向IMAGE_IMPORT_BY_NAME结构,数组最后一个内容是内容为0的IMAGE_THUNK_DATA。

      成员2:一个32位的时间标志,可以忽略。

      成员3:这个是第一个被转向的API的索引,一般为0。

      成员4:DLL的名字的指针,是一个以00结尾的ASCII字符的RVA地址,例如”kernel32.dll”

      成员5:包含指向输入地址表(IAT)的RVA。IAT是一个IMAGE_THUNK_DATA数组。成员1同成员5非常相似,他们指向两个本质上相同的数组IMAGE_THUNK_DATA。

 

注意:

在文件中认识输入表结构。本次为了说明问题,我们就用简单的1.exe了,我们的用c32打开1.exe,然后借助lordPE来找到输入表。

可以看到导入表

在文件中认识导入表

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuenixiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值