首先先了解一下PE文件:

PE(Protable Executable),即可移植的执行体。在Windows操作系统平台下,所有的可执行文件如EXE文件、DLL文件、SYS文件、OCX文件、COM文件等均使用PE结构。

PE文件结构包含的结构体有DOS头、PE标识、文件头、可选头、目录结构、节表等。

这篇文章主要是对DOS头的一些想法,DOS头主要分为两部分即“MZ头部”和“DOS存根”。MZ头部是真正的DOS头,而DOS存根则是一段简单的DOS程序,主要用来输出类似“This program cannot be run in DOS mode.”的提示语句,由于DOS存根里的内容无关紧要,所以可以把这部分用来存储其他数据而不改变程序原本的功能。

下面是笔者对DOS存根写入数据的想法:

首先,写一个简单的看起来似乎没有什么用处的小程序:

找到编译后生成的exe文件后,用C32Asm打开该exe文件:

这里选择16进制模式打开,在开始处我们可以看到MZ头:

向下溯源,发现PE头的首地址,即00 00 00 0F(这里的十六进制地址是以小尾方式存储的):

通过PE头的首地址,我们找到PE头的具体位置,这里也看得到PE头:

找到PE头得位置后,那么PE头与MZ头之间的那一部分就是我们需要找的DOS存根部分了:

在DOS存根部分,我们也能够看到“This program cannot be run in DOS mode”的提示字符串,接下来需要做的就是通过修改DOS存根的内容来将自己想加入的东西写入程序,而不影响程序的正常使用。笔者在这里用到的内容是:“这是我的博客:https://blog.csdn.net/song_10,欢迎关注!”,不过我并不想别人用反汇编工具载入这个exe文件就可以看到我修改的信息,所以在这里用base64对这一字符串进行简单的加密,得到:“6L+Z5piv5oiR55qE5Y2a5a6i77yaaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NvbmdfMTDvvIzmrKLov47lhbPms6jvvIE=”,下面进入C32Asm来将我的信息写入到DOS存根当中:

修改后保存程序,然后打开EXE文件,发现可以成功打开,但程序并没有显示之前所添加的信息:

接着将修改的程序重新载入C32Asm中,能够在DOS存根的部分看到自己加入的信息:

说明已经成功将我们想加入的内容写入一个EXE的可执行文件当中了,这时又想误导一下别人这个exe可以执行文件损坏不能打开,进而对自己加入的信息进一步“加密”,那么我们就可以对PE头动一些手脚。

首先需要了解一下PE头的作用:用来装载PE文件。

如果对PE头进行修改,那么系统就不能正常装载PE文文件,进而就营造处该文件已损坏的假象,达到目的。

同样是在C32Asm中,对PE头随意修改一个字符(修改太多的话不容易恢复,那就真正成了损坏的PE文件了):

这里,笔者将E修改为e,保存后,找到EXE文件双击打开,出现以下提示,说明目的达到:

如果想要程序正常打开,那么只需将修改PE头的内容改回原来的内容就可以了。这里除了可以修改PE头的内容来达到目的之外

还可以对MZ头进行修改,同样能够达到相同的目的(MZ头:EXE文件标志)


 

PE文件中对DOS存根的一些想法相关推荐

  1. pe文件中的3处Characteristics

    首先:pe文件结构 1.DOS头,对应结构体IMAGE_DOS_HEADER. 2.DOS存根,大小不定,由编译器决定,没有对应的结构体. 3.NT头,对应结构体IMAGE_NT_HEADER,包括3 ...

  2. 向PE文件中空白处添加代码

    // mem.cpp : 定义控制台应用程序的入口点. //PE文件从文件加载到内存,再从内存读取,然后存盘到文件#include "stdafx.h" #include < ...

  3. FindResource提取PE文件中的资源

    PE文件的资源为一个隐藏的PE文件,使用FindResource把它给提取出来,顺便理解一下资源函数的使用 // test.cpp : 定义控制台应用程序的入口点. //#include " ...

  4. 第八章 PE文件 windows程序设计 王艳平版

    /// // ValidPE.h文件 #include <afxwin.h> class CMyApp : public CWinApp { public: virtual BOOL In ...

  5. 【黑客免杀攻防】读书笔记6 - PE文件知识在免杀中的应用

    0x1 PE文件与免杀思路 基于PE文件结构知识的免杀技术主要用于对抗启发式扫描. 通过修改PE文件中的一些关键点来达到欺骗反病毒软件的目的. 修改区段名 1.1 移动PE文件头位置免杀 工具:PeC ...

  6. 小甲鱼 OllyDbg 教程系列 (二) :从一个简单的实例来了解PE文件

    小甲鱼视频讲解: https://www.bilibili.com/video/av6889190?p=6 https://www.bilibili.com/video/av6889190?p=7 从 ...

  7. [re入门]PE文件小知识

    从PE入手的信息收集,让恶意样本无处可逃 一. PE文件格式的基础知识 1.1 认识PE文件 1.2 整体结构 1.3 基地址 1.4 相对虚拟地址 1.5 文件偏移地址 1.6 结构 1.6.1 D ...

  8. PE文件(一)PE头

    PE文件结构(一)PE头 12/100 发布文章 qq_63329753 未选择任何文件 new PE文件结构 PE(Portble Executable File Format,可移植的执行体文件格 ...

  9. PE文件到内存的映射学习总结

    PE文件到内存的映射 http://www.cnblogs.com/qintangtao/archive/2013/01/28/2880606.html 在执行一个PE文件的时候,windows 并不 ...

最新文章

  1. python生成有条件的列表_python复杂列表生成式教程
  2. android 停用应用的命令,免Root使用ADB命令_停用手机系统应用
  3. linux shell 杀进程 kill 包含关键字的进程
  4. pyecharts line_base绘图只有坐标轴,数据不再数轴上显示
  5. PIC单片机精通_ADC左对齐与右对齐的数据读取问题
  6. 初识python代码
  7. SpringBoot+Redis 搞定搜索栏热搜、不雅文字过滤功能
  8. 解决文件上传_使用FastDfs上传头像上传不成功的问题---SpringCloud Alibaba_若依微服务框架改造---工作笔记002
  9. web框架--MVC、MTV
  10. 自主安全国产虚拟化平台CNware
  11. junit 单元测试插入操作事务回滚
  12. PHP简易留言板项目
  13. 迷失lost结局什么意思_迷失 美剧 结局是什么
  14. Android安全攻防战,反编译与混淆技术完全解析(下)
  15. 运维知识讲解之电脑局域网服务器的密码设置和修改
  16. Python数据分析_美国犯罪数据_US_Crime_Rates EDA.csv
  17. 微信小程序------API
  18. mysq coun(*)时为啥这么慢
  19. js实现刷新当前页面
  20. matlab牛顿法解非线性方程组,matlab实现牛顿迭代法求解非线性方程组.pdf

热门文章

  1. linux下的磁盘状态查看方式
  2. ENSP网络综合实验
  3. keras实战项目:CIFAR-10 图像分类
  4. sed实战之——删除空行(包括由空格组成的空行)
  5. 白化病最新研究进展(2021年9月)
  6. 接口测试—-工具篇,实现接口自动化
  7. esp8266驱动电机
  8. scandir函数详解
  9. 精华回顾|观测云CEO蒋烁淼QCon大会《技术创业的体悟》演讲分享
  10. 微信小程序支付退款功能