世界上最小的win9x可执行程序只用513字节

原创 2001年06月14日 13:32:00
; ********************************************************************************
; *      The Small portable executable Format Program Information                *
; ********************************************************************************
; *   Author:njhhack      e-mail:njhhack@21cn.com     homepage:hotsky.363.net    *
; *   Created Date:2001.5.6                                                      *
; *   Develop Tools Obtained from  Copyright (C) 1987,1996 Borland International *
; *   Turbo Assembler Version 4.1        : Tasm /m spe                           *
; *   Turbo Link Version 7.1.30.1        : Tlink /3 /t spe, spe.exe              *
; ********************************************************************************

;    +-------------------+
;    | DOS-stub          |         50h
;    +-------------------+
;    | file-header       |--+      18h     
;    +-------------------+  |
;    | optional header   |  |      60h-----------+
;    +-------------------+  +---Total =1c0h      |---Total 0e0h
;    | data directories  |  |      80h-----------+
;    +-------------------+  |
;    | section headers   |--+      28h----->Total 0b8h
;    +-------------------+
;    | section 1         |         .code Section
;    +-------------------+
;    | section 2         |
;    +-------------------+
;    | ...               |
;    +-------------------+
;    | section n         |
;    +-------------------+

;*****************************************************
;                  DOS Stub
;*****************************************************
                            .286p
DosHeader                   SEGMENT                 ;
                            BeginProgram:
DosSignature                db 'MZ'            ;
LastSectorLength            dw 1               ;
FileSize                    dw 2               ;this size include head section,the unit is 512 bytes                
RelocateTableNums           dw 0               ;
HeadSize                    dw 2               ;this size unit is 16 bytes
MinMem                      dw 0               ;
MaxMem                      dw 0ffffh          ;
OffsetSS                    dw 0               ;
OffsetSP                    dw 0b8h            ;
FileCheckSum                dw 0               ;
OffsetIP                    dw 0               ;
OffsetCS                    dw 0               ;
FistRelocateAddress         dw 3eh             ;noused in pe
OverloayNums                dw 0               ;
                            org 20h            ;
;*****************************************************
;                  DOS Proc
;*****************************************************
                            mov dx,offset DOS_MESSAGE+100h-20h          ;
                            mov ah,9           ;
                            int 21h            ;
                            mov ax,4c01h       ;
                            int 21h            ;
DOS_MESSAGE                 db  'Run Win2000.',0dh,0ah,07,'$'       ;
                            org 3ch            ;pe sig
PeHeadAddress               db 50h             ;
                            org 50h            ;
DosHeader                   ENDS
;*****************************************************
;                   File Header
;********************************************************
                            .586p
FileHeader                  SEGMENT            ;
WinSignature                dd 4550h           ;PE Format
Machine                     dw 14ch            ;Intel 80386
NumberOfSections            dw 1               ;.code Section
TimeDateStamp               dd 0352068f1h      ;
PointerToSymbolTable        dd 0               ;unused
NumberOfSymbols             dd 0               ;unused
SizeOfOptionalHeader        dw 0e0h            ;constant=optinal header+data Directory
Characteristics             dw 010fh           ;executable on 32-bit-machine
;********************************************************
;                    Optional Header
;********************************************************
Magic                       dw 010bh           ;constant
MajorLinkerVersion          db 5               ;I'm version 0.0 :-)
MinorLinkerVersion          db 2               ;
SizeOfCode                  dd 1000h           ;32 bytes of code;100h
SizeOfInitializedData       dd 0               ;yet to find out;0
SizeOfUninitializedData     dd 0               ;we don't have a BSS;0
AddressOfEntryPoint         dd 1000h           ;yet to find out;1010h
BaseOfCode                  dd 1000h           ;yet to find out;1000h
BaseOfData                  dd 2000h           ;yet to find out;200h
ImageBase                   dd 400000h         ;1 MB, chosen arbitrarily;400000h
SectionAlignment            dd 1000h           ;32-bytes-alignment;100h
;
FileAlignment               dd 20h;200h            ;32-bytes-alignment;200h
;
MajorOperatingSystemVersion dw 4               ;NT 4.0
MinorOperatingSystemVersion dw 0               ;
MajorImageVersion           dw 1               ;version 1.2
MinorImageVersion           dw 2               ;
MajorSubsystemVersion       dw 4               ;Win32 4.0
MinorSubsystemVersion       dw 0               ;
Win32VersionValue           dd 0               ;unused?
;
SizeOfImage                 dd 2000h           ;yet to find out;200h
SizeOfHeaders               dd 200h            ;yet to find out;200h
CheckSum                    dd 0               ;not used for non-drivers
Subsystem                   dw 2               ;Win32 console
DllCharacteristics          dw 0               ;unused (not a DLL)
SizeOfStackReserve          dd 100000h         ;1 MB stack
SizeOfStackCommit           dd 1000h           ;4 KB to start with
SizeOfHeapReserve           dd 100000h         ;1 MB heap
SizeOfHeapCommit            dd 1000h           ;4 KB to start with
LoaderFlags                 dd 0               ;unknown
NumberOfRvaAndSizes         dd 10h             ;constant
;*****************************************************
;                     Image Data Directories,
;***********************************************************************
                                               ;Address        Size
