IAT表及导入表之间的关联.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
IAT表和导入表之间的关联 一、前言 前几天研究PE结构也随心发了点心得,给大家分享,真没想到能被精华对待!所以,一直以来都想再发点经典的,支持一下看雪,可是就是找不到蓝本!今天,刚研究到的发出来和大家分享一下!、导入表 知道现在很多文章都说过这个玩意了。就花几分钟看看我写的,或许,还真和别人说的不一样了。先不说别的拿工具看一下什么样的是导入表,我们主要用PNHookApi1.00.05新版本的已经支持很多PE类的信息了,没有的,可以去下载区下,或者拿LoadPE就好了,随便拿VC做了个WIN32的程序来研究。如图: ??????????我们看到上面是导入模块,下面是导入函数信息,实际猛一看,大家都清楚,可是我想问大家那些东西都是怎么来的吗?没几个人知道了吧!我就来解释一下。我先整体了解导入表,能证明导入表特征的那就算是它的结构了。 //------------------------------------------------------------------------------------------ 在winnt.h中我找到了它的结构: typedef?struct?_IMAGE_IMPORT_DESCRIPTOR?{ ????union?{ ????????DWORD???Characteristics;????????????//?0?for?terminating?null?import?descriptor导入描述符始终为NULL ????????DWORD???OriginalFirstThunk;?????????//?RVA?to?original?unbound?IAT?(PIMAGE_THUNK_DATA)这里后面专门解释 ????}; ????DWORD???TimeDateStamp;??????????????????//?0?if?not?bound,?时间日期戳 ????????????????????????????????????????????//?-1?if?bound,?and?real?date\time?stamp ????????????????????????????????????????????//?????in?IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT?(new?BIND) ????????????????????????????????????????????//?O.W.?date/time?stamp?of?DLL?bound?to?(Old?BIND) ????DWORD???ForwarderChain;?????????????????//?-1?if?no?forwarders多为0 ????DWORD???Name;???????????????????????????//后面说明 ????DWORD???FirstThunk;?????????????????????//?RVA?to?IAT?(if?bound?this?IAT?has?actual?addresses)后面说明 }?IMAGE_IMPORT_DESCRIPTOR; typedef?IMAGE_IMPORT_DESCRIPTOR?UNALIGNED?*PIMAGE_IMPORT_DESCRIPTOR; 从结构来看我们声明的类型为: _IMAGE_IMPORT_DESCRIPTOR??? IMAGE_IMPORT_DESCRIPTOR *PIMAGE_IMPORT_DESCRIPTOR??//这个和前面不一样它表示的是这个结构的指针,前面两个都是结构类型 //------------------------------------------------------------------------------------------------ 我们顺着往下看,第一个当然是:OriginalFirstThunk,我特意没把英文翻译过来是希望大家先有个概念!导入表和IAT表是有很大关系的。 ?????先把前面的内容PUSH保存,等会用着了再POP吧!我先研究一下导入表的16进制。 ?????先最简单的,我们拿WINHEX来打开前面做的程序看吧!我们先可以让LoadPE或PNHookApi查看一下导入表的地址,我这里是0002A000,长度是0000003C,我们看到的这个地址是RVA,需要转换后才能到真正的导入表虚拟地址或物理地址,我们如图(不加图说不清楚了:() ??????图中表示了我们对应的地址我们要找的正好是整数,也是区段开头不用换算的,如果不是的话那就可怜点需要换算了。至于换算我以前的贴里已经说了一

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档