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文件说明

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • WOL(Wake On LAN – 局域网唤醒)外网唤醒 配置教程 远程开机「建议收藏」

    WOL(Wake On LAN – 局域网唤醒)外网唤醒 配置教程 远程开机「建议收藏」前言(也叫废话):虽然这个功能叫局域网唤醒,但配合路由器的端口映射功能,广域网唤醒也是可以的。只要有一台能上网的电脑或手机,就能把家中电脑打开,需要用电脑又不在家的时候很方便。一、开启WOL功能进BIOS进入BIOS后找一下有没有WakeOnLAN、网卡唤醒、WOL等字样的选项,找到后启用。二、注册花生壳账号传送门:https://console.oray.com/passport…

  • Root apk 2021_proguard混淆jar包

    Root apk 2021_proguard混淆jar包backdoor-apk从名字上我们就能知道它的用途了,没错就是用来制作APK后门的。这款工具使用起来非常方便,而且功能也很强大!话不多说,下面我们直接进入正题。首先,让我们对它进行安装,在安装前我们需要先安装它的一些依赖lib库文件:apt-getinstalllib32stdc++6lib32ncurses5lib32z1这里询问我们,对这些安装的服务,当他们更新时不再进行询…

  • 安卓4.0/4.1/4.2手机怎么打开USB调试模式「建议收藏」

    安卓4.0/4.1/4.2手机怎么打开USB调试模式「建议收藏」提示:手机和电脑的连接方式都是ADB连接方式,所以手机上是必须打开USB调试才能正式连接和控制手机,根据安卓多个版本系统一共有3个开启USB调试模式方法。下面三个3个模式开启方法介绍::第一种模式是:

  • 手把手教你如何玩转Activiti工作流「建议收藏」

    手把手教你如何玩转Activiti工作流「建议收藏」一:Activiti的介绍场景:学校主角:阿毛,班主任,教务处处长问题:有一天,阿毛到学校,感觉到身体不舒服,然后想跟班主任请假,然后班主任告诉阿毛说,你想请假,那么就必须要请假条,这个上面必须要我同意,然后再拿到教务处去盖章,然后交给我,这样才可以进行请假。。阿毛,想着,怎么请个假都这么麻烦,这么多层次处理问题,能不能简便一点。。。。好烦好烦~!!~~分析…

  • mysql的字符串拼接函数怎么用_拼接字段的函数是什么

    mysql的字符串拼接函数怎么用_拼接字段的函数是什么MySQL的字符串拼接有三个函数CONCAT(str1,str2,…)CONCAT_WS(separator,str1,str2,…)GROUP_CONCAT(expr)这三个函数都各有作用,现在测试看看是什么样子的效果准备数据表CREATETABLE`user_info`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(255)DEFAULTNULL,`age`int(3)DEFAULTNULL,

    2022年10月27日
  • es6模板字符串和占位符${}「建议收藏」

    es6模板字符串和占位符${}「建议收藏」描述:  模板字符串使用反引号()来代替普通字符串中的用双引号和单引号。模板字符串可以包含特定语法(KaTeXparseerror:Expected’EOF’,got’&’atposition20:…ression})的占位符。&̲emsp;&emsp;&ems…{}放变量…

发表回复

您的电子邮箱地址不会被公开。

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