手工打造超小PE文件
作者:sunlin7
代码下载:https://download.youkuaiyun.com/download/lisunlin0/359340
最近试着做一些比较小的PE文件, 系统可识别的EXE做到了119 Bytes(压缩包中的MinApp_06.bat.exe文件, 期望再减小2 bytes左右), 弹出一个对话框的EXE做到了172 Bytes(压缩包中的MinMsg_10.bat.exe文件, 期望再减小8 – 10 bytes左右), 在笔者的机器(WinXp Sp2[版本5.1.2600]Celeron1.7G, 256M DDR)上测试通过. 通过这些低层的操作, 可以更深刻地理解Pe文件中各个成员的作用及相互关系.
对Pe结构感兴趣的朋友可以下载源文件研究.
具体制作步骤可以依照打包文件中的文件序号, 一步一步实现, 这里不想多费纸墨.
其中除了make.bat外,其它.bat文件都是源文件, 使用nasmw编译即生成可执行文件.
以下列出的是打包文件中的最终源代码:
================= MinApp_06.bat ==== 119 bytes ===============
; rem I only test on my pc, WinXp, sp2, Celeron1.7G, 256M DDR
; rem Constructed by Sunline lisunlin0@yahoo.com.cn
;
; nasmw -fbin -o %0.exe %0
; pause
; exit
bits32
.e_magic dw 'MZ'
.e_cblp dw 0090h
Nt_Header:
Signature dd 'PE'
.Machine dw 014Ch
.NumberOfSections dw 0001h
.TimeDateStamp dd 00000000h
.PointerToSymbolTable dd 00000000h
.NumberOfSymbols dd 00000000h
.SizeOfOptionalHeader dw OptionalHeader_End - OptionalHeader ;*
.Characteristics dw 010Fh
OptionalHeader:
.Magic dw 010Bh
.MajorLinkerVersion db 05h
.MinorLinkerVersion db 0Ch
.SizeOfCode dd Code_End - Code ;*
.SizeOfInitializedData dd 00000000h
.SizeOfUninitializedData dd 00000000h
.AddressOfEntryPoint dd Start ;*
.BaseOfCode dd Code ;*
.BaseOfData dd Data ;*
.ImageBase

本文作者分享了如何手工创建极小的PE文件,包括最小可识别的119字节EXE和弹出对话框的172字节EXE,并提供在WinXp Sp2系统上测试通过的代码示例。通过对PE文件结构的深入操作,可以更好地理解其组成部分和相互关系。
最低0.47元/天 解锁文章
1526

被折叠的 条评论
为什么被折叠?



