[Dailydave] tiny PE now at... 304 bytes. Is this the end?
Dave Korn
dave.korn at artimi.com
Mon Oct 23 13:48:22 Local tim 2006
On 21 October 2006 00:35, BobCat wrote:
> On 10/20/06, Dave Korn <dave.korn at artimi.com> wrote:
>
>> It may be two bytes, but all it does is raise an exception. That's not
>> "grabbing a file from the internet and executing it".
>
> I think it does actually get executed. That was the only spec. Not
> that it does anything useful...
No, you need to re-read the thread... the spec was more than that:
" The challange was to create a PE that downloads a file from the Internet
and executes it, which will be smaller than what his friends did. He got
to 411 bytes. "
Still, as long as we're going for utterly minimal programs, based on the old
16-bit .com format, that don't even have to do anything, I can beat you by
50%, trivially:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\dk>dir foo.exe
Volume in drive C has no label.
Volume Serial Number is 5C59-B377
Directory of C:\Documents and Settings\dk
23/10/2006 14:42 1 foo.exe
1 File(s) 1 bytes
0 Dir(s) 6,313,840,640 bytes free
C:\Documents and Settings\dk>od -t x1 foo.exe
0000000 c3
0000001
C:\Documents and Settings\dk>.\foo.exe
C:\DOCUME~1\dk>debug foo.exe
-u 100 100
0D3B:0100 C3 RET
-g
Program terminated normally
-q
C:\DOCUME~1\dk>
Hey, my one doesn't even crash like yours does! :)
However, you have raised a good point: the small downloader exe could
probably be squeezed even more if it was put in a .com format rather than a
.exe; the space saved on headers would be easily enough for a shellcode to
look up loadlibrary and getprocaddress, but it depends what restrictions there
are that I don't know about on 16-bit apps.
>> OTOH, what does "NTVDM does not support a ROM BASIC" mean? Sounds
>> interesting...
>
> The program is just INT 18
>
> http://lrs.uni-passau.de/support/doc/interrupt-57/RB-2177.HTM
>
> and there's no reason for a virtual ROM BASIC, so it's not there. Try
> that program on a 386 under OS/2 2.0 and the BIOS reports "NO ROM
> BASIC" in big block letters (in a window) which is what you saw if you
> did not have a boot device. Usually that is - many systems behaved
> this way back then. I never tried it on a machine with rom basic,
> which I think only the IBM PC and XT had.
Oh, blimey, it's a hangover from the old PCjr! I remember those things!
(IIRC the PCjr was the only one that had rom basic, the standard AT/XT models
didn't).
> I wrote a 6 (iirc) byte program that under OS/2 would open a window
> with the BIOS setup running in it. Can't find it atm.
Now you're getting really obscure!
cheers,
DaveK
--
Can't think of a witty .sigline today....
More information about the Dailydave
mailing list