-
-
[原创]WIN1064位环境下PE解析工具(支持64位与32位PE文件及PID)
-
发表于:
2017-3-30 20:12
9245
-
[原创]WIN1064位环境下PE解析工具(支持64位与32位PE文件及PID)
本文来自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直播授课