手动构建PE文件

这篇博客介绍了如何使用16进制编辑器手动构建一个PE文件,以实现最小化大小的弹出MessageBox功能。作者探讨了可以缩减文件大小的策略,并详细阐述了编辑过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手工用16进制编辑器编一个PE,做到弹出一个MessageBox并且尽量缩小大小。


1. 可以缩减的地方


PE头可以缩减,因为是重新构建的关系,所以可以把3C处偏移到Nt头的节对齐大小位置,然后后面内容就按照这个节大小值去设置就行了,偏移位置有0x02、0x04,0x02的0x3C处在值的中间,导致对齐大小太大,所以选择0x04,这是节对齐正好就是4。设置可选头大小和数据目录大小,这样也可以缩减,但是缩减后OD调试会有问题,所以还是保留原来大小。去掉重定位,如果有间隙就在间隙里写导入表的一些东西,代码也写在间隙里。对于需要的字符串,看看有什么不用的或者保留字段,放进去就行了。


2. 开始编辑


对齐大小写的是4,不用重定位,先写到节表,导入表没写,代码没写,入口点写了0x04用来调试,先用0xEE填充可以乱填的部分(那几个地方太短了 基本上什么都不能存),一会往里面塞东西。对话框显示的标题和内容和导入的dll名称我已经先放进去了(都是可以乱改的字段)。节大小不要超过文件大小,不然会出错。

因为VirtualAddress和RawAddress一样,所以不需要调整什么地址了。下面添加导入表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值