恶意软件开发(一)

admin 2023年5月14日21:22:13评论47 views字数 1158阅读3分51秒阅读模式


免责声明文章仅用于技术分享,切勿非法测试,由于传播、利用本公众号朱厌安全团队所提供的信息而造成的后果以及损失,均由使用者本人承担,本公众号朱厌安全团队以及作者不为此承担任何责任!如有侵权烦请告知,我们会立即删除并致歉!



PE文件结构(Portable Executable)

0x01 什么是PE文件结构?

使链接生成的EXE文件能在不同的CPU工作指令下工作,比如COM,PIF,SCR,EXE等,这些文件的格式大部分都继承自PE。其中,EXE是最常见的PE文件,动态链接库(也就是大部分以DLL扩展名的文件)也是PE文件。说了这么多其实PE文件就是一种在磁盘上的文件中组织可执行代码的方法,这样Windows 操作系统组件Loader就可以从磁盘上读取它,并将其作为一个进程加载到内存中执行。

恶意软件开发(一)

接下来咱们就看看PE文件的结构图,确实对于任何人来说这张图片里的内容,都给人一种劝退的感觉,不过咱们目前只需要掌握我们能用到的内容,后面如果用的到的话,咱们就继续在说。

恶意软件开发(一)

看到这么复杂的结构图先不要气馁,咱们先把上述这结构抽象成一本书,

其中 data部分包含书中的内容,metadata部分包含了一些书的信息例如标题,作者姓名,出版商,日期等等。

恶意软件开发(一)

这样我们就可以类比PE的文件结构,其中Header就相当于中上述的metadata部分,他包含了DOS头,PE头,OPTIONAL头,数据目录,节表,

Sections部分其实就是上述的data部分,它包含了PE文件的主要内容,比如可行的代码,加载的一些库文件,被可执行代码的访问的一些变量。接下来咱们就重点关注咱们的Section部分,因为这个部分与我们后面存放的Shellcode息息相关。

0x02 PE SECTIONS

为了更方便看清我们PE文件的结构,这里我就直接使用了PE-Bear详细去看一下这个sections部分

恶意软件开发(一)

这里我们可以非常直观的看到section header出现的一些细节,下面就通俗易懂的解释一下这些节主要存放的是什么。

  • .text 这个节包含了可执行的代码.

  • .rdata 这个节主要是保存常量数据的节,对应C语言中的常数和常量字符串

  • .data 保存数据的节。这个对应C语言中已初始化的全局变量的数据

  • .pdata 保存的是函数表,它主要用于异常处理,特别是在程序执行期间发生异常时,这些函数表可用于定位和处理异常

  • .rsrc 保存的是应用程序的资源数据,这些资源包括图标、位图、字符串、菜单、对话框、版本信息等等。

  • .reloc 存储着可执行文件的重定位信息,用于在程序装载时将程序加载到内存的指定位置,以便程序能够正确地执行

从开发恶意软件的角度,我们接下来去重点关注 .text.data. rsrc这三个节。              

原文始发于微信公众号(朱厌安全团队):恶意软件开发(一)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月14日21:22:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   恶意软件开发(一)https://cn-sec.com/archives/1731303.html

发表评论

匿名网友 填写信息