手工创建pe节区

【手工创建pe节区】


前言

提示:少就是多,快就是慢:

小生打算转战web区了,于是写下这些心的供后人参考
本文教程在Windows10 64bit下成功运行


提示:以下是本篇文章正文内容,下面案例可供参考

一、用到的工具

PEview、Hexwin、VScode

二、使用步骤

1.编写示例文件:test.cpp

VScode—代码如下(示例):

#include <windows.h>
#undef UNICODE
int main(){
    MessageBox(NULL, "hello32world", "32", MB_ICONINFORMATION);
     return 0;
}

2.编译:

VScode—终端打包(如图):
在这里插入图片描述
命令如下:

g++ -m32  -o test.exe '.\PE\helloword.cpp'

提示:-m32 是指编译成32位程序

3.使用PEview分析test.exe:

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5068b179575246578dee6549da84b234.png
重要的部分用红框标记了,分别是
Size of Image :文件大小
Section Alignment:节对齐大小:1000(RVA对齐大小)【虚拟内存】
File Alignment:文件对齐大小:200(file Offset对齐大小 )【物理内存】
!](https://img-blog.csdnimg.cn/direct/b9ef57bfb29144b483aa8626c497f3e4.png)

上图红框标记的Number of Section 是指节区数量,后面添加节需要使其加一

3.开始添加节

使用WinHex打开test.exe在这里插入图片描述
拉到文件最底部,点击箭头所指方向,使地址视图改为16进制,选中最后一个字节,
右键编辑,粘贴0字节
在这里插入图片描述
点击确定,这里插入1000(16进制)字节,1000转成10进制就是4096,可以用计算器验证一下,

在这里插入图片描述
写入1000字节后保存一下,养成良好习惯
回到PEview,点击箭头所指,更改视图为物理地址(File Offset),其中Number of Section 的值是000D,转为10进制就是13
物理地址是00000086
在这里插入图片描述

在WinHex找到地址00000086,我们要插入一个节,所以Number of Section 的值要加一,变成了000E
在这里插入图片描述
在PEview随便找一个节,记住File Offset,然后在hex复制下来,小生选择的是最后一个节,
在这里插入图片描述
347c是起始字节,需要向后延长3个字节,所以选择区域是00000358到0000037f,
右键,编辑,复制选区,正常
在地址00000380右键,编辑,剪切板数据,写入
在这里插入图片描述
点击确定,前面8个字节是节的名字,随意更改即可,
在这里插入图片描述
再更改文件大小,插入了1000字节,Size of Image Base加1000,变成00101000
在这里插入图片描述

保存一下,然后用PEview查看,成功了
在这里插入图片描述
红框标记的需要更改
RVA是该节所在的虚拟地址,上一个节的RVA是0000F000,Section Alignment:节对齐大小是1000
所以RVA应该改成00010000
Size of Raw Data是节(AAAAAAA)的大小
Pointer to Raw Data是该节所在的物理地址
之前我们在文件末尾写入了1000字节,所以Size of Raw Data的值应该是1000,(200、600、800都可以,只要是File Alignment的倍数即可,但是不能超过1000,因为我们只写了1000)

在这里插入图片描述

更改完成后保存运行

在这里插入图片描述

  • 28
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

都是爱️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值