滴水三期:day34.1-扩大节、合并节

本文详细介绍了如何手动和编程方式在PE文件中进行节的扩大及合并操作,涉及调整SizeOfImage、VirtualSize、SizeOfRawData等字段,并通过示例代码展示了合并节的实现过程。此外,还提供了计算对齐后大小的函数。

一、添加代码的方式

  • 我们现在学过的有:①直接在任意节的空白区添加代码;②新增节添加代码;③扩大最后一个节添加代码
  • 今天要学习:④合并节并添加代码

二、合并节思路

  • 使用拉伸后的合并更方便计算节合并后的大小,而且可以保证计算的正确性。如果用FileBuffer算,算地址或者大小时还要担心节中未初始化数据在拉伸后导致节变大等等情况。

  • 合并节就是:把第一个节开始一直到最后一个节的结尾都当成第一个节

  • 但是可能会造成合并后文件变大,因为文件对齐粒度一般都要小于内存对齐粒度,所以虚拟内存中每个节的空白区一般比文件空白区要大一些,现在合并节是把虚拟内存中从第一个节开始到文件结束都当成一个节,最后再变成FileBuffer就会变大。

  • 步骤:

    1. NumberOfSections改成1

    2. 修改第一个节表的字段

      • VirtualSize:
        • 方法一:SizeOfImage - 第一个节VirtualAddress
        • 方法二:还可以通过最后一个节的VirtualAddress + 最后一个节的VirtualSize内存对齐后的大小 - SizeOfHeader内存对齐后的大小
      • SizeOfRawData:等于VirtualSize即可
    3. 将第一个节的属性改为包含所有节的属性,即用第一个节的属性与其他的节的属性做运算

三、作业

1.扩大最后一个节,保证程序正常运行(手动)

day33.1中写过用编程实现扩大节,所以今天再试着用手动的方式体会一下扩大节,由于手动的时候是在FileBuffer中操作,所以有些值的计算包括扩大的大小都是需要计算的,没有在ImageBuffer中扩大节那么方便

  • 打开notepad.exe程序,如果我们想扩大0x1000字节,则需要修改SizeOfImage,0x13000 + 0x1000内存对齐后 = 0x14000(我们知道notepad.exe的内存对齐为0x1000;文件对齐为0x200)

    image-20211231114041243
  • 接着找到最后一个节表,修改VirtualSize = 原来的0x8948内存对齐后0x9000 + 0x1000内存对齐后 = 0xA000

  • SizeOfRawData = VirtualSize即可

  • 最后将最后一个节的属性0x40000040与0x60000020亦或得到0x60000060

    image-20211231114508991
  • 最后最关键的一步就是在最后一个节末尾扩大节,我们知道如果在ImageBuffer中扩大节,就直接在末尾加上0x1000字节即可,但是由于现在是在FileBuffer中操作,不能直接扩大0x1000了,不然就跟SizeOfRawData对不上,我们要通过计算来得到:原来的SizeOfRawData为0x8A00,而扩大后的SizeOfRawData = 0xA000,所以只需要扩大0xA000 - 0x8A00 = 0x1600即可,换算成十进制为5632。所以在文件末尾0x101FF处右键–Edit–Paste Zero Bytes–输入5632

    image-20211231115647352
  • 保存运行,再拖入PEtool中查看是否修改成功

    image-20211231114651836

2.编码实现合并节

#include "stdafx.h"
#include <stdlib.h>
#include <string.h>

typedef unsigned short WORD;
typedef unsigned int DWORD;
typedef unsigned char BYTE;

#define MZ 0x5A4D
#define PE 0x4550
#define IMAGE_SIZEOF_SHORT_NAME 8
#define MessageBox_Address 0x77D36476 //宏定义记事本的MessageBox内存地址

