WindowsPE 导入表
2021/7/31 7:06:07
本文主要是介绍WindowsPE 导入表,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
导入表在就是在.rdate 节表当然不绝对
导入表在 数据目录 第2个 导入函数在第13个
可以看到rdata 表 起始2000位置 导入表在2538 iat 在2000
这里的rva 地址都要转换为foa 地址 就是 当前rva-初始rva+foa偏移 就是文件物理偏移位置
通过数据找到导入表位置 就是IMAGE_IMPORT_DESCRIPTOR 结构
typedef struct _IMAGE_IMPORT_DESCRIPTOR { union { DWORD Characteristics; // 0 for terminating null import descriptor DWORD OriginalFirstThunk; // RVA to original unbound IAT (PIMAGE_THUNK_DATA) } DUMMYUNIONNAME; 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 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;
这里5个值依次对应
OriginalFirstThunk ,指向IMAGE_THUNK_DATA 他是一个连续的
typedef struct _IMAGE_THUNK_DATA32 { union { DWORD ForwarderString; // PBYTE DWORD Function; // PDWORD DWORD Ordinal; DWORD AddressOfData; // PIMAGE_IMPORT_BY_NAME } u1; } IMAGE_THUNK_DATA32; typedef IMAGE_THUNK_DATA32 * PIMAGE_THUNK_DATA32;
这是值指向
typedef struct _IMAGE_IMPORT_BY_NAME { WORD Hint; CHAR Name[1]; } IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
FirstThunk 也是同样指向
_IMAGE_IMPORT_BY_NAME
所以他是一个双桥结构
最后指向一样 不过 FirstThunk 在载入内存时会被替换成真正的函数地址 载入od 查看402000地址
这篇关于WindowsPE 导入表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南