EXE文件结构和读取方法

EXE文件结构和读取方法

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

一、EXE文件概念

     EXE File英文全名executable file 。译作可运行文件,可移植可运行 (PE) 文件格式的文件,它能够载入到内存中。并由操作系统载入程序运行,是可在操作系统存储空间中浮动定位的可运行程序。如记事本程序notepad.exe ,能够用来编辑文档,如:測试.txt双击打开notepad.exe记事本程序来进行编辑处理。

二、EXE文件结构

      EXE文件分为两个部分: EXE文件头和程序本体。exe文件比較复杂,属于一种多段的结构。是DOS最成功和复杂的设计之中的一个。每一个exe文件包括一个文件头和一个可重定位程序的映像。文件头包括MS-DOS用于载入程序的信息,比如程序的大小和寄存器的初始值。文件头还指向一个重定位表,该表包括指向程序映像中可重定位段地址的指针链表。

MS-DOS通过把该映像直接从文件拷贝到内存载入exe程序,然后调整定位表中说明的可重定位段地址。定位表是一个重定位指针数组。每一个指向程序映像中的可重定位段地址。  预知具体原理与结构,请点击EXE文件结构及原理

                                  EXE文件结构和读取方法

                                                           上表是EXE文件头

三、EXE文件打开方法

    因为EXE文件比較特殊,打开方式也有点特殊。需指定格式,见以下代码:

#include<iostream>
#include<string>
#include<fstream>
#include<ios>
using namespace std;

const int BUFFER_SIZE=1024;

void update(ifstream& in) 
{
	if (!in) 
	{
		return;
	}
	std::streamsize length;
	char buffer[BUFFER_SIZE];
	while (!in.eof())
	{
		in.read(buffer, BUFFER_SIZE);
		length = in.gcount();
		if (length > 0) 
		{
			printf("%s",buffer);
		}
	}
	in.close();
}


int main()
{
	update(ifstream("1.exe", ios_base::binary));
	return 0;
}

       当中。ios_base 是C++标准程序库中的一个类,定义于<ios>头文件里。

ios_base类封装了C++标准中的流输入输出中不依赖于读写的数据的类型的基本信息,如格式化信息、异常状态、事件回调函数等。

  

     大约PE头,可以参考PE文件说明

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117803.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm如何设置背景图片_python配置pycharm

    pycharm如何设置背景图片_python配置pycharm工具栏也是有背景图的

    2022年8月25日
    6
  • IDEA汉化官方插件

    IDEA汉化官方插件直接在IDEA内下载即可输入Chinese下载完成后重启IDEA

    2022年6月5日
    136
  • h3c交换机重启_h3c交换机清空配置命令

    h3c交换机重启_h3c交换机清空配置命令h3c交换机清空配置命令H3CCAS云计算管理平台融合了华三通信在网络安全领域的积累,通过对IEEE802.1Qbg(EVB)标准的支持,为虚拟机在安全、可视、可监管的环境下运行奠定了基础。下面是小编收集的h3c交换机清空配置命令,希望大家认真阅读!一.用户配置:system-view[H3C]superpasswordH3C设置用户分级密码[H3C]undosuperpasswor…

    2022年6月20日
    126
  • 焦点科技怎么老是招人_合肥新站区工业数字化转型怎么申报_合肥昊邦信息科技…

    焦点科技怎么老是招人_合肥新站区工业数字化转型怎么申报_合肥昊邦信息科技…首页>新闻中心发布时间:2020-11-1310:50:51 导读:合肥昊邦信息科技为您提供合肥新站区工业数字化转型怎么申报的相关知识与详情:BlueData的软件提供了一种基于容器的方法,用于在裸机,云或混合平台上启动和管理Hadoop,Spark和其他环境。注意已经正式删除了,且很多API都已经并入Keras中,所以整个代码有一种浓厚的Keras风格。我强烈建议已…

    2022年5月3日
    49
  • 全国电信及网通 DNS 列表

    全国电信及网通 DNS 列表有很多在上网时出现,QQ可以上就是不能打开网页的情况,出现这种情况后PINGwww.baidu.com也无法Ping通,那应该是DNS出问题了,换一个就可以打开网页了。 下面是整理的一系列DNS列表先给大家两个开放式老外提供的的DNS吧谷歌::8.8.8.88.8.4.4 OpenDNS::208.67.222.222208.67.220.

    2022年5月22日
    43
  • windows通过ssh登陆linux服务器(linux 终端快捷键)

    windows通过ssh登陆linux服务器(linux 终端快捷键)window通过ssh连接linux1.window上要安装ssh   下载连接:https://www.mls-software.com/opensshd.html   版本:OpenSSH7.9p1-1   下载好后安装2.linux上启动ssh服务   有些可能没有ssh服务,需要下载安装   2.1检查是否有ssh服务:   判断是否安装ssh服务,可以通过如…

    2022年4月18日
    61

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号