如何直接修改exe文件
2013-03-31 14:32
176 查看
在以前学习的时候,无法想象在没有源码的时候如何对exe文件添加功能,觉得简直不可思议,在了解汇编和反编译的一些知识后,原来这种想法是可以实现的。我们需要对exe文件进行直接修改,把我们的代码直接写入exe文件,这样就能实现我们的功能了。
当然,要想直接对exe文件进行直接修改必须有较好的汇编基础,对反汇编技术有一定的基础。否则会很茫然的。
一般有两种方法可以对exe文件添加我们需要的功能。
第一种是利用页面的对齐机制,因为一般来说,每节的最后一页多少都有空余的空间,也就是说最后一页一般不会被用完,由于下一个节开始的时候是要对齐页面的,所以这中间就由多余的空间让我们写代码了。我们可以利用工具直接把内存虚拟和文件偏移地址进行转换来得到文件偏移位置,这个位置就是我们最终要把机器码写入的地方。
第二种是我们自己在exe文件种添加一个节,这个节专门用来写我们的代码。这样做好处更多,因为我们可以任意指定这个节的大小,而上一种方法是利用节之间的空隙来写我们的代码,如果代码较多的时候我们能就不好办了,所以第二种方法更具有通用性,但相对来说第一种更容易些。这里大家要注意一下,如果我们直接增加节的话,最好把节分配的空间设置为页面大小的整数倍,文件中分配空间的大小也分配成和虚拟空间的大小一样即可,一般文件的块对齐大小比页面的块对齐尺寸更小。
还要注意的一点就是,如果我们对exe文件增加节以后,可能会出现exe文件无法运行的情况,这时候一般我们对exe文件进行重建就可以了。
希望能对喜欢反汇编的朋友能有帮助
当然,要想直接对exe文件进行直接修改必须有较好的汇编基础,对反汇编技术有一定的基础。否则会很茫然的。
一般有两种方法可以对exe文件添加我们需要的功能。
第一种是利用页面的对齐机制,因为一般来说,每节的最后一页多少都有空余的空间,也就是说最后一页一般不会被用完,由于下一个节开始的时候是要对齐页面的,所以这中间就由多余的空间让我们写代码了。我们可以利用工具直接把内存虚拟和文件偏移地址进行转换来得到文件偏移位置,这个位置就是我们最终要把机器码写入的地方。
第二种是我们自己在exe文件种添加一个节,这个节专门用来写我们的代码。这样做好处更多,因为我们可以任意指定这个节的大小,而上一种方法是利用节之间的空隙来写我们的代码,如果代码较多的时候我们能就不好办了,所以第二种方法更具有通用性,但相对来说第一种更容易些。这里大家要注意一下,如果我们直接增加节的话,最好把节分配的空间设置为页面大小的整数倍,文件中分配空间的大小也分配成和虚拟空间的大小一样即可,一般文件的块对齐大小比页面的块对齐尺寸更小。
还要注意的一点就是,如果我们对exe文件增加节以后,可能会出现exe文件无法运行的情况,这时候一般我们对exe文件进行重建就可以了。
希望能对喜欢反汇编的朋友能有帮助
相关文章推荐
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- 【API】直接读取修改exe文件
- 如何修改VC编译后生成的EXE文件的图标
- MFC中如何修改生成的exe文件图标
- OBS源码阅读笔记--如何修改录播文件路径到exe所在目录
- VS2010+OpenCV 项目生成EXE文件如何在其他电脑上直接运行
- 如何将Debug文件夹下的资源打包成一个EXE文件直接执行
- MFC中如何修改生成的exe文件图标
- 如何重新找到在Windows Live Mail 中直接打开修改保存并且不小心关闭的文件
- 通过直接读取修改exe文件的方式编写远控/木马配置器
- 如何将JAVA程序制作成可以直接执行的exe文件
- 如何修改应用程序的图标以及exe文件的图标
- VS2010+OpenCV 项目生成EXE文件如何在其他电脑上直接运行
- 如何将Debug文件夹下的资源打包成一个EXE文件直接执行
- 如何将VC++程序纯净打包(VS2013+OpenCV 2.4.9项目生成EXE文件如何在其他电脑上直接运行)
- 如何在Linux单用户模式下修改fstab文件
- Android 修改现有ROM资源文件如何实现
- 详解SQL Server如何修改数据库物理文件的存在位置
- 直接修改别人jar包里面的class文件 工具:jclasslib
- Qt学习笔记:如何运行Qt程序所生成的.exe文件