首页
社区
课程
招聘
[原创]WIN1064位环境下PE解析工具(支持64位与32位PE文件及PID)
发表于: 2017-3-30 20:12 9245

[原创]WIN1064位环境下PE解析工具(支持64位与32位PE文件及PID)

2017-3-30 20:12
9245
本文来自15PB学员
最近学了PE结构,自己写了一个练习. 集成了MD5和一些文件的基本信息查看. 
编译环境: Win10_VS2013_FMC
32位环境与64位最大的不同是存放数据地址的类型由DWORD变为ULONG64.
另外32位和64位的某些结构体也不相同.
例如:
IMAGE_NT_HEADERS64   
IMAGE_NT_HEADERS32
PIMAGE_OPTIONAL_HEADER64   
PIMAGE_OPTIONAL_HEADER32
IMAGE_THUNK_DATA62
IMAGE_THUNK_DATA32

定位地址,以32位为例:

void* m_pFileData;//载入文件的首地址指针
IMAGE_DOS_HEADER* pDosHeader = (IMAGE_DOS_HEADER*)m_pFileData;
IMAGE_NT_HEADERS32* pNtHeader =(IMAGE_NT_HEADERS32*)(pDosHeader->e_lfanew + (ULONG64)(pDosHeader));
IMAGE_OPTIONAL_HEADER32* pOptionalHeader = &pNtHeader->OptionalHeader;
IMAGE_DATA_DIRECTORY* pDataDirectory = pOptionalHeader->DataDirectory;
IMAGE_EXPORT_DIRECTORY *pExportTable = (IMAGE_EXPORT_DIRECTORY*)(dwExportTableOffset + (ULONG64)m_pFileData);
IMAGE_IMPORT_DESCRIPTOR* pImportTable =(IMAGE_IMPORT_DESCRIPTOR*)((ULONG64)m_pFileData + dwImportTableOffset);
IMAGE_RESOURCE_DIRECTORY* pRoot =(IMAGE_RESOURCE_DIRECTORY*)(((ULONG64)m_pFileData) + resourcesTableOffset);
IMAGE_BASE_RELOCATION* pRelcationBlock =(IMAGE_BASE_RELOCATION*)((ULONG64)m_pFileData + dwRelcationBlockOffset);
//其他的我就不贴了  代码中有详细注释,绝对教学级的.


界面写的比较简单,没有在上面花多少时间.水平有限,难免出现错误.欢迎指教,大牛轻喷.





[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 26205
活跃值: (63302)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
好厉害~
2017-3-30 21:42
0
雪    币: 355
活跃值: (276)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
3
支持
2017-3-31 09:01
0
雪    币: 2325
活跃值: (4913)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
支持了1!~
2017-3-31 11:16
0
雪    币: 1010
活跃值: (175)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢分享,支持!
2017-3-31 12:53
0
雪    币: 362
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
支持
2017-4-1 01:38
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
支持了!!!!!
2017-4-1 10:21
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
你好,请问可以根据PE文件提取所用到的系统调用吗,以及整个程序的系统调用过程
2017-4-19 10:21
0
雪    币: 365
活跃值: (126)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
9




wsscherish

你好,请问可以根据PE文件提取所用到的系统调用吗,以及整个程序的系统调用过程

没有这个功能,我只是PE文件解析.
如果要实现的话  要从程序调试入手查看载入的DLL等,
有3个现成的工具推荐,火绒剑,或者Procmon 或者 OD

2017-4-20 18:00
0
雪    币: 799
活跃值: (745)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
厉害了
2017-4-22 09:32
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
那在PE文件解析的基础上,通过扫描PE文件的代码段获取相关的int中断指令应该是可行可以实现的吧
2017-4-24 14:43
0
雪    币: 12
活跃值: (701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
2022-10-23 12:20
0
游客
登录 | 注册 方可回帖
返回
//