pe节空白区添加的代码

news2024/11/27 0:19:38

再此之前需要了解节表(假设我们都理解了)

以一个程序为例:

如上图所示一个正长的程序运行后是这样的,我们想对该程序做点手脚,在弹出该页面之前,先弹出我们给他指定的东西。

最终实现结果:

首先弹出我们指定的页面,然后在弹出正常页面。

首先我们知道pe结构式分块的,在块与块之前是有空隙的,而我们可以在此做手脚。

首先先计算出我们要插入数据的硬编码大小。(这里我们要插入的是一个messagebox函数,他带有4个参参数)对应的硬编码分别是:push 6a call e8 jmp e9

call+ 我们设定的地址

jmp+跳转回oep地址

call,jmp后均加个字节硬编码

计算

E8(call)和E9(jmp)计算公式:
call的硬编码:E8

需要注意的是:E8后面会跟着四个字节的数据,表示转换后的偏移(通过这五个字节数据就可以执行想让程序执行的函数)
jmp的硬编码:E9
与call的硬编码一样,它后面同样会跟着四个字节的数据,表示转换后的偏移(通过这五个字节我们可以实现:程序执行完我们添加进去的代码后回到正常执行的地址)
计算E8和E9的公式:
这里需要计算的是E8和E9后面跟着的四个字节数据,我们用X来表示
我们先来给大家给出一个公式:

函数真正执行的地址 = E8后面一条指令的地址 + X(E8后面跟着的四个字节数据)

那么我们就可以得到:

X=程序真正执行的地址 —E8后面一条指令的地址

而我们知道E8(E9)后面跟着四个字节数据,那么E8(E9)后面一条指令的地址就应该是E8(E9)的地址+5(E8(E9)本身占据一字节)
那么我们就得到了E8(E9)的计算公式:

X = 程序真正执行的地址—(E8(E9)的地址 + 5)

这里给出我自己的理解:这里的X就是相对E8(E9)指令的偏移,我感觉这样的话会更好理解,当然如果大家有更好的理解或者是X的本质可以在文章后面评论,我会非常虚心地接受。
需要特别注意的是:这里的X是指磁盘文件拉伸后的地址,不是FileBuffer地址!

对应的硬编码为:

首先查看一下该程序的区段:我们就在.text阶段进行操作。

进行操作之前首先我们要先判断该节区空间够不够用。

真实数据大小:viruralsize 0x19722
文件中对齐后大小:sizeofrvadata 0x1a000
判断空间是否还够:做差 8de 可以注入


.text在文件种的区域范围:1000-1b000
插入数据的部分

目标地址( 0x7684b730)=call下一条指令的地址(0x00416cbd)+call后边的硬编码
call后硬编码:7643 0ff3
jmp后:目标地址(oep4183d7)=jmp(41a742)+jmp后硬编码

jmp后编码 :FFFFdc95

修改oep:1a730

然后保存退出即可。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

尚硅谷谷粒商城项目笔记——八、安装node.js【电脑CPU:AMD】

八、安装node.js 注: [!NOTE] 查看本机系统 官网选择node.js版本 1傻瓜式安装,注意选择路径 图一 图二 至此,nodejs安装完成! 2环境配置 找到安装nodejs的路径新增 node_global 和node_cache文件夹 创建完两个空文件夹&#x…

【学习总结】MySQL篇

MySql 事务ACID 原子性 事务是不可分割的最小单元,一个事务的若干sql操作。要么统一成功,要么统一失败。(redoLog) 持久性 数据库的数据在宕机,丢失数据的情况下。可以回滚数据,这由mysql的日志完成&a…

快讯 | Meta Llama 4模型:24万GPU打造,将于2025年登场!

在数字化浪潮的推动下,人工智能(AI)正成为塑造未来的关键力量。硅纪元视角栏目紧跟AI科技的最新发展,捕捉行业动态;提供深入的新闻解读,助您洞悉技术背后的逻辑;汇聚行业专家的见解,…

标准IO——文件定位、文件IO

续:feof、ferror(检测一个流是否出错)、clearerr(清除一个流出错的标记)。 一、标准IO文件定位 1、fseek(定位) int fseek(FILE *stream , long offset(偏移长度) , int whence(偏移起始位置)) 其中when…

ROS 7上实现私网互通方案

一、背景: 第一个私网现状:连接公域网是由tp-link进行拨号链接使用动态公网ip,内部网段是192.168.1.0/24 第二个私网现状:连接公域网是机房的固定公网ip,内部网段为10.0.0.0/16二、目标 安全的打通192.168.1.0/24和10.0.0.0/16的网络, 使得前者局域网中的机器能够安全访…

全域运营系统质量对比:各大源码厂商搭建效能解析!

