PE文件结构(二)-输入表实例分析

输入表分析实例:

IID:

PE文件结构(二)-输入表实例分析_第1张图片

IID数组:空间大小为14*2+14=3C

OriginalFirstThunk

TimeDateStamp

ForwardChain

Name

FirstThunk

0000 C570

0000 0000

 0000 0000

0000 C6C4

0000 A000

0000 C674

0000 0000

 0000 0000

0000 C6E8

0000 A104

0000 0000

0000 0000

 0000 0000

0000 0000

0000 0000

相对虚拟地址(RVA)与文件偏移地址的转换:

文件偏移地址=RVA-▽K。(不同区块的▽K是不同的)

PE文件结构(二)-输入表实例分析_第2张图片

显然IID数组各项指向地址位于.rdata区段。

▽K=0000A000h-00008800h=1800h

仅对IID数组第一项的分析:

1.获取输入dll名称:文件偏移位为:0C6C4-1800=AEC4


获取名称为KERNEL32.DLL

2.获取INT表:文件偏移地址为:0C570-1800=AD70(INT数组一NULL结束)

PE文件结构(二)-输入表实例分析_第3张图片

INT表结构:(显然为union结构体占四个字节)

PE文件结构(二)-输入表实例分析_第4张图片

INT表指向内容为:文件偏移地址:C67C-1800=AE7C

PE文件结构(二)-输入表实例分析_第5张图片

获得了函数的名称

3.获取IAT表:文件偏移地址:A000-1800=8800

PE文件结构(二)-输入表实例分析_第6张图片

发现与INT表结构内容一致,加载后IAT表会发生变化。

PE文件结构(二)-输入表实例分析_第7张图片

其中此时存的为kernel.dll中的函数地址。函数运行调用函数时就会调用此函数的地址,

PE文件结构(二)-输入表实例分析_第8张图片

调用了入口地址为77278F80(LordLibraryA)与77277B50(GetProcAddress)的函数。


你可能感兴趣的:(Reverse)