C/C++ PeView 结构解析器 [首发]

前段时间推出过一款PETools命令行版本的PE文件解析器,由于命令行参数较多且每次输出文件都要重新读取一遍效率较低,故今天我终于抽出时间来继续完善这个小工具,由于PETools工具与其他工具重名,故本次更名为PEView,且使用了交互式结构解析,让解析结果更加清晰,在使用上更加的易用,同时默认支持上下箭头查询历史命令,非常方便。

市面上几乎所有的PE文件查看工具都是图形化界面的,本工具不会采用图形界面模式,一是因为本人对图形开发不太熟悉,二是可以彰显与众不同,目前只有32位,64位正在开发中。

本次更新主要大变动并不算多,主要是对命令行的完善,移除几个不太实用的功能,同时也增加了几个实用功能,如下是具体的命令参数。

启动

PEView相对于PETools来说不在使用传入文件路径的方式打开文件,而是使用Open一次性打开文件,只有打开后才可以对其进行其他操作,打开文件需要使用Open命令跟随路径。

当文件被打开时,其实就是创建了一个内存映射,此时我们就可以执行一些查询命令了,例如查询Dos,NT头数据,可以这样。

查询数据目录表【DataDirectory】,执行如下命令。

查询,【Section】本程序的节表。

导入表查询有多个命令,【ImportAll】用于查询所有导入过的模块以及该模块的导入函数。

【ImportDll】命令用于查询该程序导入了那些DLL文件,可用来确定范围。

【ImportByName】命令用于查询,查询指定导入表中导入过的函数

【ImportByFunction】该命令可用于验证,指定的程序中是否引入了指定函数

【Export】用于查询程序中的导出表,由于只有DLL存在导出表,所有我们需要先切换到DLL文件上,然后在查询。

【FixRelocPage】用于显示重定位分页情况。

【FixRelocRVA】有了分页情况,就可以使用FixRelocRVA --rva 00002000查询该页内具有的页。

【Resource】则用于显示当前程序的资源表。

【Fingerprint】用户检查特定程序使用了那种编译器编译,由于这里特征不多所以暂时并不是那麽好。

【GetProcAddr】用于验证,所在程序中,特定模块中的内存地址。

【CheckSelf】用于检查被打开程序开启的保护模式。

【GetHexAscii】这是一个独立模块,可以独立使用,通常传入的是文件路劲,文件偏移,以及读取大小,即可实现文件的十六进制读取展示。

剩下的就是一些小功能了。

【add/sub】简单的十六进制计算器。

【VaToFoa / RvaToFoa / FoaToVa 】将虚拟地址转为实际地址,等基本转换。


许可协议: 文章中的代码均为学习时整理的笔记,博客中除去明确标注有参考文献的文章,其他文章【均为原创】作品,转载请务必【添加出处】,您添加出处是我创作的动力!
反制措施: 《点我预览协议》
原文地址:https://www.cnblogs.com/LyShark/p/14982070.html