【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 :      00400000

.text(VOffset) :      00001000

.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什么的转化地址,将代码写入代码节,不用改节属性。

原文地址:https://www.cnblogs.com/biaoge140/p/9108624.html

时间: 2024-08-29 07:19:34

【PE】手动给PE文件添加一段代码MessageBoxA的相关文章

Markdown添加整段代码

tools(工具)  --->  options(选项)  --->  Markdown  ===> 然后更改Markdown处理器为GitHub风格,点击保存并关闭后即可 [需要注册] [附注册码] 邮箱: [email protected] 授权秘钥: GBPduHjWfJU1mZqcPM3BikjYKF6xKhlKIys3i1MU2eJHqWGImDHzWdD6xhMNLGVpbP2M5SN6bnxn2kSE8qHqNY5QaaRxmO3YSMHxlv2EYpjdwLcPwfeTG

(免量产,免格式化)手动将PE安装到移动硬盘/U盘或无系统硬盘!

在一台没有装系统的电脑上,只要把XP系统启动文件,及引导菜单文件(ntldr,boot.ini,”bootfont.bin这个可有可无,主要作用是显示中文菜单”)和GRUB引导文件和PE系统文件复制到主分区,就可以启动了! 不过要保证三个条件1,属于主分区2,是活动分区3,有PE系统文件(我的GRUB菜单中PE指向的是WMPE目录下的WMPE.BIN文件,如果你想启动你的,需手动修改)(注:需要先把移动硬盘/U盘或无系统硬盘写入NT5或NT6的MBR和PBR,或者先用NT5或NT6系统磁盘管理进

iOS开发——pch文件添加和使用

添加pch文件 Xcode6之后不会自动创建-Prefix.pch文件到你的工程里,所以我们想使用pch文件的话得自己手动导入,下面就介绍下如何手动添加pch文件到工程目录中去. (1)打开你已经存在的XCODE工程. 选择 File > New > File > iOS > Other > PCH File 然后点击下一步. (2)给你的PCH文件起名字projectName-Prefix.pch. 例如你的项目工程名为smallDemo然而你的PCH 文件的名字应该为 s

Chromium添加一段新字符串

参考:https://groups.google.com/a/chromium.org/forum/#!searchin/chromium-dev/tclib%7Csort:relevance/chromium-dev/zlAabuSVjGE/ozF2gqzaAiQJ 1.在generated_resources.grd文件中添加一段如下格式字符串: <message name="IDS_TOOLTIP_DOWNLOADS" desc="The tooltip for

Swift3.0服务端开发(二) 静态文件添加、路由配置以及表单提交

今天博客中就来聊一下Perfect框架的静态文件的添加与访问,路由的配置以及表单的提交.虽然官网上有聊静态文件的访问的部分,但是在使用Perfect框架来访问静态文件时还是有些点需要注意的,这些关键点在其官方文档上并未提出.今天我们要做的事情就是通过浏览器访问静态文件,然后在静态文件中使用form表单往指定的路由上进行提交相应的数据. 一.静态文件的添加与访问 1.未使用Xcode管理的Perfect的静态文件根目录的配置 在PHP开发或者Java Web开发中,都有一个根目录来存储相应的静态文

怎么手动把pdf文件转换成word

怎么手动把pdf文件转换成word 刚上大学的时候以为毕业论文很好写,就相当于写作文一样.四年过去了,当我面对这5000字的 毕业论文时,感觉就不那么简单了.索性直接从网上搜索资料,再进行改写吧.方法倒是好的.可是谁料网上的资料大部分都是pdf格式的,不能进行行编辑.同 学告诉我只能将它转换成word格式再编辑.可是怎么将pdf转换成word文字? 方法一:用Office 2003中的Microsoft Office Document Imaging组件把PDF文件转换成word,也就是用wor

InstallShiled安装包自动化编译、文件添加

这段时间对自动化编译比较来劲,做的产品需要应对多个行业部门,打包工程已经拆了3份.每个工程文件有不尽相同. 打包的时候生怕文件收到添加错误,想来想去感觉还是脚本添加文件比较靠谱. 想到一个比较靠谱的解决方案: 获取打开InstallShiled安装包 查了下InstallShiled帮助本身有自动化接口,可以通过COM接口获取到. InstallShield 2010 ? Automation Interface 添加文件 打包工程添加需要的文件 脚本编写 如果需要有些脚本可以通过外部编写然后添

atitit.手动配置列表文件的选择and 数据的层次结构 attilax总结最佳实践--yaml

atitit.手动配置列表文件的选择and 数据的层次结构 attilax总结最佳实践--yaml 1. yaml是个好的选择.. 1 2. 数据的层次结构--结构:hash,list,和block literal. 1 3. yaml跟json的实现区别 1 4. xml的优点及json的问题 2 4.1. ide友好 2 4.2. JSON也适合与任何数据,复杂struts难以阅读 2 4.3. json难以手工维护 3 5. 基于YAML的开源项目解析YAML文件最常用的Java库是JvY

git中手动删除的文件如何在git中删除

在日常开发中,我们可能或手动删除(delete键删除的)一些文件,然而我们本来应该是用git rm fileName命令删除的,但是现在我们手动删除了,那么要如何在git里面讲那些手动删除的文件删除呢? 我们这里有两种方法可以在git中删除那些手动删除(delete键删除的)的文件: 第一种就是用 git rm files 删除你手动删除的文件或文件夹. 当然,如果你删除的文件有很多,而且分布在不同的文件夹中,使用第一种 git rm files 的方法,显然不方便,效率也很低下,那么有没有更快