随着全域运营时代的到来,全域运营商的申请热度日渐上升,各大全域运营系统及其背后的源码厂商也因此备受关注。本期,小编将围绕全域运营系统的市场份额、搭建体系以及落地运营三个方面的内容,以帮助大家对各大源码厂商在全域运营系…

Probit 回归模型及 Stata 具体操作步骤

目录 一、文献综述 二、理论原理 三、实证模型 四、稳健性检验 五、程序代码及解释 一、文献综述 Probit 回归模型作为一种重要的统计分析工具,在众多学科领域中发挥着关键作用,吸引了众多学者的深入研究和广泛应用。 在经济学领域,Probi…

python-打分(赛氪OJ)

[题目描述] 最近学校组织了校园歌手大赛,并且让全校师生为歌手评分(分数的范围为 1−100 分),但由于投票系统太过于落后,最后的计票中发现了如下几种票: - 分数大于 100 - 分数小于 1 - 一个最高分 - 一个最…

TOPIK韩语等级考试|韩语语法:被动词和使动词

韩语语法: 被动词与主动词 글쓰기 관련 강좌나 책에서 우리 문장을 쓸 때 웬만하면 피동형을 쓰지 말라는 주장을 흔히 접하게 된다. 능동형 동사를 사용하면 글이 늘어지지 않아 간결해지고 힘찬 문장이 되는 게 사실이다. 그러나 이 주장이 우리글에서 피동형 동…

IDEA自定义注释模版

1.类(接口/枚举等同理) 2.方法模版 先自定义一个模版组,然后在里面添加模版名,触发快捷键(Tab/Enter),模版描述,哪些语言中应用 模版中的自定义参数params和returns可以自动展开参数…

vue3.0学习笔记(五)——Vue3 状态管理 - Pinia

1. 什么是Pinia Pinia是Vue的最新状态管理工具,是Vuex的替代品。pinia官网:Pinia | The intuitive store for Vue.js 提供更加简单的API(去掉了mutation) 提供符合,组合式风格的API(和Vue3新语法统一&…

PhPMyadmin-漏洞复现

前情提要:首先将我们的PHP版本设置在5.5以上 一、通过⽇志⽂件拿Shell 1.搭建好环境后进行管理员登录 2.进入后点击SQL进行sql命令行操作 3.在输入框内输入set global general_logon; 将日志保存设置为开启状态 4.在输入 set global general_log_file 你要将日志…

未授权访问漏洞(非重点 中)

6.Hadoop 1.在 fofa 使用 port"8088" && app"Hadoop" 获取资源 2.打开后若无需登录,则存在漏洞 7.ActiveMQ 1.在 fofa 使用 body"ActiveMQ" && port"8161" 获取资源 2.打开后若点击登录,默认账户密码为 admin/adm…

无线领夹麦克风怎么挑选,2024年8月领夹麦挑选不踩雷攻略

在数字时代的浪潮中,每个人都可以成为自己故事的讲述者。从街头巷尾的Vlog达人,到专业演播室的主持人,再到远程教育的讲师,无线领夹麦克风正悄然改变着音频采集的方式。它不再局限于传统录音棚的束缚,而是融入了日常生…

C:指针学习(1)-学习笔记

目录 前言: 知识回顾: 1、const 1.1 const修饰普通变量 1.2 const修饰指针变量 1.3 总结: 2、指针运算 2.1 指针-整数 2.2 指针-指针 2.3 指针的关系运算 3、指针的使用 结语: 前言: 距离上一次更新关于初…

Java语言程序设计——篇十一(6)

🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳&…

【Python_PySide6学习笔记(三十七)】清空QLayout中所有控件的方法

清空QLayout中所有控件的方法 清空QLayout中所有控件的方法前言正文1、takeAt()方法2、自定义f_clearLayoutFunc()方法3、setParent(None)方法 清空QLayout中所有控件的方法 前言 在 GUI 开发中,当我们使用 PySide6(或兼容的PyQt6)的 QVBox…

Sol盗u、sol链上的USDT盗窃:警惕恶意智能合约

随着区块链技术的普及,Solana链上的应用和用户数量不断增加。然而,这也为不法分子提供了可乘之机,恶意智能合约逐渐成为盗取USDT等加密资产的一种常见手段。本文将详细介绍恶意智能合约的工作原理,并提供防范措施,帮助…

【OpenCV C++20 学习笔记】Canny边缘检测

Canny边缘检测 原理步骤 API实例 原理 Canny边缘检测也称为“最优检测”(optimal detector),它的开发主要有以下3个目标: 低错误率:只检测真实存在的边缘良好的定位:检测出来的边缘与真实的边缘之间的距离要达到最小最小的反馈&…

报错Process exited with an error: 1 (Exit value: 1)

问题描述 运行springboot程序,程序报错 Process exited with an error: 1 (Exit value: 1)打开错误描述,发现是端口8080被占用(我们的端口号未必一致,改成你报错的端口) 问题分析 明确报错内容后,关闭…