手工打造超小PE文件
作者:sunlin7
代码下载:https://download.csdn.net/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