Autor |
Beitrag |
ScaVo
Hält's aus hier
Beiträge: 14
|
Verfasst: Fr 05.11.10 14:00
Sehr geehrte Community,
zur Zeit ist mir sehr langweilig, weshalb ich ein bisschen mit der Technik spiele. Nun stehe ich allerdings vor einem Problem, bei welchem ich keine Ahnung habe wie ich vorgehen soll. Wie bekomme ich eine "kleinst"-Exe hin? Alle meine Ansprüche sind eigentlich der Zugriff auf die Standart Datentypen (extended, integer, word, string...) sowie auf einen eigenen Handle(hWnd). Und genau bei dem letzten Anspruch ist mein Problem. Was muss ich schreiben um so einen (eigenen), möglichst platzsparenden, Handle zu bekommen?
(Und wieso ist ein Programm welches ohne Einbindung von irgendetwas ist, also nur begin end., 14kB groß???)
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Fr 05.11.10 14:02
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
F34r0fTh3D4rk
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Fr 05.11.10 14:22
Wenn dir wirklich sehr langweilig ist, und du eine kleinst-Exe hinbekommen möchtest, kannst du es ja mal mit Assembler probieren.
|
|
ScaVo 
Hält's aus hier
Beiträge: 14
|
Verfasst: Fr 05.11.10 14:57
Soooo langweilig ist mir dann doch nicht xDD (da DX, in welches ich mich gerade einarbeite (64k Demo etc) nicht unbedingt Assembler braucht - und ich nunmal Pascal schon kann und entsprechende Header habe)
~EDIT~ Danke an Nersgatt, hat geholfen
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 05.11.10 15:34
Wenn du bei Pascal bleiben willst, kommst du nicht wesentlich weiter runter als ein Hello World mit {$APPTYPE CONSOLE}. Um noch kleiner zu werden, brauchst du eine alternative RTL, die auf Größe optimiert ist. Links hab ich da keine, aber Google bestimmt.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Bergmann89
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Fr 05.11.10 15:51
Hey,
gabs nich auch ma so ne Art selbstverpackende bzw. selbstentpackende Exe? Die waren dann deutlich kleiner als die normalen Exen, haben sich beim start entpackt und dann den entpacken Code ausgeführt. Kann aber auch sein, das ich da grad was verdreh ^^
MfG Bergmann.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Fr 05.11.10 15:55
Doch, das gibts. Aber das lohnt sich erst bei einer bestimmten Größe, da der Platz, den der Entpacker braucht ja auch erst mal eingespart werden muss. Außerdem werden diese gepackten EXE gern mal als Trojaner erkannt, eben weil sich Trojaner manchmal so tarnen.
Und zu guter letzt: in Zeiten, wo ne 1 Terrabytefestplatte 44,99 EUR kostet, muss man wirklich nicht mehr auf ein paar Byte schauen, die die Exe belegt.
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
Bergmann89
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Fr 05.11.10 16:07
Hey,
schon klar, das Speicherplatz in der heutigen Zeit kein ewirkliche Rolle mehr spielt, aber es ist ja der Kniff an der Sache das so klein wie möglich zu bekommen. Siehe Breakpoint (auch wenn es da nicht nur um die Größe der Datei geht).
MfG Bergmann.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
ScaVo 
Hält's aus hier
Beiträge: 14
|
Verfasst: Fr 05.11.10 16:09
Wie geschrieben - ein bisschen langeweile. Aber die 300kB waren mir dann doch zu groß, bin jetzt bei weniger als zwei Zehntel inklusive ein kleines bisschen DirectX xD
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 05.11.10 19:21
Weil du wegen der Größe gefragt hast:
Selbst wenn man bei DElphi keine weiteren Units einbindet, bindet de Compiler 2 Units IMMER ein. Die erste ist SysInit, die andere ist System. Beide werden implizit eingebunden und dürfen nicht explizit aufgeführt werden.
Die Unit System stellt alle wesentlichen Deklarationen bereit, um mit den Datentypen zu arbeiten und enthält zudem einen großteil der Compiler Magic.
Die Unit SysInit wiederum enthält den gesamten Code, der zum Start eines Delphi-Programms notwendig ist und liefert u.a. auch den Code-Einsprungpunkt für die Anwendung (die Main-Routine). Dieser liegt, anders als vom Debugger behauptet, nämlich nicht in der Projektdatei
Es gibt Möglichkeiten, beide dieser Units selbst zu beeinflussen, was aber zur Folge hat, dass man ALLE Delphi-Units von Hand selbst noch einmal übersetzen muss.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Fr 05.11.10 19:26
Mach doch eine .NET Applikation. Eine WPF GUI Applikation mit einem Knopf braucht vielleicht 8 KB.
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Fr 05.11.10 19:47
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
glotzer
      
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: Fr 05.11.10 19:53
kleiner gehts nicht :p
Einloggen, um Attachments anzusehen!
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Fr 05.11.10 20:01
Das Framework gehört zum Betriebssystem. Ohne Betriebssystemaufrufe kannst du sowieso keine sinnvolle Applikation schreiben.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 05.11.10 20:50
|
|
SAiBOT
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Fr 05.11.10 20:56
Es gibt doch dieses "Delphi 7 RTL replacement". Damit kann man eine Konsolenanwendung von 7kb kompilieren, ohne auf irgendwelche Funktionen zu verzichten. Das ist das komfortabelste was ich kenne.
glotzer hat folgendes geschrieben : | kleiner gehts nicht :p |
Ich wette das ist ein Virus, kann das mal jemand reversen  ?
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
glotzer
      
Beiträge: 393
Erhaltene Danke: 49
Win 7
Lazarus
|
Verfasst: Fr 05.11.10 20:58
wie soll das ein Virus sein mit einer byte größe?
nen es mal kleinsteExe.txt und schaus dir an :p
Für diesen Beitrag haben gedankt: SAiBOT
|
|
spawn89
      
Beiträge: 82
Erhaltene Danke: 7
Linux
CodeTyphon
|
Verfasst: Sa 06.11.10 01:59
Für diesen Beitrag haben gedankt: BenBE, Martok
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 06.11.10 04:55
Na toll, eine Messagebox. Was will ich mit einem Programm mit keiner Funktionalität außer beweisen, dass es auch kleiner geht?
|
|
spawn89
      
Beiträge: 82
Erhaltene Danke: 7
Linux
CodeTyphon
|
Verfasst: Sa 06.11.10 13:28
|
|