吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 773|回复: 2
收起左侧

[新手问题] 关于修改PE完成节合并操作的问题

[复制链接]
richard_ljd 发表于 2024-9-22 12:18
最近在看教程(课程一小时,代码写半天)

老师说作业要写代码实现节合并(就是多个节合并成一个节),看老师讲的应该不难,那我就写写吧,

先说说这个程序的思路

1.修改pe头中的NumberOfSection将其改为1,意为只有一个节   
//你如果问我·"人家不同的节有不同的作用,你这样一搞人家找不到了怎么办?",我只能说老师这样写直接过也没说怎么回事,可能是都是直接指地址的吧()

2.将第一个节的VirtualSize改成SizeOfImagebase - SizeOfHeader ,意为除了头部分,其他全是这个节的区域

3.将SizeOfRawData = VirtualSize  

4.将后面几个节表空间置0(就怕万一)

然后我就开始搓代码,代码不算长

LoadPEFromImagebuffer()  是从Imagebuffer中读取PE数据

ImagebuffertoFilebuffer() 是将Imagebuffer变形成Filebuffer的格式

下面就是代码了

[C++] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
int ModPEHead::Merge_Sections() {
 
    if (!pImageBuffer)
        return 0;
 
    LoadPEFromImagebuffer();
 
    //计算内存对齐大小,sizeofimage - sizeofheaders计算出除头以外的所有大小
    pSectionHeader->Misc.VirtualSize = pOptionHeader->SizeOfImage - pOptionHeader->SizeOfHeaders;
 
 
    pSectionHeader->SizeOfRawData = pSectionHeader->Misc.VirtualSize;
 
    //默认前两个节至少有一个有执行权限,进行或运算给予执行权限
    pSectionHeader->Characteristics = pSectionHeader->Characteristics | (pSectionHeader + 1)->Characteristics;
 
    //清空除第一个节以外的其他节
    for (size_t i = 1; i <= pPEHeader->NumberOfSections - 1; i++)
    {
        memset((pSectionHeader + i),NULL,40);
    }
 
    pPEHeader->NumberOfSections = 1;
 
    ImagebuffertoFilebuffer();
 
    return 1;
}


代码也是一遍过,这个函数执行以后写入文件
image.png
可以看出大了一倍

拉进010 edit看看
image.png image.png

010 edit正常的读,至少没炸,然后我运行一下

image.png

炸了,dbg也开不进去。从pe看代码没有什么问题,但是跑不起来,所以来问一下,是我改的有问题还是怎么

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| richard_ljd 发表于 2024-10-31 13:58
ynzjbys 发表于 2024-10-18 14:49
合并节之前,要先让各节内存对齐,不能只是简单地修改节大小的值,得填充数据,具体可以看这篇帖子,https: ...

好的,这几天没上论坛没看到
ynzjbys 发表于 2024-10-18 14:49
合并节之前,要先让各节内存对齐,不能只是简单地修改节大小的值,得填充数据,具体可以看这篇帖子,https://www.52pojie.cn/thread-1411345-1-1.html
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-3-31 01:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表