在前面的笔记中,我总结了Pe结构的一些结构含义,并手动编写了几段PE结构遍历代码,这里我直接把之前的C语言代码进行了封装,形成了一个命令行版的PE文件查看工具,该工具只有20kb,但却可以遍历出大部分PE结构数据,非常实用,分享出来是因为后续教程需要用到解析,请熟练使用其所支持的命令行参数,命令行输入PETools.exe 即可使用。
PE工具下载地址: https://share.weiyun.com/QU3iF4ql
基本参数介绍: 输入GetPE直接弹出帮助菜单。
检查模块开启的保护: main.exe c://qc.exe --CheckModule
验证模块完整性: 传入一个正在运行进程PID即可,检验模块是否存在可利用的环节。
验证特定模块地址: 例如验证User32.dll中MessageBoxA的地址,可执行:
十六进制加减法计算: 可快速实现十六进制加减法,不用在使用计算器了,方便快捷。
遍历DOS头: GetPE c://lyshark.exe --ShowDosHead
遍历NT头数据: C:pe>pe.exe ./x86.exe --ShowNtHead
遍历Section节表: C:pe>pe.exe ./x86.exe --ShowSection
遍历程序中的导入函数: C:pe>pe.exe ./x86.exe --ShowImportByDll
查询指定DLL中的导入函数: C:pe>pe.exe ./x86.exe --ShowImportByName USER32.dll
查询全部导入表,导入函数: C:pe>pe.exe ./ddd.dll --ShowImportAll
查询Export导出表: C:pe>pe.exe ./ddd.dll --ShowExport
查询重定位表: C:pe>pe.exe ./ddd.dll --ShowFixReloc
显示所有导入DLL GetPE c://lyshark.exe --ShowImportByDll
显示指定DLL中的导入函数: GetPE c://lyshark.exe --ShowImportByName USER32.dll
显示所有导入函数: GetPE c://lyshark.exe --ShowImportAll
检索指定API是否被引用: GetPE c://lyshark.exe --ShowImportByFunc GetModuleFileNameW
检索数据目录表: GetPE c://lyshark.exe --ShowDataDirectory
完整检索数据目录表:
检索文件导出表: GetPE c://lyshark.dll --ShowExport
检索重定位块: GetPE c://lyshark.dll --ShowFixRelocPage
检索指定重定位块中重定位信息: GetPE c://lyshark.dll --ShowFixRelocRva 00001000
检索全部重定位表: GetPE c://lyshark.dll --ShowFixReloc
尝试修正重定位表: GetPE c://lyshark.dll --RepairFixReloc dump.dll
尝试识别目标指纹: 通过内置特征,尝试识别目标指纹。
写这个东西就是要查手册,根据微软的定义,对其进行解析,不难,就是挺麻烦的,为了后续课程需要,我不得不把这个工具完善起来,稍安勿躁,精彩内容下次安排。