本帖最后由 孤独月球 于 2-2-2020 12:03 AM 编辑
PE64smallest.asm是Drako Pensulo所设计的,版权所有。
我将PE64smallest.EXE用Hex Editor打开了后,逐个字节改成以下C#源码。
这个源码所生成的268字节PE.EXE除了只会留下Exit Code(Error Level)之外,就什么也不做。所以基本上这个PE.EXE是属于最简单的Portable Executable格式,也没有任何Section,连Dos Stub也省了(不会在DOS环境下显示"This program cannot be run in DOS mode.",不会)
- using System;
- using System.IO;
- /*
- Modified from PE64smallest.asm
- Aug 19, 2018 (c) DrakoPensulo
- */
- namespace MakeExe
- {
- class Program
- {
- static void Main(string[] args)
- {
- byte exitCode = 120;
- byte[] PE = new byte[] { 0x4D, 0x5A, 0xCE, 0xFA, 0x50, 0x45, 0x00, 0x00,
- 0x64, 0x86, 0x00, 0x00, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0x00, 0x00, 0x2F, 0x00, 0x0B, 0x02, 0xFA, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0x08, 0x01, 0x00, 0x00,
- 0xCE, 0xFA, 0xCE, 0xFA, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
- 0x04, 0x00, 0x00, 0x00, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0x05, 0x00, 0x00, 0x00,
- 0xCE, 0xFA, 0xCE, 0xFA, 0x00, 0x04, 0x00, 0x00,
- 0x08, 0x01, 0x00, 0x00, 0xCE, 0xFA, 0xCE, 0xFA,
- 0x02, 0x00, 0x00, 0x00, 0xCE, 0xFA, 0xCE, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xCE, 0xFA, 0xCE, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xCE, 0xFA, 0xCE, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xCE, 0xFA, 0xCE, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xCE, 0xFA, 0xCE, 0xFA,
- 0x00, 0x00, 0x00, 0x00, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA, 0xCE, 0xFA,
- 0x6A, exitCode, 0x58, 0xC3 };
- File.WriteAllBytes("PE.EXE", PE);
- }
- }
- }
复制代码
只要你改一改C#源码中的exitCode数值,然后再用以下的Batch File执行,就可以显示一摸一样,预设的Exit Code(Batch Programming里称作Error Level)。
- @pe.exe
- @echo %errorlevel%
复制代码
好玩吗? |