吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8380|回复: 43
收起左侧

[PEtools] PE格式分析工具

  [复制链接]
PE-Hacker 发表于 2021-4-20 12:22
经过大半个月参考和学习网上各位大神的文案,做了一款*.dll和*.exe的PE格式分析工具,此工具可以分析32位和64位系统下可执行文件。1.0版本略显粗造,请各路大神多多指导,也欢迎大家多多交流。


目前有5大板块:【DOS头信息】、【NT头信息】、【节表信息】、【数据目录表】、【地址计算】。(*含中文注解)

主页

主页


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

dos

dos



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

NT

NT



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

File

File


  二:【可选映像头信息】:信息量较大,映像头包含可执行文件程序执行入口的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格式概述:
   https://www.cnblogs.com/2f28/p/9800992.html]https://www.cnblogs.com/2f28/p/9800992.html[/url]
    https://blog.csdn.net/qq_36746738/article/details/74171292]https://blog.csdn.net/qq_36746738/article/details/74171292[/url]
DOS头学习资料:
    https://blog.csdn.net/pxm2525/article/details/39895487]https://blog.csdn.net/pxm2525/article/details/39895487[/url]
NT头学习资料:
    https://blog.csdn.net/chy_chenyang/article/details/80768654]https://blog.csdn.net/chy_chenyang/article/details/80768654[/url]
文件头学习资料:
    https://blog.csdn.net/jiangqin115/article/details/79757041]https://blog.csdn.net/jiangqin115/article/details/79757041[/url]
    https://blog.csdn.net/u011513939/article/details/73496402]https://blog.csdn.net/u011513939/article/details/73496402[/url]
    https://blog.csdn.net/chy_chenyang/article/details/80768654]https://blog.csdn.net/chy_chenyang/article/details/80768654[/url]
可选映像头学习资料
    https://blog.csdn.net/chy_chenyang/article/details/80768654]https://blog.csdn.net/chy_chenyang/article/details/80768654[/url]
    https://www.cnblogs.com/kuangke/p/5393514.html]https://www.cnblogs.com/kuangke/p/5393514.html[/url]
节表信息学习资料
    https://www.cnblogs.com/IMyLife/p/4826090.html]https://www.cnblogs.com/IMyLife/p/4826090.html[/url]
    https://www.cnblogs.com/ruingking/p/10867778.html]https://www.cnblogs.com/ruingking/p/10867778.html[/url]
导入表学习资料
    https://www.cnblogs.com/SunsetR/p/11192555.html]https://www.cnblogs.com/SunsetR/p/11192555.html[/url]
    https://blog.csdn.net/weixin_42489582/article/details/84800464]https://blog.csdn.net/weixin_42489582/article/details/84800464[/url]
导出表学习资料
    https://www.cnblogs.com/iBinary/p/9739031.html]https://www.cnblogs.com/iBinary/p/9739031.html[/url]
    https://blog.csdn.net/with_dream/article/details/81144496]https://blog.csdn.net/with_dream/article/details/81144496[/url]
重定位表学习资料
   https://bbs.pediy.com/thread-246759.htm]https://bbs.pediy.com/thread-246759.htm[/url]
    https://blog.csdn.net/qq_40890756/article/details/90080880]https://blog.csdn.net/qq_40890756/article/details/90080880[/url]

免费评分

参与人数 6吾爱币 +6 热心值 +4 收起 理由
jetchan + 1 + 1 热心回复!
小军电子 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
ttimasdf + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
海天一色001 + 1 + 1 热心回复!
TLH + 1 谢谢@Thanks!
bailemenmlbj + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

riyan 发表于 2021-5-4 13:51
不错的干货,赞一个
kakaon1 发表于 2021-4-30 13:26
firony 发表于 2021-4-29 14:38
bailemenmlbj 发表于 2021-4-24 11:36
小白不懂,但看起来很牛牛样
 楼主| PE-Hacker 发表于 2021-4-24 13:40
bailemenmlbj 发表于 2021-4-24 11:36
小白不懂,但看起来很牛牛样

初代版本,主要平时研究自用,后面会慢慢改进
bailemenmlbj 发表于 2021-4-24 15:09
PE-Hacker 发表于 2021-4-24 13:40
初代版本,主要平时研究自用,后面会慢慢改进

静候佳音
ghostmankimo 发表于 2021-4-27 12:42
非常厲害!
johnchow 发表于 2021-4-28 18:47
最好像CFF具有修改功能
小军电子 发表于 2021-4-28 23:13
小白看不懂,但还是坚持看下来了
 楼主| PE-Hacker 发表于 2021-4-30 10:04
johnchow 发表于 2021-4-28 18:47
最好像CFF具有修改功能

是的 , 等我后期有空应该会升级一个修改数据的功能
 楼主| PE-Hacker 发表于 2021-4-30 10:05
小军电子 发表于 2021-4-28 23:13
小白看不懂,但还是坚持看下来了

就是我的一些心得,加上一个提供给大家使用和讨论的工具
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 03:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表