天象独行 发表于 2020-12-7 09:10:52

PE结构_导入表_实验

本帖最后由 天象独行 于 2020-12-7 09:12 编辑

PE结构_导入表_实验实验目的:分析IMAGE_IMPORT_DESCRIPTOR结构当中的OriginalFirstThunk以及FirstThunk的关系。注释:相关工具如附件一;结构图
二;定位导入表位置       导入表记录在PE扩展头当中的数据目录项当中,我们使用一个PE文件。找到导入表RVA地址以及大小。(导入表信息记录在数据目录项当中第二条记录)       已知导入表RVA地址,那么现在我们计算FOA地址。打开工具查看节等相关信息:       从导入表RVA地址大小来看,我们知道它在.idata节区当中,那么计算FOA=0X3000-0X3000 + A00 = A00。则导入表如下图位置:三;IMAGE_IMPORT_DESCRIPTOR
       导入表当中,每20个字节组成一个名为IMAGE_IMPORT_DESCRIPTOR的结构。如下图:   3.1;OriginalFirstThunk       由结构图我们知道,IMAGE_IMPORT_DESCRIPTOR第一个元素为OriginalFirstThunk且大小为DWORD。它当中保存着另外一个数据结构的地址指针(IMAGE_THUNK_DATA)。
下面我们定位一下IMAGE_THUNK_DATA位置。已知OriginalFirstThunk地址RVA值为0X303C,计算FOA值0XA3C       现在我们找到了IMAGE_THUNK_DATA数据结构,该结构内容保存着数据结构IMAGE_IMPORT_BY_MAME的指针,那么我们通过得到的0X307C的值计算出IMAGE_IMPORT_BY_MAME数据结构的FOA地址0XA7C       IMAGE_IMPORT_BY_MAME当中保存着导入函数的序号以及函数名称。   3.2;FirstThunk
       FirstThunk是IMAGE_IMPORT_DESCRIPTOT结构当中的最后一个元素,且大小为DWORD。       同样计算出FOA地址,FOA=0XA50。该元素同样指向了一个IMAGE_THUNK_DATA数组。       这个时候,我们注意一下,0XA50 IMAGE_THUNK_DATA的位置的值等于0X30 IMAGE_THUNK_DATA 的值。都是0X307C。那么,他们可以肯定他们指向的IMAGE_IMPORT_BY_MAME。也是一样的。总结:
       IID(IMAGE_IMPORT_DESCRIPTOR)当中的OriginalFirstThunk和FirstThunk最终都指向了同一个数据结构IMAGE_IMPORT_BY_MAME。该结构当中保存着导入函数的序号以及函数名称。(注意:当程序加载到内存当中,或者运行中,FirstThunk指向的内容会转化为导入函数的地址)

abdeweili 发表于 2020-12-7 22:21:03

PE结构还是要加强的啊

天象独行 发表于 2020-12-8 14:52:57

abdeweili 发表于 2020-12-7 22:21
PE结构还是要加强的啊

是的,一起加油!!!
页: [1]
查看完整版本: PE结构_导入表_实验