把exe里面的资源通通取出来

接扫理解.exe文件的结构原理即运行过程 阅读详情
把exe里面的资源通通取出来

下载例子源代码

一、前言
  不知大家用过exescope没有,那是日本鬼子写的一个很有用的东西,它能把exe等pe格式(portable executable)文件的资源(图标、位图、对话框、声音等等)分析出来,并能改写回去。当然vc的ide也有类似功能。大家是不是觉得很神秘?其实只要弄清了pe文件的结构,你也可以写一个类似的工具出来。下面是我近 来对pe文件的分析经验,给大家作参考。同时希望看到有中国人能写出比日本鬼子更牛的分析工具来。
二、重要的数据结构
  PE格式简要说明:(更详细的资料见http://vcangle.8u8.com文件格式专页)
PE文件总结构如下表:
 
DOS MZ header  ;dos头 
DOS stub       ;dos附加段
PE header      ;NT头
Section table  ;节表
Section 1      ;第一节
Section 2      ;
Section ... 
Section n      ;第n节
  其中NT头:
  typedef struct _IMAGE_NT_HEADERS { 
  DWORD Signature;//PE文件头标志 :"PE/0/0"。
  IMAGE_FILE_HEADER FileHeader;          //PE文件物理分布的信息 
  IMAGE_OPTIONAL_HEADER32 OptionalHeader;//PE文件逻辑分布的信息 
  } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32; 
  节表数据结构:(可参考winnt.h)
  typedef struct _IMAGE_SECTION_HEADER { 
  BYTE    Name[IMAGE_SIZEOF_SHORT_NAME];//节表名称,如“.text” 
  union {  DWORD   PhysicalAddress;     //物理地址             
   DWORD   VirtualSize;         //真实长度 
} Misc; 
DWORD   VirtualAddress;         //RVA 
DWORD   SizeOfRawData;          //物理长度 
DWORD   PointerToRawData;       //节基于文件的偏移量 
DWORD   PointerToRelocations;   //重定位的偏移 
DWORD   PointerToLinenumbers;   //行号表的偏移 
WORD    NumberOfRelocations;    //重定位项数目 
WORD    NumberOfLinenumbers;    //行号表的数目 
DWORD   Characteristics;        //节属性 
  } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; 

  2.2位图文件格式。由文件头,位图信息和数据段组成。
  typedef struct tagBITMAPFILEHEADER { // bmfh文件头 
      WORD    bfType; //"BM"
      DWORD   bfSize; 
      WORD    bfReserved1; 
      WORD    bfReserved2; 
      DWORD   bfOffBits; 
  } BITMAPFILEHEADER;
  typedef struct tagBITMAPINFO { // bmi----位图信息 
      BITMAPINFOHEADER bmiHeader; //   ----位图信息头
      RGBQUAD          bmiColors[1];// ----调色板* 
  } BITMAPINFO; 
  typedef struct tagBITMAPINFOHEADER{ // bmih 位图信息头
      DWORD  biSize; //该结构大小
      LONG   biWidth; 
      LONG   biHeight; 
      WORD   biPlanes; 
      WORD   biBitCount; 
      DWORD  biCompression; 
      DWORD  biSizeImage; //位图数据大小 
      LONG   biXPelsPerMeter; 
      LONG   biYPelsPerMeter; 
      DWORD  biClrUsed; 
      DWORD  biClrImportant; 
  } BITMAPINFOHEADER; //该结构后紧接着就是DATA了。      
      
三、取资源主要思路
  先要判断是否PE文件。文件头两byte应为0x4d5a即("MZ"),然后到地址0x3c中读出PE文件头(_IMAGE_NT_HEADERS)。判断文件头结构的Signature是否为17744(即"PE/0/0")。
  读出节表(_IMAGE_SECTION_HEADER),判断有没有资源节。我采用了一个简单的方法:节表名为".rsrc/0/0"即是资源节。(注:据说该法不定可靠)
  如有资源节,则读取资源目录(_IMAGE_RESOURCE_DIRECTORY)和资源入口(_IMAGE_RESOURCE_DIRECTORY_ENTRY)。资源在pe文件中处一树型结构中,可有三层。在资源目录根部,如果资源入口的资源名是一个id,那么它代表一种资源类型。否则,它指向下一层资源入口。(祥见例程)
  读出具体资源的数据来。具体资源的入口(_IMAGE_RESOURCE_DATA_ENTRY)在就是资源树的叶子。它的OffsetToData成员指明了具体资源的物理位置。不过特别要注意的是,OffsetToData并不是具体资源在文件中的实际偏移,具体见我的例程。具体资源的长度则由Size成员指定。
  导出bmp资源。pe文件里的bmp资源由BITMAPINFO部分和BITMAPDATA部分组成。我们只要为它构造一个文件头(BITMAPFILEHEADER),就可以写成bmp文件了。这里特别要注意的是BITMAPINFO的bmiColors成员是未定长的。你要为它
指明长度,以申请内存。
好了,我不说了,有什么不明白就看例程吧。
四、例子程序简介
  我的例子程序基本实现了读取pe文件的资源信息,并能把位图显示、导出。其它资源的操作还在研究中。由于作者水平有限,在分析有些文件时可能会不成功。欢迎指正!主页: http://vcangle.8u8.com,邮箱:king_koo@163.net.
五、参考资料
http://www.youkuaiyun.com/dev/Format/
http://mantousoft.51.net
windows提取exe资源 -rc文件需要 打包好的资源文件 打算从exe里提取 阅读详情

相关推荐

资源提取助手V1.0-用于快读提取exe程序中的位图和图标资源

资源提取助手V1.0,可以快读提取exe程序中的位图和图标资源,方便好用。有什么问题请访问:https://blog.youkuaiyun.com/clever101

eXeScope 提取.exe/.dll中的图片资源

eXeScope 下载地址:https://wwe.lanzoui.com/ionZpwngz0b打开eXeScope软件。 打开选择你要提取的应用程序 打开后就会把图片资源等应用的信息解析出来 找到你要的图片资源,导出就行了。

Tongyao 4599

exe文件资源提取工具ResourcesExtract

可以提取的资源包括:图标、光标、位图、HTML相关资源、动画图标、动画光标、AVI文件、清单资源、类型库、字符串

逆向工程 --- exe,dll内部文件资源提取

使用Die工具点击高级--->资源--->提取器--->转储全部 原创作者: gklbb 转载于...

weixin_40834592的博客 916

用STM32F103单片机控制电调制动无刷电机

用电调控制无刷电机制作遥控飞艇 蓝牙控制 调控电调 无刷电机 用电调控制无刷电机制作遥控飞艇 代码区 mian.c #include "delay.h" #include "sys.h" #include "usart.h" #include "usart3.h" #include "timer.h" #include "led.h" #include "key.h" int main(v...

子非鱼 的博客 2万+

CanMV K230实战:用MicroPython玩转AI视觉识别(附完整代码)

本文详细介绍了如何使用MicroPython在CanMV K230开发板上实现AI视觉识别,包括环境搭建、摄像头配置、模型部署及优化技巧。通过实战案例(如智能门禁和工业分拣机器人),展示如何快速开发低门槛的嵌入式AI应用,特别适合初学者和嵌入式开发者。

x8y9z0的博客 1142

应用《信管通通用文件编报信息管理系统》完成办公设备信息编报

随着信息化技术的迅速发展,各行各业的办公管理也越来越依赖于数字化手段。尤其是在大中型企业和政府机构中,办公设备的管理变得尤为重要。如何高效、规范地对办公设备进行信息编报,成了许多企业管理者面临的一大挑战。在这一背景下,《信管通通用文件编报信息管理系统》应运而生,为办公设备的管理提供了便捷的解决方案。

qq_38531502的博客 920

告别迷茫!用C#和Windows.Devices.Bluetooth搞定BLE设备连接与数据收发(附完整代码)

本文详细介绍了如何使用C#和Windows.Devices.Bluetooth命名空间实现BLE设备连接与数据收发。从开发环境配置到设备扫描、服务发现、数据通信及资源管理,提供完整代码示例和实战技巧,帮助开发者快速掌握低功耗蓝牙开发,解决连接稳定性和异常处理等常见问题。

weixin_29248653的博客 505

python3无损资源储存,py文件内可以带任何资源

版权申明:此博文后期必火,本人原创,转载请注明出处。 前言:python这个东西,跟按键精灵类似,都属于脚本语言。按键精灵编写脚本的时候,有个很好使的功能,那就是打包的exe程序可以添加附件,运行程序的时候能够释放附件并进行一些操作。按键精灵除了不能在附件里面添加exe的文件之外,基本上其他附件都支持添加。相似的软件还有易语言,易语言的资源表里是可以加入图片和音乐等东西的。 1. ...

qq_32394351的博客 6411

pynq-z2 HLS开发

定制Overlay一.用HLS生成一个定制IP功啊啊是合理的创建标题,有助于目录的生成如何改变是式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 一.用HLS生成一个定制IP ...

qq_38769280的博客 4156

企业微信群机器人Webhook配置全攻略:从创建到发送消息的完整流程

本文详细解析了企业微信群机器人的Webhook配置全流程,从创建机器人、获取关键Webhook地址,到使用代码发送文本、Markdown等多种消息类型。内容涵盖安全加固、错误处理及与CI/CD等系统集成的实战指南,帮助企业快速构建高效、稳定的内部通知系统。

ik678901的博客 1782

PDF转换图片,命令行exe用起来挺香

平常用图片转PDF用得多,现在猫猫需要将PDF转换成图片,找到找去一大圈,太多收费的,于是我找啊找啊,找到一个开源的组件poppler,我本来是找的是node的版本,后面发现里面dll一堆,于是看了看,试了试。发现两个exe 疑似可以转换pdf到图片,于是先试了pdfimages未成功,pdftocairo.exe才是可以转换的exe.果断将dll和exe提取出来,其它exe就不copy了。将dl...

加菲猫的VFP 585

ubuntu 安装node和npm

在ubuntu中经常需要用到node ,npm,因为npm基本会和node同时安装,所以只需要安装node即可。可以使用 nvm(Node Version Manager)来管理你的 Node.js 版本。

风吹落叶的博客 2291

完美定制你的QQ,把QQ里不要的文件通通删除!

转载注明 转自珊瑚虫论坛 黑发如云感谢潇湘夜雨斑竹交流经验 我列出来的是可供删除的.没列出来的就是 视频.音频.各种重要资源.必不可少的功能..谁也不想有一天突然要用到一个功能发现不正常吧.所以.没有必要连常用的功能都涉及到删除的列表里面.  这个版本的qq发布也有一段时间了.因为每次更新qq可能目录下的文件有所更改...很多网友不能接受增加的许多东西.但是要自己精简.无从下手. 很明显的还可以.

老狐狸的博客 3331

手把手教你学 Simulink (1.3):探索Simulink模块库的奇妙世界

Simulink模块库按照功能分为多个类别,每个类别包含专门用于特定任务的模块。% 打开Simulink库浏览器% 或者以编程方式获取库列表disp('可用的库列表:');end常用模块(Simulink):最基础和最常用的模块信号处理模块(DSP System Toolbox):专业信号处理工具通信模块(Communications Toolbox):通信系统设计控制系统模块(Control System Toolbox):控制系统设计与分析% 创建自定义模块库。

QQ_778132974的博客 382

RK3568平台开发系列讲解(项目篇)手写数字识别

📢 本篇章带大家基于飞桨(PaddlePaddle),完成一个简单的手写数字识别任务。

内核笔记 1182

如何查看exe或dll调用了什么dll

[转载]如何查看exe或dll调用了什么dll呢 已有 19410 次阅读 2014-4-17 21:08|系统分类:科研笔记|文章来源:转载 Dependency Walker使用说明 在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库。现在就让我们走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧!   初窥门径:Windows

arthurkang的专栏 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

如何保护自己的exe不被UnFoxAll反编译

用VFP的人,有专业的,有非专业了,很多人其实是小白,问出的问题是小白,如果问题不对,我们引导他们问正确的问题。无论如何请不要嘲笑他们说帮助都不看,这么简单的问题都不会,嘲笑别人不行,而无法提出建设性答案,是很low的。也许你得意的技巧其实是个弯路!微信小程序,微信公众号开发,H5 APP开发,Extjs BS开发,VFP面向对象进阶,VFP中间层开发。"VFP极简混合开发,少写代码、快速出活,用VFP,但不局限于VFP,各种语言混合开发"暂定千字50元红包,,优秀的文章红包更大,一经发表,红包到手。

加菲猫的VFP 164

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

请问如何强行释放所有已关闭的程序所残留的内存等资源?类似于微软的那个叫mem.exe的工具,如何入手呢?...

请问如何强行释放所有已关闭的程序所残留的内存等资源?类似于微软的那个叫mem.exe的工具,如何入手呢? Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiBase/html/delphi_20061207081040248.html 有的程序设计的不完美或者说是操作系统配合的不完美,在程序已关闭后有的资源不能很好的让操作系统回收,...

weixin_34007886的博客 106

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

dll与exe的区别

DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。   所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。   动态链接所调用的函数代码并没有被拷贝到应用程...

ChasingdreamLY的博客 9177

res-downloader资源下载实战指南:3分钟上手,视频号、抖音、小红书通通拿下

你有没有遇到过这样的瞬间:刷到妈妈在视频号里发的一段老照片合集,想保存下来,结果视频号压根没有"下载"按钮;想把抖音上那段精彩的舞蹈发给朋友,只能录屏,画质糊成一团;好不容易在小红书找到想要的壁纸原图,右键却一片空白…… 别急,这不是你操作的问题,而是很多平台压根没打算让你"拿走"内容。今天介绍的这款免费开源的资源下载神器 **res-downloader**,就是专门解决这类痛点的。它不用你懂

gitblog_00997的博客 462

dll和exe的区别和联系

转自:http://www.cnblogs.com/choi/archive/2006/08/11/474139.html           在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库。现在就让我们走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧!   初窥门径:Windows的基石   随便打开一个系统目录,一眼望去就能看到很多扩展名DLL的文件

judy1017的专栏 3803
上一篇: 深度探索Win32可执行文件格式
下一篇: 深入浅出PE文件格式---自己动手打造PE Show
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值