windows的PE详解,教你手写,可执行文件

伊始

  现如今windows可执行程序是基于PE结构的。如果我们了解了其中构造的方法,我们就可以实现手动打造可执行程序。也可以更好的防范DLL注入。
  本文是DLL注入与安全延申。

主体

  首先本文所用到的工具如下:

序号 软件名称
1 PE查看器
2 16j进制编辑器

  那么我们开始吧!
  在这里插入图片描述
首先我们要了解PE的组成。直接上图片!
在这里插入图片描述
整个exe由下面列表构成(重定位.reloc没有加入,.rsrc资源文件也没有加入。因为,对我们这篇文章影响不大)本程序,没有用那么多,不必要的已经删除,目的最小空间,完成我们的目标。

序号 名称
1 IMAGE_DOS_HEAD     DOS头部
2 MS-DOS Stub Program    汇编残余程序,省略了
3 IMAGE_NT_HEADERS    NT(PE)头
4 Signature    签名
5 IMAGE_FILE_HEADER    文件头
6 IMAGE_OPTIONAL_HEADER    可选头
7 IMAGE_SECTION_HEADER .text    text节头

先我们先打开16进制编辑器
在这里插入图片描述

(注:一些头部可在winnt.h文件中看到)

  1. IMAGE_DOS_HEAD     DOS头部 ,大小64与MS-DOS Stub Program大小,0-任意。
    在这里插入图片描述
      PS:数据类型 WORD 占 0x0000,也就是16进制编辑器图片中,2个00 的大小 LONG 占4个00的位置。根据系统采用大端或小端结构填充的数据也不同。我们这个环境是,低地址对应16进制低位,高地址对应16进制高位
      对于这个IMAGE_DOS_HEAD我只介绍重要的部分,不重要的部分均用0来填充,如果想知道其中含义及其使用方法,请自行百度。
      在这个结构体中,最重要的是第一个变量e_magic和最后一个变量e_lfanew。第一个变量是固定值,0x5A4D 对应的ASCII 是MZ,为什么是这个是由历史意义的,请自行百度。对一个机器码填写4D5A.
    在这里插入图片描述
      最后一个变量是指向IMAGE_NT_HEADERS,下一个头的位置。所以这个位置与你sizeof(IMAGE_DOS_HEAD)+sizeof(MS-DOS Stub Program)的总和大小。
      因为我们是win32程序,我们就不写残余程序了,直接sizeof(MS-DOS Stub Program)=0;所以就是sizeof(IMAGE_DOS_HEAD)=64,对应16进制0x00000040。所以IMAGE_NT_HEADERS起始点位地址00000040.
      因为占了4位且由低位到高位,所以填写40 00 00 00.其他变量填写00,所以由如下结果。在这里插入图片描述
      上面就把IMAGE_DOS_HEAD头,与MS-DOS Stub Program构成完毕了。
  2. MAGE_NT_HEADERS包含3部分:
    在这里插入图片描述
      1) Signature:4位固定值:0x00004550 ASCII为PE,结果如下:
    在这里插入图片描述
      2) IMAGE_FILE_HEADER,大小sizeof(MAGE_NT_HEADERS)=20
    在这里插入图片描述
       Machine 所要运行的cpu,intel值是0x014C。所以
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值