查看: 104|回复: 0

[原创图文] 手写PE第七课 认识导入表

[复制链接]
发表于 2020-5-7 21:30:39 | 显示全部楼层 |阅读模式

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表
  认识导入表(_IMAGE_IMPORT_DESCRIPTOR)结构。

手写PE第七课 认识导入表

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

手写PE第七课 认识导入表

手写PE第七课 认识导入表
  重要成员如下

手写PE第七课 认识导入表

手写PE第七课 认识导入表
  成员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。
  注意:

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

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

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表
  可以看到导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表
  在文件中认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表

手写PE第七课 认识导入表
                                                                        xuenixiang                                                                        

手写PE第七课 认识导入表

手写PE第七课 认识导入表
                                                                原创文章 127获赞 34访问量 3万+                                                                                            关注                                                                私信                                                                                                                           

温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046
快速回复 返回顶部 返回列表