Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [ASM] - Kleinstmögliche Hello World mit WinAPI (https://www.delphipraxis.net/33610-%5Basm%5D-kleinstmoegliche-hello-world-mit-winapi.html)

StefanDP 9. Nov 2004 22:01


[ASM] - Kleinstmögliche Hello World mit WinAPI
 
Hi!
Ich will ein "Hello World" schreiben, dessen exe möglichst klein sein sollte!
hab z.zt folgenden code:
Code:
  .386                                  ; 32bit Windows Anwendung
  .model flat, stdcall
  option casemap : none                ; Groß/Kleinschreibung unterscheiden !?
  include \masm32\include\windows.inc
  include \masm32\include\kernel32.inc
  includelib \masm32\lib\kernel32.lib
  include \masm32\include\user32.inc   ; MessageBox...
  includelib \masm32\lib\user32.lib
 
  .CODE
  start:
    invoke MessageBox, NULL, addr start + 64, addr start + 80, MB_OK
    ret                                 ; statt ExitProc (wird eh von win gekillt nach ret)
  end start
--> 1,5kb

addr start + 64/80 ist die addresse von der caption/text vom messagebox
den text dazu muss man dann nur in die entsprechende stelle in der exe eintragen

wie bekomm ich das ganze noch kleiner??? bzw. wo ist das minimum?
hab da an 512bytes (mz + pe header) + x (512bytes?) für code gedacht!?

stefan

raziel 9. Nov 2004 22:23

Re: [ASM] - Kleinstmögliche Hello World mit WinAPI
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das kleinste was ich je gesehen hab (basierend auf Code von DeinMeister) war 1536 Bytes groß - und dafür musste man tricksen und zwar mit Hilfe von StripReloc, was die 18 Bytes große Reloc-Section löscht...

Du hast fast recht mit Deiner Berechnung:
ca 512 Bytes für den Header (evtl + MS-DOS-Stub Programm)
512 Bytes für die Code Section und
512 Bytes für die Import Table.

raziel

StefanDP 9. Nov 2004 22:31

Re: [ASM] - Kleinstmögliche Hello World mit WinAPI
 
hm....
meins ist vom prinzip her kleiner (die 00en beginnen früher)
aber halt auch 1,5kb

beim deinmeister.de hab ich schon öfters rumgesurft

ist das also die minimale dateigröße?
geht das wirklcih nicht mit 1,0 kb? also 1024 bytes?

Tubos 10. Nov 2004 05:59

Re: [ASM] - Kleinstmögliche Hello World mit WinAPI
 
"This program requires Win32" - diesen Hinweis könntest du noch entfernen.
Ich weiß nicht wie das geht, aber ich weiß dass es geht :)

raziel 10. Nov 2004 06:05

Re: [ASM] - Kleinstmögliche Hello World mit WinAPI
 
Zitat:

Zitat von StefanDP
ist das also die minimale dateigröße?
geht das wirklcih nicht mit 1,0 kb? also 1024 bytes?

Das ist bereits durch die Header so vorgegeben.
- Du brauchst den MZ/PE Header
- Du brauchst Die Code-Section
- Du brauchst die Import-Table um was auszugeben

Die kleinste Exe die ich zusammengebracht hab und unter Win32 lauffähig war, ist 1024 Bytes groß - aber sie macht nichts anderes als ein simples
Code:
ret
Du jedoch willst was ausgeben. Falls Dir was einfällt, wie Du das OHNE DLLs schaffst und dann noch die Reloc löscht, hast Du Deine 1024 Bytes Hello World Exe.

nailor 10. Nov 2004 08:00

Re: [ASM] - Kleinstmögliche Hello World mit WinAPI
 
aaalso: man bekommt nen (wenn auch relativ beschränkten (schnelles tippen schafft er nicht)) keylogger in 724 bytes. ich weiß nicht, WIE er gecoded wurde, auf jeden fall wird man ja wohl auch ein hello world-programm so klein bekommen

http://astalavista.com/index.php?sec...md=file&id=152

raziel 10. Nov 2004 08:43

Re: [ASM] - Kleinstmögliche Hello World mit WinAPI
 
Den hast Du aber hoffentlich noch nicht ausprobiert, oder?
Mein Virenscanner meldet nämlich einen Trojaner... :stupid:

//edit: natürlich meldet der einen, das is ja auch einer :wall:

//edit2: Habs mir mal angeschaut. Die ham die Import Table mit in die Code-Section gepackt und dann die nuller am Ende der Code-Section abgeschnitten. Ziemlich einfaches, aber geniales Teil.

nailor 10. Nov 2004 11:05

Re: [ASM] - Kleinstmögliche Hello World mit WinAPI
 
kann mann eigentlich noch bytes einsparen, wenn man den verwendeten dateinamen kürzt? *kenn mich mit exen nicht so gut aus*

dass das als trojaner erkannt wird, hat durchaus seine richtigkeit. aber zur studie im hexedit taugt es, und an nem schulrechner mit so ner wächterkarte wurde auch die lauffähigkeit getesetet. sollte, solange man nichts geheimes macht, auch am heimrechner anwendbar sein.

raziel 10. Nov 2004 13:23

Re: [ASM] - Kleinstmögliche Hello World mit WinAPI
 
Zitat:

Zitat von nailor
kann mann eigentlich noch bytes einsparen, wenn man den verwendeten dateinamen kürzt? *kenn mich mit exen nicht so gut aus*

Nein, Namen sind Schall und Rauch. Der Name belegt nur in der Tabelle des Dateisystems Platz, nicht aber in der Exe selbst.

Eine solche Exe ist imho auch nur mit einem Hex-Editor erstellbar, zumindest kenne ich keinen Linker der eine Exe auf eine solche Art linkt, wie sie in obigem Keylogger vorliegt.

nailor 10. Nov 2004 16:44

Re: [ASM] - Kleinstmögliche Hello World mit WinAPI
 
ich hab keine ahnung vom linken/assemblieren/wasauchimmer. kann natürlich gut sein, dass das ding im hexedit geschrieben wurde.

ich meine den dateinamen der datei, wo das hinkommt. der ist ja hardgecoded und belegt ein paar byte "C:\.SYS" da könnte man doch "C:\.SY" nehmen, dann hätte man ein byte gespart. oder was noch lürzers. eventuell geht auch nur "", und er nimmt dann ne datei ohne namen im aktuellen pfad. kein anhnug, ob es klappt, aber THEORETISCH...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz