当前位置: 首页 > news >正文

pe格式从入门到图形化显示(十)-扩展最后一个节


文章目录

  • 前言
  • 一、怎么扩展最后一个节?
  • 二、扩大节
    • 1.扩展节
    • 2.保存文件


前言

通过分析和解析Windows PE格式,并使用qt进行图形化显示


一、怎么扩展最后一个节?

在PE文件中,扩大最后一个节通常是通过修改PE文件头中的节表来实现的。具体来说,可以通过以下步骤来扩大最后一个节:

1、打开PE文件,并读取其DOS头、NT头和节表。
2、找到节表中的最后一个节,并计算其在文件中的偏移和大小。
3、修改最后一个节的大小,使其增加所需的额外空间。这可以通过修改节表中的SizeOfRawData和VirtualSize字段来实现。
4、如果需要,还可以修改最后一个节的虚拟地址和文件偏移,以确保它们与其他节保持一致。
5、将修改后的节表写回到PE文件中。
6、如果需要,还可以修改PE文件头中的其他字段,例如SizeOfImage和SizeOfCode,以反映新的节大小。

需要注意的是,在扩大最后一个节时,可能需要调整PE文件中的其他部分,以确保它们与新的节大小保持一致。例如,如果扩大了代码节,可能需要调整导入表、导出表和资源表等部分的位置和大小。此外,还需要确保在扩大节时不会覆盖PE文件中的其他部分,例如节表、导入表和导出表等。

二、扩大节

1.扩展节

