PE格式分析工具

枫少@KillBoy
枫少@KillBoy
管理员
219
文章
0
粉丝
资源分享195,535字数 1369阅读4分33秒阅读模式
AI智能摘要
想深入分析Windows可执行文件却苦于工具复杂难用?这款由安全爱好者打造的PE格式分析工具,专为逆向初学者和安全工程师设计,支持32位与64位DLL/EXE文件深度解析。内置五大核心模块:DOS头、NT头、节表、数据目录表与地址计算,覆盖PE结构全维度信息,并附带中文注解,助你轻松掌握导出表、导入API、重定位等关键数据的提取逻辑。界面简洁,操作直观,还提供详细学习资料参考。无论是恶意样本分析还是二进制学习,都是你的得力助手。
— AI 生成的文章内容摘要

HW期间,为防范钓鱼,即日起FreeBuf将取消投稿文章的一切外部链接。给您带来的不便,敬请谅解~

经过大半个月参考和学习网上各位大神的文案,做了一款*.dll和*.exe的PE格式分析工具,此工具可以分析32位和64位系统下可执行文件。1.0版本略显粗造,请各路大神多多指导,也欢迎大家多多交流。

目前有5大板块:【DOS头信息】、【NT头信息】、【节表信息】、【数据目录表】、【地址计算】。(*含中文注解,底部有工具下载链接)

PE格式分析工具

第一板块:【DOS头信息】:DOS头表的所有信息,显示DOS表下各成员

第二板块:【NT头信息】:分为【文件头信息】和【可选映像头信息】;

一:【文件头信息】:所含可执行文件的运行平台,文件生成时间,文件属性等文件信息,简单明了的了解文件所有信息;

二:【可选映像头信息】:信息量较大,映像头包含可执行文件程序执行入口的RVA,文件类型,函数何时被调用等等;

第三板块【节表信息】:使用下拉选项来显示每一个节的内存偏移地址,属性等等;

第四板块【数据目录表】:可执行文件的各种表的RVA,以及Size;含【导出表】、【导入表】、【重定位表】的详细信息;

一:【导出表】:可执行文件所导出的函数、地址信息等。

IMAGE_EXPORT_DIRECTORY 结构的重要成员:
DWORD   NumberOfFunctions;           // 所有的导出函数的个数
DWORD   NumberOfNames;               // 以名字导出的函数的个数
DWORD   AddressOfFunctions;           // 导出的函数地址表的RVA
DWORD   AddressOfNames;               // 导出的函数名称表的RVA
DWORD   AddressOfNameOrdinals    // 导出的函数序号表的RVA
找出所有的导出函数:

1.以NumberOfFunctions导出函数的个数为准,循环遍历函数地址表的RVA;
2.当找到函数地址表不为零时,嵌套循环以NumberOfNames 名字导出的函数的个数循环遍历函数的序号的 RVA;
3.如果函数地址的RVA 和 函数的序号的 RVA相同的话,那么这就是函数名称的RVA,即可找到该地址的函数;

二:【导入表】:简单来说就是代表了该模块调用了哪些外部的API

IMAGE_IMPORT_DESCRIPTOR结构的重要成员:
DWORD OriginalFirstThunk;   //导入名称表
DWORD FirstThunk;               //导入地址表
//OriginalFirstThunk和FirstThunk都指向的是_IMAGE_THUNK_DATA32结构体
_IMAGE_THUNK_DATA32
{
DWORD ForwarderString;      // PBYTE
DWORD Function;                  // PDWORD,导入函数的地址
DWORD Ordinal;                    // 序号
DWORD AddressOfData;       //PIMAGE_IMPORT_BY_NAME,假如是函数名导入的,它指向另外一个结构体:PIMGE_IMPORT_BY_NAME
}
_IMAGE_IMPORT_BY_NAME
{
WORD Hint ;        // 序号
BYTE Name[1];    // 函数名
}

找出所有的导入函数:

