【PE】手动给PE文件添加一段代码MessageBoxA
源程序是这个样子:
思路:
1、通过LordPE工具拿到所需数据
2、OllyDebug通过BP MessageBoxA拿到MessageBoxA地址
3、UE十六进制编辑器定位代码节基址
4、在代码节找到一处空白区
5、写入代码对应的十六进制数据
6、Call到MessageBoxA,Call:E8
7、Jmp到原OEP,Jmp:E9
8、修改原OEP为写入数据地址
准备工作:
测试程序
LordPE工具
OllyDebug
UE十六进制编辑器
通过LordPE工具拿到所需数据:
AddressOfEntryPointer(OEP) :0005CDD1
ImageBase :
.text(VOffset) :
.text(Vsize) : 0007A4F2
通过OllyDebug的指令拿到MessageBoxA地址:
MessageBoxA : 767674C0
实战开始
定位代码节尾部:VOffset + VSize = 00001000 + 0007A4F2 = 7B4F2
我在这行的下一行找到空白区:0007b500
MessageBoxA参数压栈,假设参数都为0,那么有(push 0)*4,
对应十六进制:6A 00 6A 00 6A 00 6A 00,OKey,填进去。
压栈后可以Call MessageBoxA了。
Call的实际地址需要转换,转换公式:
要Call的地址 - (Call所在内存地址+5) = MessageBoxA地址 - (47B508+5) = 767674C0 - (47B508+5) = 762EBFB3
所以Call MessageBoxA对应十六进制:E8 B3 BF 2E 76
假设程序执行到这了,写入的代码执行完毕后就要Jmp原OEP干它应该干的活了。
Jmp到原地址,同样按照上面的地址转换对应十六进制:E9 BF 18 FE FF
修改原OEP为写入代码的地址,也就是刚才找的空白区:0007b500
通过PE结构的方式定位到原OEP根据地,OEP在IMAGE_OPTIONAL_HEADER的AddressOfEntryPointer,具体偏移相对可选头0x10位置
改为刚才的写入代码的地址
Ok,测试一下改过后的程序效果
它会先执行写入的代码,弹出一个弹框
然后再做它应该做的
只是记录一下操作流程,这个是最简单的,文件对齐和内存对齐一样,不用RVA什么的转化地址,将代码写入代码节,不用改节属性。
【PE】手动给PE文件添加一段代码MessageBoxA的更多相关文章
- PE格式第五讲,手工添加节表
PE格式第五讲,手工添加节表 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 首先我们要用汇编编写一段汇编代码,用来生成 ...
- (免量产,免格式化)手动将PE安装到移动硬盘/U盘或无系统硬盘!
在一台没有装系统的电脑上,只要把XP系统启动文件,及引导菜单文件(ntldr,boot.ini,”bootfont.bin这个可有可无,主要作用是显示中文菜单”)和GRUB引导文件和PE系统文件复制到 ...
- [系统安全] 十六.PE文件逆向基础知识(PE解析、PE编辑工具和PE修改)
[系统安全] 十六.PE文件逆向基础知识(PE解析.PE编辑工具和PE修改) 文章来源:https://masterxsec.github.io/2017/05/02/PE%E6%96%87%E4%B ...
- 手动编译Jsp文件
手动模拟Tomcat编译jsp文件 Tomcat编译jsp文件的配置路径是在%tomcat_home%/conf/web.xml中,有这样一段代码 <servlet> <servle ...
- Swift3.0服务端开发(二) 静态文件添加、路由配置以及表单提交
今天博客中就来聊一下Perfect框架的静态文件的添加与访问,路由的配置以及表单的提交.虽然官网上有聊静态文件的访问的部分,但是在使用Perfect框架来访问静态文件时还是有些点需要注意的,这些关键点 ...
- 如何在hosts文件添加自己想要解析的网站?及修改hosts的作用
http://union.zhuna.cn/help/144.asp 在Windows2003/XP系统中位于C:\Winnt\System32\Drivers\Etc 目录中,找到host文件. 首 ...
- Chromium添加一段新字符串
参考:https://groups.google.com/a/chromium.org/forum/#!searchin/chromium-dev/tclib%7Csort:relevance/chr ...
- 通过重写.htaccess文件添加404
如果说是用linux服务器的系统 想要给自己的网站设置404怎么弄?如果你不会给自己的Ecs服务器添加服务器管理系统,或是你购买的云虚拟主机没有304.404设置,那么就要通过自己重写文件来设置404 ...
- 如何给现有的PDF文件添加页码
如何给现有的PDF文件添加页码 之前我写了如何打印PDF文件,有人qq问我怎样在打印时给PDF文件添加页码,的确,给PDF文件添加页码,可以帮助我们区分纸质档的PDF文件页面的先后顺序,方便我们对它的 ...
随机推荐
- 37、解决 HTMLTestRunner 中文显示乱码的问题
1.在自己的测试脚本中加入下面的代码并保存: # -.- coding:utf-8 -.- import sys reload(sys) sys.setdefaultencoding('utf-8') ...
- React.js 小书 Lesson3 - 前端组件化(二):优化 DOM 操作
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson3 转载请注明出处,保留原文链接和作者信息. 看看上一节我们的代码,仔细留意一下 change ...
- HDU 2255 ——奔小康赚大钱——————【KM算法裸题】
奔小康赚大钱 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- vscode好用的扩展及常用的快捷键
1.open-in-browser 或者view in browser 安装后右键即可快速打开浏览器 2.quokka调试工具插件,能对正在编写的代码提供实时反馈,并能预览变量的函数和计算结果 3. ...
- 利用jquery给指定的table动态添加一行、删除一行,复制,值不重复等操作
$("#mytable tr").find("td:nth-child(1)") 1表示获取每行的第一列$("#mytable tr").f ...
- 显卡(GPU)的基础知识
显卡的性能指标有: 流处理器(SP)数量 核心频率 流处理器的架构 显存容量 显存频率 显存带宽 1. 流处理器的数量 把一个GPU当成是一个画画的工厂,其中流处理器的数量就是画师的数量,其数量自然是 ...
- form提交
方法一:利用form的onsubmit()函数(经常使用) <script type="text/javascript"> function validateForm( ...
- Android基础Activity篇——其他隐式Intent
1.使用隐式Intent调用浏览器 修改FirstActivity中的按钮点击事件代码. Intent intent=new Intent(Intent.ACTION_VIEW); intent.se ...
- 吴超hadoop7天视频教程全集
吴超hadoop7天视频教程全集 一.初级班全套视频 1.linux使用(3节) 2.伪分布模式安装hadoop(2节) 3.HDFS的体系结构和操作(2节) 4.HDFS的java操作方式(4节) ...
- MySql 8.0.11 在win10下的zip非安装配置
在win10使用mysql8.0.11的zip包进行配置时,搜到的教程很多坑,特此总结成功配置的方法. 1.下载非安装的zip包 mysql 8.0.11 64位 2.解压zip包 将下载的zi ...