Ide00Export                 dd 0,0             ;IMAGE_DIRECTORY_ENTRY_EXPORT (0)
Ide01Import                 dd 0,0             ;IMAGE_DIRECTORY_ENTRY_IMPORT (1)
Ide02Resource               dd 0,0             ;IMAGE_DIRECTORY_ENTRY_RESOURCE (2)
Ide03Exception              dd 0,0             ;IMAGE_DIRECTORY_ENTRY_EXCEPTION (3)
Ide04Security               dd 0,0             ;IMAGE_DIRECTORY_ENTRY_SECURITY (4)
Ide05BaseReloc              dd 0,0             ;IMAGE_DIRECTORY_ENTRY_BASERELOC (5)
Ide06Debug                  dd 0,0             ;IMAGE_DIRECTORY_ENTRY_DEBUG (6)
Ide07Copyright              dd 0,0             ;IMAGE_DIRECTORY_ENTRY_COPYRIGHT (7)
Ide08Globalptr              dd 0,0             ;IMAGE_DIRECTORY_ENTRY_GLOBALPTR (8)
Ide09Tls                    dd 0,0             ;IMAGE_DIRECTORY_ENTRY_TLS (9)
Ide10LoadConfig             dd 0,0             ;IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG (10)
Ide11BoundImport            dd 0,0             ;IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (11)
Ide12Iat                    dd 0,0             ;IMAGE_DIRECTORY_ENTRY_IAT (12)
Ide13                       dd 0,0             ;13
Ide14                       dd 0,0             ;14
Ide15                       dd 0,0             ;15
;**********************************************************************
;                    Section Header
;**********************************************************************************
SectionName                 db  '.code',0,0,0  ;".code",8 bytes
VirtualSize                 dd  1000h          ;unused
VirtualAddress              dd  1000h          ;yet to find out
SizeOfRawData               dd  1000h          ;size of code
PointerToRawData            dd  200h           ;yet to find out
PointerToRelocations        dd  0              ;unused
PointerToLinenumbers        dd  0              ;unused
NumberOfRelocations         dw  0              ;unused
NumberOfLinenumbers         dw  0              ;unused
Characteristics2            dd  60000020h      ;code, executable, readable
;-----------------padding nulls-----------------------------------------
                            dd PESize       ;
VersionCopyright            db 'WIN32.PE 1.0'  ;
                            org 1b0h           ; 
FileHeader                  ENDS

;**********************************************************************************
;                    .code Section     
;**********************************************************************************
CodeSection                 SEGMENT            ;1
                            ret                ;
PESize                      =      $           ;
CodeSection                 ENDS
                            END BeginProgram

;*****************************************************************************
;*           njhhack 2001.5.6 Copyrigth(C) 2001-2004 Allrights Reserved.     *
;*        this PE File is Only 513 bytes,but it's a raw program,it's fun!
;*****************************************************************************

世界上最小的PE程序,只有133字节的汇编源程序

 ;goto end;*****************************************************************;*        133字节,带Message...
  • njhhack
  • njhhack
  • 2008年02月25日 20:49
  • 1936

世界上最小的3D游戏和3D动画合集

3D游戏只有96K,3D动画只有64K最低配置如下(达不到不能运行):- 1.5GHz Pentium3/Athlon以上处理器- 512MB以上内存- Geforce4 Ti或ATI Radeon8...
  • coolzoom
  • coolzoom
  • 2014年12月26日 14:53
  • 1196

最小的程序“Tinyhelloworld”

PS:最近在研读一本书《程序员的自我修养》,讲程序底层的一些很深入的东西,程序格式,链接,库,编译, 觉得正是我需要的一个东西,在公交上看到了这部分,回来以后就迫不及待的开始实践了,很好,验证了那句...
  • DuoDuo_smile
  • DuoDuo_smile
  • 2015年04月28日 16:45
  • 682

世界上最小的鸟儿

有一种自由叫做孤独它在我一生静静飞舞有一种爱情叫做残酷它让我心痛无法停步有一种梦想叫做迷惘它在我不眠的夜里飞翔有一种永恒叫做悲伤它让我奔跑不悔路上有一种自由叫做孤独它在我一生中静静飞舞有一种爱情叫做残...
  • judy_tian
  • judy_tian
  • 2006年06月23日 13:46
  • 631

世界上最小的 MP3 Web 播放器

在 Web 页面上播放播放 MP3 音频并不难,我们曾在 5 个免费的 Web 视频及音频播放器一文中,介绍过两个 MP3 Web 播放器,它们的功能都很强大,会在页面上显示播放界面,控制 MP3 音...
  • comsharp
  • comsharp
  • 2010年01月29日 17:58
  • 1525

keil(MDK)中出现error: #513:

keil(MDK)中出现error: #513: a value of type "int" cannot be assigned to an entity of type "char *",即函数返...
  • u014717398
  • u014717398
  • 2017年01月10日 19:00
  • 332

数据包最大帧字节和最小帧字节

一、数据包最大帧(1526字节)     根据rfc894的说明,以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧...
  • start000722
  • start000722
  • 2016年01月13日 09:56
  • 1833

移动bundle中的文件时出现错误:Cocoa error 513

在iOS中,加载app成功后bundle中的文件将被加载到.app包中,注意不要将该包中的文件移动到外部。 #pragma mark - Move file - (void)moveFileFrom...
  • u010962810
  • u010962810
  • 2014年03月01日 15:14
  • 2476

[转]探索Windows的内存机制

内存是操作系统的核心部分,所以我们非常有必要了解内存的分配机制。在DOS下,访问内存的指针是用段地址:偏移量来表示,所有程序共用一个内存空间,由低向高分配内存空间,所以任何程序都可以随便修改内存中的数...
  • wuhuiran
  • wuhuiran
  • 2007年10月14日 14:08
  • 661

TIB --- FS

转载自: http://en.wikipedia.org/wiki/Win32_Thread_Information_Block Contents of the TIB[edit] ...
  • u012410612
  • u012410612
  • 2013年11月30日 17:58
  • 678
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:世界上最小的win9x可执行程序只用513字节
举报原因:
原因补充:

(最多只允许输入30个字)