PE格式系列_0x04:输入表查看(WinDbg+PEview+Stud_PE+Dependency+CFF)

目的:使用一个具体例子查询输入表的真实模样;notepad.exe加载到内存时,查询输入表的INT,用这个INT中的函数名对应的真实地址填充notepad.exe内存中IAT的过程;PE文件装在完后,通过IAT就可以找到函数在内存中真正的地址

1.WinDbg查看输入表

前提:notepad的加载基址是00f20000,NT头的真实加载地址是00f20100,OptionalHeader的偏移(0x18),offset of DataDirectory偏移是(0x60)

知识:输入表是DataDirectory数组中第二个元素

在这里插入图片描述

1.输入表起始地址

下面找到起始地址是00f20000 + 0x2647c,基本上每次加载基址都会有偏差;以实际为准

#1.option header -> DataDirectory
0:000> dt ntdll!_IMAGE_OPTIONAL_HEADER -v -ny DataDirectory 00f20100+18
struct _IMAGE_OPTIONAL_HEADER, 31 elements, 0xe0 bytes
   +0x060 DataDirectory : [16] struct _IMAGE_DATA_DIRECTORY, 2 elements, 0x8 bytes

#2.输入表相关的_IMAGE_DATA_DIRECTORY,下面可以看到0x2647c开始,长度为0x21c的一段连续内存都是给导入表的
0:000> dt ntdll!_IMAGE_DATA_DIRECTORY 00f20100+18+60+8
   +0x000 VirtualAddress   : 0x2647c
   +0x004 Size             : 0x21c
#3.00f4647c是DataDirectory[1],即输入表的虚拟地址(VA)
0:000> ? 00f20000 + 0x2647c
Evaluate expression: 16016508 = 00f4647c

2.IMAGE_IMPORT_DESCRIPTOR

解析前要了解输入表在内存中的大致结构、使用的结构体和信息

  • 1.输入表常用的结构体
0:000> dt  combase!_IMAGE_I*
          combase!_IMAGE_IMPORT_BY_NAME
          combase!_IMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION
          combase!_IMAGE_IMPORT_BY_NAME
          combase!_IMAGE_IMPORT_DESCRIPTOR
          combase!_IMAGE_IMPORT_DESCRIPTOR
          combase!_IMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION 
  • 2.IID_IMAGE_IMPORT_DESCRIPTOR的简称,内存中排列如下
#输入表占用的一段连续内存
#是一个个IMAGE_IMPORT_DESCRIPTOR组成的,结尾是一个参数都为空的IMAGE_IMPORT_DESCRIPTOR结构
#类似结构:
		IMAGE_IMPORT_DESCRIPTOR(IID) -> "KERNEL32.dll"相关信息
		IMAGE_IMPORT_DESCRIPTOR(IID) -> "GDI32.dll"相关信息
		...
		IMAGE_IMPORT_DESCRIPTOR(IID) -> "COMCTL32.dll"相关信息
		IMAGE_IMPORT_DESCRIPTOR(IID) -> 全NULL参数的IMAGE_IMPORT_DESCRIPTOR结构,标识结束

CFF查看类似下面的形式(不是notepad.exe的截图,但是不影响理解)

在这里插入图片描述

  • 3.dump的内存信息

内存中IMAGE_IMPORT_DESCRIPTOR的dump信息如下,可以查询有多少个dll?每个dll的IMAGE_IMPORT_DESCRIPTOR的结构具体是什么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值