//shellcode
BYTE shellcode
File Name File Size Date Parent directory/ - - distributions/ - 2024-07-19 16:53 gradle-0.7-all.zip 20.4 MB 2019-09-19 20:52 gradle-0.7-all.zip.sha256 64.0 B 2019-09-19 20:52 gradle-0.7-bin.zip 19.5 MB 2019-09-19 20:52 gradle-0.7-bin.zip.sha256 64.0 B 2019-09-19 20:52 gradle-0.7-src.zip 2.1 MB 2019-09-19 20:52 gradle-0.7-src.zip.sha256 64.0 B 2019-09-19 20:52 gradle-0.8-all.zip 22.7 MB 2019-09-19 20:53 gradle-0.8-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.8-bin.zip 18.0 MB 2019-09-19 20:53 gradle-0.8-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.8-src.zip 2.5 MB 2019-09-19 20:53 gradle-0.8-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9-all.zip 35.3 MB 2019-09-19 20:53 gradle-0.9-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9-bin.zip 29.5 MB 2019-09-19 20:53 gradle-0.9-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9-rc-1-all.zip 30.7 MB 2019-09-19 20:53 gradle-0.9-rc-1-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9-rc-1-bin.zip 25.3 MB 2019-09-19 20:53 gradle-0.9-rc-1-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9-rc-1-src.zip 3.7 MB 2019-09-19 20:53 gradle-0.9-rc-1-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9-rc-2-all.zip 34.1 MB 2019-09-19 20:53 gradle-0.9-rc-2-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9-rc-2-bin.zip 28.6 MB 2019-09-19 20:53 gradle-0.9-rc-2-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9-rc-2-src.zip 4.1 MB 2019-09-19 20:53 gradle-0.9-rc-2-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9-rc-3-all.zip 34.8 MB 2019-09-19 20:53 gradle-0.9-rc-3-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9-rc-3-bin.zip 29.3 MB 2019-09-19 20:53 gradle-0.9-rc-3-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9-rc-3-src.zip 4.1 MB 2019-09-19 20:53 gradle-0.9-rc-3-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9-src.zip 4.2 MB 2019-09-19 20:53 gradle-0.9-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9.1-all.zip 35.3 MB 2019-09-19 20:53 gradle-0.9.1-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9.1-bin.zip 29.5 MB 2019-09-19 20:53 gradle-0.9.1-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9.1-src.zip 4.2 MB 2019-09-19 20:53 gradle-0.9.1-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9.2-all.zip 35.8 MB 2019-09-19 20:53 gradle-0.9.2-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9.2-bin.zip 29.8 MB 2019-09-19 20:53 gradle-0.9.2-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-0.9.2-src.zip 4.2 MB 2019-09-19 20:53 gradle-0.9.2-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-all.zip 37.4 MB 2019-09-19 20:53 gradle-1.0-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-bin.zip 28.6 MB 2019-09-19 20:53 gradle-1.0-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-1-all.zip 31.7 MB 2019-09-19 20:53 gradle-1.0-milestone-1-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-1-bin.zip 25.7 MB 2019-09-19 20:53 gradle-1.0-milestone-1-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-1-src.zip 4.4 MB 2019-09-19 20:53 gradle-1.0-milestone-1-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-2-all.zip 33.2 MB 2019-09-19 20:53 gradle-1.0-milestone-2-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-2-bin.zip 26.8 MB 2019-09-19 20:53 gradle-1.0-milestone-2-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-2-src.zip 4.6 MB 2019-09-19 20:53 gradle-1.0-milestone-2-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-2a-all.zip 33.3 MB 2019-09-19 20:53 gradle-1.0-milestone-2a-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-2a-bin.zip 26.8 MB 2019-09-19 20:53 gradle-1.0-milestone-2a-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-2a-src.zip 4.7 MB 2019-09-19 20:53 gradle-1.0-milestone-2a-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-3-all.zip 33.4 MB 2019-09-19 20:53 gradle-1.0-milestone-3-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-3-bin.zip 26.8 MB 2019-09-19 20:53 gradle-1.0-milestone-3-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-3-src.zip 4.7 MB 2019-09-19 20:53 gradle-1.0-milestone-3-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-4-all.zip 39.4 MB 2019-09-19 20:53 gradle-1.0-milestone-4-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-4-bin.zip 32.1 MB 2019-09-19 20:53 gradle-1.0-milestone-4-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-4-src.zip 5.1 MB 2019-09-19 20:53 gradle-1.0-milestone-4-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-5-all.zip 38.3 MB 2019-09-19 20:53 gradle-1.0-milestone-5-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-5-bin.zip 30.3 MB 2019-09-19 20:53 gradle-1.0-milestone-5-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-5-src.zip 5.6 MB 2019-09-19 20:53 gradle-1.0-milestone-5-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-6-all.zip 38.8 MB 2019-09-19 20:53 gradle-1.0-milestone-6-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-6-bin.zip 30.7 MB 2019-09-19 20:53 gradle-1.0-milestone-6-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-6-src.zip 5.7 MB 2019-09-19 20:53 gradle-1.0-milestone-6-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-7-all.zip 40.9 MB 2019-09-19 20:53 gradle-1.0-milestone-7-all.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-7-bin.zip 31.9 MB 2019-09-19 20:53 gradle-1.0-milestone-7-bin.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-7-src.zip 6.7 MB 2019-09-19 20:53 gradle-1.0-milestone-7-src.zip.sha256 64.0 B 2019-09-19 20:53 gradle-1.0-milestone-8-all.zip 37.4 MB 2019-09-19 20:54 gradle-1.0-milestone-8-all.zip.sha256 64.0 B 2019-09-19 20:54 gradle-1.0-milestone-8-bin.zip 28.6 MB 2019-09-19 20:54 gradle-1.0-milestone-8-bin.zip.sha256 64.0 B 2019-09-19 20:54 gradle-1.0-milestone-8-src.zip 6.6 MB 2019-09-19 20:54 gradle-1.0-milestone-8-src.zip.sha256 64.0 B 2019-09-19 20:54 gradle-1.0-milestone-8a-al下那个
最新发布
11-25
PowerShell 7 环境已加载 (版本: 7.5.2) PowerShell 7 环境已加载 (版本: 7.5.2) PS C:\Users\Administrator\Desktop> cd E:\AI_System\monitoring PS E:\AI_System\monitoring> python test_hardware_monitor.py 2025-08-23 23:24:09 - TestMonitor - INFO - 🚀 开始测试硬件监控模块 2025-08-23 23:24:09 - HardwareMonitor - INFO - ✅ 智能硬件监控模块初始化完成 2025-08-23 23:24:10 - HardwareMonitor - WARNING - ⚠️ OpenHardwareMonitor未运行或不可访问 Win32 exception occurred releasing IUnknown at 0x00000240224E17D0 Win32 exception occurred releasing IUnknown at 0x000002402253DF20 2025-08-23 23:24:10 - HardwareMonitor - INFO - 📖 已加载 32 条历史数据 2025-08-23 23:24:10 - HardwareMonitor - WARNING - ⚠️ 未找到SpeedFan安装路径 2025-08-23 23:24:10 - HardwareMonitor - INFO - 🚀 硬件监控已启动 2025-08-23 23:24:10 - TestMonitor - INFO - 🔧 第一阶段:基本监控测试 2025-08-23 23:24:10 - TestMonitor - INFO - 监控状态: running 2025-08-23 23:24:10 - TestMonitor - INFO - CPU: 0.0% | 内存: 0.0% | 温度: 0.0°C | 风扇: 0 RPM 2025-08-23 23:24:11 - TestMonitor - INFO - 监控状态: running 2025-08-23 23:24:11 - TestMonitor - INFO - CPU: 6.5% | 内存: 34.2% | 温度: 55.0°C | 风扇: 1636 RPM 2025-08-23 23:24:12 - TestMonitor - INFO - 监控状态: running 2025-08-23 23:24:12 - TestMonitor - INFO - CPU: 1.2% | 内存: 34.2% | 温度: 41.6°C | 风扇: 1571 RPM 2025-08-23 23:24:13 - TestMonitor - INFO - 监控状态: running 2025-08-23 23:24:13 - TestMonitor - INFO - CPU: 1.5% | 内存: 34.2% | 温度: 55.1°C | 风扇: 1082 RPM 2025-08-23 23:24:14 - TestMonitor - INFO - 监控状态: running 2025-08-23 23:24:14 - TestMonitor - INFO - CPU: 0.5% | 内存: 34.1% | 温度: 52.7°C | 风扇: 1141 RPM 2025-08-23 23:24:15 - TestMonitor - INFO - 🛠️ 第二阶段:工具箱功能测试 2025-08-23 23:24:15 - TestMonitor - INFO - 🖥️ 硬件信息: 2025-08-23 23:24:17 - TestMonitor - INFO - CPU: Intel(R) Core(TM) i5-14600KF 2025-08-23 23:24:17 - TestMonitor - INFO - 内存: 2 条 2025-08-23 23:24:17 - TestMonitor - INFO - 磁盘: 4 个 2025-08-23 23:24:17 - TestMonitor - INFO - 显卡: NVIDIA GeForce RTX 5070 2025-08-23 23:24:17 - TestMonitor - INFO - ⚙️ CPU工具: 2025-08-23 23:24:17 - TestMonitor - INFO - - CPU压力测试: 运行CPU压力测试 2025-08-23 23:24:17 - TestMonitor - INFO - - CPU性能分析: 分析CPU性能瓶颈 2025-08-23 23:24:17 - TestMonitor - INFO - - CPU温度监控: 实时监控CPU温度 2025-08-23 23:24:17 - TestMonitor - INFO - - CPU频率调整: 调整CPU工作频率 2025-08-23 23:24:17 - TestMonitor - INFO - 🌡️ 温度监控: 2025-08-23 23:24:17 - TestMonitor - INFO - 当前温度: 57.6°C 2025-08-23 23:24:17 - TestMonitor - INFO - 历史记录数: 27 2025-08-23 23:24:17 - TestMonitor - INFO - 🌀 风扇控制: 2025-08-23 23:24:17 - TestMonitor - INFO - 当前风扇转速: 1347 RPM 2025-08-23 23:24:17 - TestMonitor - INFO - 当前模式: balanced 2025-08-23 23:24:17 - TestMonitor - INFO - 📊 第三阶段:历史数据测试 2025-08-23 23:24:17 - TestMonitor - INFO - 获取到 27 条历史记录 2025-08-23 23:24:17 - TestMonitor - INFO - 最新记录: CPU=1.6% 温度=57.6°C Traceback (most recent call last): File "E:\AI_System\monitoring\test_hardware_monitor.py", line 109, in <module> main() File "E:\AI_System\monitoring\test_hardware_monitor.py", line 100, in main if not monitor.stop(): File "E:\AI_System\monitoring\hardware_monitor.py", line 185, in stop if not self极._running: NameError: name 'self极' is not defined PS E:\AI_System\monitoring>
08-24
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值