一步一步实现在PE文件中添加可执行代码
最近在学习罗云彬老师写的《Windows环境下32位汇编语言程序设计》书中的PE文件,着重分析了下如何在PE文件中添加可执行代码的问题。因为书上对这个程序没有做过多分析,这里我把自己的分析过程及一些问题进行讲解,希望能给初学者一点帮助。
众所周知,PE文件是Windows下的文件格式,包括exe、dll等,那么如何向PE文件中添加可执行代码呢?我们应该有以下这些问题:
1、 可执行代码应该添加到PE文件的什么位置?
2、 如何让添加的代码最先执行?
3、 执行完添加的代码后如何回到原PE文件的起始地址?
4、 添加的代码如何获取需要用到的API地址?
带着这些问题,我们的主题就开始了。
准备知识:
1、 首先你得知道PE文件结构,不然很多问题你不会很明白,附件中有一张我作的PE文件结构的思维导图,希望能对你有帮助。
2、 新加的代码功能很简单,就是在运行这个PE文件之前弹出一个选择对话框,询问是否继续。代码放在后面附件中,请读者先下载看看,后面的讲解中会涉及到。
3、 了解Windows环境下的程序设计,不然你会不知道我在说什么,呵呵。。
好了,废话不多说,我们进入正题。
1、 使用通用控件GetOpenFileName函数打开一个查找文件的对话框,选择想要添加代码的文件。获得文件句柄后,通过内存映射函数CreateFileMapping和MapViewOfFile获取PE文件的起始地址。然后通过对文件的MZ格式文件头和PE头分析该文件是不是有效的PE文件,如果不是直接退出,如果是则进入下一步。这部分的代码比较简单,就直接写在下面了。
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
