zoukankan      html  css  js  c++  java
  • 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 】将虚拟地址转为实际地址,等基本转换。


    许可协议: 文章中的代码均为学习时整理的笔记,博客中除去明确标注有参考文献的文章,其他文章【均为原创】作品,转载请务必【添加出处】,您添加出处是我创作的动力!
    反制措施: 《点我预览协议》
  • 相关阅读:
    CodeForces 156B Suspects(枚举)
    CodeForces 156A Message(暴力)
    CodeForces 157B Trace
    CodeForces 157A Game Outcome
    HDU 3578 Greedy Tino(双塔DP)
    POJ 2609 Ferry Loading(双塔DP)
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛十六进制转换成十进制
  • 原文地址:https://www.cnblogs.com/LyShark/p/14982070.html
Copyright © 2011-2022 走看看