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 】将虚拟地址转为实际地址,等基本转换。


    许可协议: 文章中的代码均为学习时整理的笔记,博客中除去明确标注有参考文献的文章,其他文章【均为原创】作品,转载请务必【添加出处】,您添加出处是我创作的动力!
    反制措施: 《点我预览协议》
  • 相关阅读:
    1137. 第 N 个泰波那契数
    486. 预测赢家
    python函数—函数的参数+递归函数
    python函数—调用函数+定义函数
    Seize the day
    数学建模基础学习2-matlab + lingo
    Python基础--使用list和tuple+条件判断+使用dict和set
    经济学人精读丨中国的电子商务
    数学建模基础学习1
    C盘今天爆掉了,罪魁祸首--百度云管家
  • 原文地址:https://www.cnblogs.com/LyShark/p/14982070.html
Copyright © 2011-2022 走看看