手动构建PE文件
来源:互联网 发布:淘宝网信用卡支付 编辑:程序博客网 时间:2024/05/22 09:03
手工用16进制编辑器编一个PE,做到弹出一个MessageBox并且尽量缩小大小。
1. 可以缩减的地方
PE头可以缩减,因为是重新构建的关系,所以可以把3C处偏移到Nt头的节对齐大小位置,然后后面内容就按照这个节大小值去设置就行了,偏移位置有0x02、0x04,0x02的0x3C处在值的中间,导致对齐大小太大,所以选择0x04,这是节对齐正好就是4。设置可选头大小和数据目录大小,这样也可以缩减,但是缩减后OD调试会有问题,所以还是保留原来大小。去掉重定位,如果有间隙就在间隙里写导入表的一些东西,代码也写在间隙里。对于需要的字符串,看看有什么不用的或者保留字段,放进去就行了。
2. 开始编辑
对齐大小写的是4,不用重定位,先写到节表,导入表没写,代码没写,入口点写了0x04用来调试,先用0xEE填充可以乱填的部分(那几个地方太短了基本上什么都不能存),一会往里面塞东西。对话框显示的标题和内容和导入的dll名称我已经先放进去了(都是可以乱改的字段)。节大小不要超过文件大小,不然会出错。
因为VirtualAddress和RawAddress一样,所以不需要调整什么地址了。下面添加导入表。
改了一些bug,现在就剩代码了,写在文件末尾。测试时发现直接跟着写不行,Loader读导入表似乎是判断导入表之后的某个字段是不是为0的(不是应该用结构总大小除以结构大小得到数组长度吗?),所以要多16字节才能跟代码,所以变成这样(改了一些BUG):
搜了一下网上的其它tinype,最小可以到97字节,不过它们把数据目录和可选头精简了,运行时就变成Dos程序了(具体不了解为什么会变成那样),运行了也没什么反应,那个应该是能运行的最小PE吧,倒是弹个窗口啊。
改了一些节表的BUG,最终结果349字节:
下面是运行效果,WinXp 32位通过,Win7 32位通过,Win8 64位不通过。
贴一下16进制:
4D5AEEEE504500004C0101005573657233322E646C6C0000E00002010B01000000000000000000000000000048010000B20000000000000000004000040000000400000004000000000000000400000000000000A803000020010000000000000200008100001000001000000000100000100000000000001000000000000000000000002401000014000000000000006C6C000000000000000000000000000000000000000000000000000000000000000000004D657373616765426F784100B2000000000000000000000000000000000000000000000000000000C00000000800000000000000000000000000000000000000000000000000000054657374000000004B010000040000004B0100000400000048656C6C6F576F726C642100680000E03000000000000000000000000C000000C0000000000000000000000000000000000000006A0068FC00400068140140006A00FF15C0004000C3
0 0
- 手动构建PE文件
- 手动构造PE文件
- 手动修改PE文件:删除Dos Stub
- 手动修改PE文件:修改节表
- 手动修改PE文件:添加自定义代码
- 手动加载DLL(PE文件)
- 手动构建rootfs及文件功能分析
- 手动构建rootfs及文件功能分析
- PE文件-PE文件格式
- 手动修改pe加功能
- 手动PE编辑 写出MessageBox
- PE添加节_手动
- pe文件
- PE文件
- pe文件
- PE文件
- pe 文件
- pe文件
- IO端口和IO内存的区别及分别使用的函数接口
- Tesseract 3.04 + VS2013 配置心得(包含静态库版本和Release版本)
- Windows 7下的DEP解析
- Linux系统性能测试与分析2-性能检测
- 11周(反序数)
- 手动构建PE文件
- 第十一周项目6——2 回文数
- hdu 5101 思维题
- iOS开发-解决demo真机运行不了问题
- Linux系统性能测试与分析1-整体分析
- real-time priority 确认
- 秦国宣太后芈八子:为子夺位成为后妃掌政的鼻祖
- 单调队列优化的DP
- 空白格