1.通过IMAGE_IMPORT_DESCRIPTOR结构的OriginalFirstThunk导入名称表参数,从RvaToOffset找到名称表_IMAGE_THUNK_DATA32的RVA
2.如果名称表的AddressOfData值不为零,增加名称表和地址表本身值大小,循环查找下一个,直到为0则退出。
3.在循环体本身判断:如果序号超出最大范围值,说明是以序号导入的;不然则是以函数名导入,将AddressOfData的RvaToOffset,便得到该函数名。

三:【重定位表】:地址的重定向表

IMAGE_BASE_RELOCATION结构的重要成员:
DWORD   VirtualAddress;   //要修正的数据的基地址,RVA
DWORD   SizeOfBlock;          //大小

获取所有的重定位信息:

1. 找到重定位表的地址后;
2.当表地址和大小不为零时,循环遍历重定位信息,找到首个重定位信息,以该重定位的大小为主嵌套循环,找到该重定位的地址和重定位类型, 再将重定位信息加上SizeOfBlock,继续循环遍历下一块重定位信息;

第五板块【地址计算】: VA,RVA,OFFSET之间值的计算,显示此值的所在区块和字节内容

工具下载地址:
https://pan.baidu.com/s/1HKhs2_te4cllE3RQ5UPaig?_at_=1618891328986
提取码:1234;

参考链接:
PE格式概述:



DOS头学习资料:

NT头学习资料:

文件头学习资料:



可选映像头学习资料:


节表信息学习资料:


导入表学习资料:


导出表学习资料:


重定位表学习资料:

本文作者:, 转载请注明来自FreeBuf.COM

https://www.freebuf.com/sectool/270150.html

 
枫少@KillBoy
评论  19  访客  19
    • 甜心小熊软糖
      甜心小熊软糖 1

      这个工具界面挺直观的,打开文件就能看到结构。

      • 剑鸣秋
        剑鸣秋 0

        请问这个dll能分析.NET的程序集吗?

        • 大地漫游者
          大地漫游者 0

          功能完整,够用。

          • 昙花
            昙花 0

            看图里工具的配色,还挺符合暗黑风。

            • 咚咚锵
              咚咚锵 0

              整体体验不错,基本满足日常分析需求。

              • 霜刃无华
                霜刃无华 1

                作者的工具真是帮大忙啦!

                • 可再生能源大亨
                  可再生能源大亨 0

                  我之前也写过PE解析脚本,发现手动算RVA很麻烦,这工具省了不少时间。

                  • 天涯行客
                    天涯行客 0

                    地址计算那块支持VA转RVA吗?具体步骤是怎样的?

                    • 银筝
                      银筝 0

                      OriginalFirstThunk指向IMAGE_THUNK_DATA,若为0已绑定。

                      • 面条跳舞
                        面条跳舞 0

                        看到界面左侧的按钮排得这么整齐,真的有点小激动🤩。

                        • 岁月胶囊
                          岁月胶囊 1

                          能分析导入表,挺实用。

                          • 星际焊工
                            星际焊工 0

                            前几天刚用这个工具分析了一个未知的exe,结果导入表里居然出现了隐藏的API,吓一跳。

                            • 不灭之刃
                              不灭之刃 0

                              整体来看,这款PE-Hacker已经把常用的PE结构展示得很完整,尤其是数据目录表的细分,让我在定位导入导出关系时省了不少查文档的时间,后续如果能加上对资源节的可视化展示就更棒了。

                              • 昵称19
                                昵称19 1

                                下载试试看,正好需要分析个dll

                                • 拾旧梦
                                  拾旧梦 0

                                  我觉得工具在处理大文件时会卡顿,尤其是打开带有大量节的PE时,响应速度明显下降,建议优化下内存映射的方式,否则体验会打折。

                                  • IroncladSoul
                                    IroncladSoul 1

                                    导入导出表这块讲得蛮细的

                                  匿名

                                  发表评论

                                  匿名网友

                                  拖动滑块以完成验证