AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [ASM] - Kleinstmögliche Hello World mit WinAPI
Thema durchsuchen
Ansicht
Themen-Optionen

[ASM] - Kleinstmögliche Hello World mit WinAPI

Offene Frage von "StefanDP"
Ein Thema von StefanDP · begonnen am 9. Nov 2004 · letzter Beitrag vom 15. Nov 2004
Antwort Antwort
Seite 1 von 2  1 2      
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#1

[ASM] - Kleinstmögliche Hello World mit WinAPI

  Alt 9. Nov 2004, 23:01
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
  Mit Zitat antworten Zitat
raziel

Registriert seit: 6. Jun 2004
19 Beiträge
 
Delphi 7 Personal
 
#2

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

  Alt 9. Nov 2004, 23:23
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
Angehängte Dateien
Dateityp: exe hw.exe (1,5 KB, 36x aufgerufen)
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#3

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

  Alt 9. Nov 2004, 23:31
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?
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#4

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

  Alt 10. Nov 2004, 06:59
"This program requires Win32" - diesen Hinweis könntest du noch entfernen.
Ich weiß nicht wie das geht, aber ich weiß dass es geht
Lukas
  Mit Zitat antworten Zitat
raziel

Registriert seit: 6. Jun 2004
19 Beiträge
 
Delphi 7 Personal
 
#5

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

  Alt 10. Nov 2004, 07:05
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.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#6

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

  Alt 10. Nov 2004, 09:00
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
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
raziel

Registriert seit: 6. Jun 2004
19 Beiträge
 
Delphi 7 Personal
 
#7

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

  Alt 10. Nov 2004, 09:43
Den hast Du aber hoffentlich noch nicht ausprobiert, oder?
Mein Virenscanner meldet nämlich einen Trojaner...

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

//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.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#8

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

  Alt 10. Nov 2004, 12:05
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.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
raziel

Registriert seit: 6. Jun 2004
19 Beiträge
 
Delphi 7 Personal
 
#9

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

  Alt 10. Nov 2004, 14:23
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.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#10

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

  Alt 10. Nov 2004, 17:44
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...
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 Uhr.
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