void PEParser::expandEndSection(int size, char fillData)
{QByteArray data(size, fillData);if (m_sections.size() > 0){//修改节区属性IMAGE_SECTION_HEADER section = m_sections[m_sections.size() - 1];section.SizeOfRawData += alignment(size, m_fileAlignment);//修改节表在内存中的大小int addImageSize = alignment(size, m_sectionAlignment);;section.Misc.VirtualSize += addImageSize;//修改最后一个节表m_sections[m_sections.size() - 1] = section;//修改文件在内存中的大小if (m_x86Flag){m_optionalHeader32.SizeOfImage += addImageSize;}else{m_optionalHeader64.SizeOfImage += addImageSize;}//添加填充内容m_fileData.append(data);}
}

2.保存文件

QByteArray PEParser::getFileData()
{//替换DOS头memcpy(m_fileData.data(), &m_dosHeader, sizeof(IMAGE_DOS_HEADER));//替换标准PE头memcpy(m_fileData.data() + m_fileHeaderIndex, &m_fileHeader, sizeof(IMAGE_FILE_HEADER));//替换扩展PE头if (m_x86Flag){memcpy(m_fileData.data() + m_optionHeaderIndex, &m_optionalHeader32, sizeof(IMAGE_OPTIONAL_HEADER32));}else{memcpy(m_fileData.data() + m_optionHeaderIndex, &m_optionalHeader64, sizeof(IMAGE_OPTIONAL_HEADER64));}//替换节表for (int i = 0; i < m_sections.size(); ++i){memcpy(m_fileData.data() + m_sectionHeaderIndex + i * sizeof(IMAGE_SECTION_HEADER),&m_sections[i], sizeof(IMAGE_SECTION_HEADER));}return m_fileData;
}void MainWindow::on_btn_expandEndSection_clicked()
{m_peParser.expandEndSection(0x200, 0);QFile file("123.exe");file.open(QFile::WriteOnly | QFile::Truncate);file.write(m_peParser.getFileData());file.close();
}

相关文章:

pe格式从入门到图形化显示(十)-扩展最后一个节

文章目录 前言一、怎么扩展最后一个节&#xff1f;二、扩大节1.扩展节2.保存文件 前言 通过分析和解析Windows PE格式&#xff0c;并使用qt进行图形化显示 一、怎么扩展最后一个节&#xff1f; 在PE文件中&#xff0c;扩大最后一个节通常是通过修改PE文件头中的节表来实现的。…...

设计模式之创建型模式---建造者模式

文章目录 建造者模式概述经典的建造者模式建造者模式的变种总结 建造者模式概述 建造者模式是一种广泛使用的设计模式&#xff0c;在三方开源库和各种SDK中经常见到。建造者设计模式在四人帮的经典著作《设计模式&#xff1a;可复用面向对象软件基础》中被提及&#xff0c;它的…...

如何从零开始训练一个语言模型

如何从零开始训练一个语言模型 #mermaid-svg-gtUlIrFtNPw1oV5a {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gtUlIrFtNPw1oV5a .error-icon{fill:#552222;}#mermaid-svg-gtUlIrFtNPw1oV5a .error-text{fill:#5522…...

Python 设计一个监督自己的软件1

基本要求&#xff1a;每做一件事&#xff0c;软件就会按照事情权重加相应的分数&#xff0c;总分数也会增加&#xff0c;要可视化页面 使用Python编写的一个简单的日常任务记录和评分系统,包括可视化页面。 首先,我们定义一个任务字典,其中包含各种日常任务及其对应的权重分数…...

商家转账到零钱权限开通操作攻略

商家转账到零钱是什么&#xff1f; 商家转账到零钱是微信商户号里的一个功能&#xff0c;很早以前叫企业付款到零钱。 从2022年5月18日&#xff0c;原“企业付款到零钱”升级为“商家转账到零钱”&#xff0c;已开通商户的功能使用暂不受影响&#xff0c;新开通商户可前往「产…...

【DAC‘ 2022】Kite: A Family of Heterogeneous Interposer Topologies

Kite: A Family of Heterogeneous Interposer Topologies Enabled via Accurate Interconnect Modeling 背景和动机 背景动机 工作内容 KITE 拓扑 实验方法和评估结果 Kite: A Family of Heterogeneous Interposer Topologies Enabled via Accurate Interconnect Modeling 通…...

数据结构—堆

什么是堆 堆是一种特殊的树形结构&#xff0c;其中每个节点都有一个值。堆可以分为两种类型&#xff1a;最大堆和最小堆。在最大堆中&#xff0c;每个节点的值都大于等于其子节点的值&#xff1b;而在最小堆中&#xff0c;每个节点的值都小于等于其子节点的值。这种特性使得堆…...

Kubernetes学习笔记8

Kubernetes集群客户端工具kubectl 我们已经能够部署Kubernetes了&#xff0c;那么我们如何使用Kubernetes集群运行企业的应用程序呢&#xff1f;那么&#xff0c;我们就需要使用命令行工具kubectl。 kubectl就是控制Kubernetes的驾驶舱&#xff0c;它允许你执行所有可能的Kube…...

[渗透利器]在线渗透测试工具箱?测评

前言 hxd更新完了在线工具箱&#xff0c;受邀写一下使用体验以及测评 使用体验 这个工具箱设计的比较轻便&#xff0c;以往用过的工具箱大多都是以离线打包的方式发布&#xff0c;该工具箱&#xff0c;作者自己掏钱自己买服务器&#xff0c;自己买带宽&#xff0c;先生大义。…...

rocketmq和rabbitmq总是分不清?

1. 官方解答 摘自百度搜索&#xff1a; 2. 通俗易懂的回答...

利用Python ARM网关仓储物流AGV小车控制器

在现代智慧物流体系中&#xff0c;高效的信息管理系统是物流中心实现精准跟踪货物、科学管理库存及优化配送路线的关键环节。通过采用ARM架构的工控机或网关&#xff0c;并结合Python的二次开发能力&#xff0c;可以有效集成并强化物流管理系统的数据处理与通信功能&#xff0c…...

Transformer详解和知识点总结

目录 1. 注意力机制1.1 注意力评分函数1.2 多头注意力&#xff08;Multi-head self-attention&#xff09; 2. Layer norm3. 模型结构4. Attention在Transformer中三种形式的应用 论文&#xff1a;https://arxiv.org/abs/1706.03762 李沐B站视频&#xff1a;https://www.bilibi…...

【Ubuntu】update-alternatives 命令详解

1、查看所有候选项 ​​​​​​​sudo update-alternatives --list java 2、​​​​​​​更换候选项 sudo update-alternatives --config java 3、自动选择优先级最高的作为默认项 sudo update-alternatives --auto java 4、删除候选项 sudo update-alternatives --rem…...

数据结构之堆练习题及PriorityQueue深入讲解!

题外话 上午学了一些JavaEE初阶知识,下午继续复习数据结构内容 正题 本篇内容把堆的练习题做一下 第一题 1.下列关键字序列为堆的是:( A ) A: 100,60,70,50,32,65 B: 60,70,65,50,32,100 C: 65,100,70,32,50,60 D: 70,65,100,32,50,60 E: 32,50,100,70,65,60 …...

MySQL——Linux安装包

一、下载安装包 MySQL下载路径&#xff1a; MySQL :: MySQL Downloads //默认下载的企业版MySQL 下载社区版MySQL MySQL :: MySQL Community Downloads 1、源码下载 2、仓库配置 3、二进制安装包 基于官方仓库安装 清华centos 软件仓库&#xff1a; Index of /cen…...

MySQL学习笔记(数据类型, DDL, DML, DQL, DCL)

Learning note 1、前言2、数据类型2.1、数值类型2.2、字符串类型2.3、日期类型 3、DDL总览数据库/表切换数据库查看表内容创建数据库/表删除数据库/表添加字段删除字段表的重命名修改字段名&#xff08;以及对应的数据类型&#xff09; 4、DML往字段里写入具体内容修改字段内容…...

Asible管理变量与事实——管理变量(1)

Ansible简介 Ansible支持利用变量来储存值&#xff0c;并在Ansible项目的所有文件中重复使用这些值。这可以简化项目的创建和维护&#xff0c;并减少错误的数量。 通过变量&#xff0c;您可以轻松地在Ansible项目中管理给定环境的动态值。例如&#xff0c;变量可能包含下面这些…...

【微服务】------微服务架构技术栈

目前微服务早已火遍大江南北&#xff0c;对于开发来说&#xff0c;我们时刻关注着技术的迭代更新&#xff0c;而项目采用什么技术栈选型落地是开发、产品都需要关注的事情&#xff0c;该篇博客主要分享一些目前普遍公司都在用的技术栈&#xff0c;快来分享一下你当前所在用的技…...

【SCI绘图】【小提琴系列1 python】绘制按分类变量分组的垂直小提琴图

SCI&#xff0c;CCF&#xff0c;EI及核心期刊绘图宝典&#xff0c;爆款持续更新&#xff0c;助力科研&#xff01; 本期分享&#xff1a; 【SCI绘图】【小提琴系列1 python】绘制按分类变量分组的垂直小提琴图&#xff0c;文末附完整代码 小提琴图是一种常用的数据可视化工具…...

docker------docker入门

&#x1f388;个人主页&#xff1a;靓仔很忙i &#x1f4bb;B 站主页&#xff1a;&#x1f449;B站&#x1f448; &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;Linux &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#…...

对于对话中的用户长期兴趣建模,OpenClaw 的序列推荐方法?

关于对话系统中如何捕捉用户长期兴趣这件事&#xff0c;业内琢磨了挺长时间。传统的序列推荐模型&#xff0c;比如那些基于循环神经网络或者注意力机制的&#xff0c;往往更擅长处理短期的、密集的交互序列。它们像是一个敏锐的现场观察者&#xff0c;能立刻抓住你刚才点击了什…...

C#安装步骤以及流程易出错提醒修正

C# 开发环境安装步骤 Visual Studio 安装 从 Microsoft 官网 下载 Visual Studio Community&#xff08;免费版本&#xff09;。运行安装程序&#xff0c;选择“使用 C# 的桌面开发”工作负载&#xff0c;确保勾选 .NET SDK 和核心组件。 验证安装 打开命令提示符或 PowerShe…...

网络异常排查:快速定位域连接问题

问题描述与初步排查网络位置异常通常表现为计算机无法正确识别当前所在的AD域环境&#xff0c;导致访问域资源受限或登录问题。常见症状包括系统托盘显示“无法访问域”、组策略无法应用、DNS解析失败等。检查计算机是否能够ping通域控制器的主机名和IP地址。使用nslookup命令验…...

微信小程序蓝牙打印中文乱码?手把手教你GBK编码转换(附完整Demo)

微信小程序蓝牙打印中文乱码终极解决方案&#xff1a;从编码原理到完整实现 蓝牙打印机在零售、餐饮等行业的应用越来越广泛&#xff0c;而微信小程序作为轻量级应用平台&#xff0c;与蓝牙打印机的结合为商家提供了便捷的移动打印方案。但在实际开发中&#xff0c;开发者经常会…...

音乐播放器界面定制指南:foobar2000美化方案与体验提升

音乐播放器界面定制指南&#xff1a;foobar2000美化方案与体验提升 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 在数字音乐时代&#xff0c;播放器已不仅是播放工具&#xff0c;更是个人音乐品味的…...

完整指南:在浏览器中创建惊艳WebGL流体模拟效果的5个关键技巧

完整指南&#xff1a;在浏览器中创建惊艳WebGL流体模拟效果的5个关键技巧 【免费下载链接】WebGL-Fluid-Simulation Play with fluids in your browser (works even on mobile) 项目地址: https://gitcode.com/gh_mirrors/web/WebGL-Fluid-Simulation 想要在浏览器中体验…...

保姆级教程:用BERT微调一个智能家居语音助手的意图识别模型(含完整代码)

智能家居场景下的BERT意图识别实战&#xff1a;从数据标注到模型部署 想象一下&#xff0c;当你对家里的智能音箱说"把客厅灯调暗一点"时&#xff0c;设备能准确理解你的意图并执行操作。这种自然交互的背后&#xff0c;是意图识别技术在发挥作用。不同于通用对话系…...

GEE实战指南:Sentinel-2多光谱植被指数批量计算与优化

1. 为什么需要植被指数&#xff1f; 植被指数是遥感领域用来量化植被生长状态的核心指标。简单来说&#xff0c;就像医生用体温计判断病人是否发烧一样&#xff0c;我们可以通过卫星数据计算出的植被指数&#xff0c;快速了解一片区域的植被健康状况。Sentinel-2卫星提供的多光…...

Stable-Diffusion-V1-5 效率工具集:Ollama本地LLM辅助提示词生成

Stable-Diffusion-V1-5 效率工具集&#xff1a;Ollama本地LLM辅助提示词生成 你是不是也遇到过这种情况&#xff1a;脑子里有个绝妙的画面&#xff0c;但打开Stable Diffusion&#xff0c;面对那个空白的提示词输入框&#xff0c;却不知道从何写起。要么写得太简单&#xff0c…...

lychee-rerank-mm与LangChain整合:构建智能文档检索系统

lychee-rerank-mm与LangChain整合&#xff1a;构建智能文档检索系统 1. 引言 想象一下这样的场景&#xff1a;你在一家律师事务所工作&#xff0c;每天需要从成千上万份法律文书中快速找到与当前案件相关的资料。传统的全文搜索只能帮你找到包含关键词的文档&#xff0c;但无…...