AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Programme ~ 1kb

Ein Thema von mr_emre_d · begonnen am 6. Apr 2009 · letzter Beitrag vom 10. Apr 2009
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
mr_emre_d
(Gast)

n/a Beiträge
 
#1

Delphi Programme ~ 1kb

  Alt 6. Apr 2009, 15:53
Ich wollte rausfinden, wie ich meine Apps. kleiner als 10kb kriege und deshalb habe ich im Internet recherchiert. Ich habe einige Beiträge in (Viren- & Trojaner) Foren gelesen und bin auf etwas aufmerksam geworden:

Code:
#1 -- Leere(alles raus, was nicht wirklich gebraucht wird) System & SysUnit erstellen (~20-30 Zeilen)

#2 -- Mit "dcc32.exe -Q system.pas sysinit.pas -M -Y -Z -$D- -0" kompilieren

#3 -- Anstatt den Borland Linker einfach den von Microsoft verwenden -> Dazu muss das Borland OMF Format zu Intel OMF verwandelt werden -> und dazu gibts einen Konverter (omf2d.exe; Author EliCZ)

#4 -- Konvertieren "omf2d Hello.obj /U-"

#5 -- Und letztendlich linken "link.exe /ALIGN:32 /FORCE:UNRESOLVED /SUBSYSTEM:WINDOWS /ENTRY:Start$qqrv Hello.obj user32.lib /out:Hello.exe"
DAS PROBLEM = #3:
Mein AntiVir bombardiert mich mit Warnungen, dass es sich bei omf2d um nen Trojaner handelt usw.

Ich hab nen Upload bei Virustotal gemacht und der lieferte mir ~ 24/39 (61.54%) als Ergebnis .

Den Link zum Programm gibts hier:
http://w-shadow.com/blog/2006/10/12/...ers-in-delphi/

Mich würds nun wirklich interessieren, ob es eine (evt. andere) Möglichkeit gibt, die Echsen wirklich so klein zu kriegen

MfG
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Delphi Programme ~ 1kb

  Alt 6. Apr 2009, 16:08
NonVLC und ohne die großen Delphi-Units, wie SysUtils und Co., kommst du schon locker auf ~30 KB runter.

hab hier ein Programm,welches praktisch nur die Windows.pas und einige eigene WinAPIs enthält ... mit D7 kompiliert ist das nur 12 KB klein.
$2B or not $2B
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#3

Re: Delphi Programme ~ 1kb

  Alt 6. Apr 2009, 16:11
Zitat von mr_emre_d:
Mich würds nun wirklich interessieren, ob es eine (evt. andere) Möglichkeit gibt, die Echsen wirklich so klein zu kriegen :)

MfG
Hallo,

das Problem liegt im wesentlichen am Linker - ich bin es von anderen (älteren) Sprachen gewohnt, besonders natürlich im Embedded-Bereich, dass nur gelinkt wird, was im Programm aufgerufen wird. Der Borland-Linker war dazu schon immer zu doof, wenn du uses math schreibst wird einfach alles gelinkt, was in math definiert ist, auch wenn du nur eine einzige Funktion brauchst. Die Lösung ist daher ein intelligenterer Linker, vermutlich könnte man auch Intel nehmen, aber das ändert nicht viel, also warum nicht MS.

Im Programm selbst muss man natürlich auch möglichst wenige Funktionen benutzen, Beispiel: bei Umwandlung mm - inch definiert man für beide Richtungen einen Multiplikationsfaktor, denn wenn man auf Division ganz verzichten kann, braucht man schon einiges weniger an Rechenfunktionen.

Die Entwicklung geht (leider) dahin, gleich die gesamte Library einzubinden (.NET), mit dem Argument dass ja auch Waschmaschinen heute MBytes an Speicher haben.

Gruss Reinhard
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Delphi Programme ~ 1kb

  Alt 6. Apr 2009, 16:16
nee nee, der Linker ist schon intelligent genug ... Problem ist der Initialisations/Finalisations-Abschnitt ... alles was darin verwendet wird, wird auch gelinkt ... und das ist vorallem in SysUtils eine ganze Menge
$2B or not $2B
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#5

Re: Delphi Programme ~ 1kb

  Alt 6. Apr 2009, 16:20
Zitat von himitsu:
NonVLC und ohne die großen Delphi-Units, wie SysUtils und Co., kommst du schon locker auf ~30 KB runter.

hab hier ein Programm,welches praktisch nur die Windows.pas und einige eigene WinAPIs enthält ... mit D7 kompiliert ist das nur 12 KB klein.
Dat ist mir schon klar. Ich entwickle eh fast nur NonVCL - das kann man sogar aus meinem ersten Satz entnehmen

Kann ich nun "EliCZ" trauen? Die haben ja das DDDK geschrieben und da sind einige Beispiele drinnen
Ich bin auch für andere Vorschläge offen

MfG
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Delphi Programme ~ 1kb

  Alt 6. Apr 2009, 16:22
Zitat von Reinhard Kern:
Der Borland-Linker war dazu schon immer zu doof, wenn du uses math schreibst wird einfach alles gelinkt, was in math definiert ist, auch wenn du nur eine einzige Funktion brauchst.
Nein, so doof ist der Borland-Linker nicht. Das "Problem" liegt daran in den von Math.pas geuseden Units viele initialization-Abschitte vorhanden sind (Siehe SysUtils.pas) die dafür sorgen das die Exe von 10 auf 40 kByte anschwillt. Was nicht verwendet wird, landet auch nicht in der Exe! Bei Objekten geht er nicht soweit. Alles was Private/Protected (?) als Methoden definiert ist wird AFAIK gebunden auch wenn es nicht verwendet wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#7

Re: Delphi Programme ~ 1kb

  Alt 6. Apr 2009, 16:22
Zitat von himitsu:
nee nee, der Linker ist schon intelligent genug ... Problem ist der Initialisations/Finalisations-Abschnitt ... alles was darin verwendet wird, wird auch gelinkt ... und das ist vorallem in SysUtils eine ganze Menge
Naja:
Delphi-Quellcode:
SYSINIT:

unit SysInit;

interface
procedure _InitExe;
procedure _halt0;
procedure _InitLib(Context: PinitContext);

var
ModulelsLib: Boolean;
TlsIndex: Integer = -1;
TlsLast: Byte;

const
PtrToNil: Pointer = nil;


implementation

procedure _InitLib(Context: PinitContext);
asm
end;

procedure _InitExe;
asm
end;

procedure _halt0;
asm
end;

end.

SYSTEM:

unit System;

interface

procedure _HandleFinally;

type
TGUID = record
D1: LongWord;
D2: Word;
D3: Word;
D4: array[0..7] of Byte;
end;

PInitContext = ^TInitContext;
TInitCOntext = record

OuterContext: PInitContext;
ExcFrame: Pointer;
InitTable: Pointer;
InitCount: Integer;
Module: Pointer;
DLLSaveEBP: Pointer;
DLLSaveEBX: Pointer;
DLLSaveESI: Pointer;
DLLSaveEDI: Pointer;
ExitProcessTLS: procedure;
DLLInitState: Byte;
end;

implementation


procedure _HandleFinally;
asm
end;

end.
ist nicht viel :S

Wenn man diese Units verwendet, ändert sich nichts großartig ander Größe (~10kb)
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#8

Re: Delphi Programme ~ 1kb

  Alt 6. Apr 2009, 17:01
Zitat von Reinhard Kern:
Die Entwicklung geht (leider) dahin, gleich die gesamte Library einzubinden (.NET), mit dem Argument dass ja auch Waschmaschinen heute MBytes an Speicher haben.
Hast du was gegen in Delphi-Programme eingebundene Fremd-DLLs?
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Delphi Programme ~ 1kb

  Alt 6. Apr 2009, 17:54
Ganz gute Anlaufstelle ist da wohl die Seite von Assarbad!
Dort kann man zb. sowas finden:

nonVcl-App
Diese Anwendung ist mit Delphi schon nur bei 16kb groß!


Sollte das noch zu groß sein, dann hast du auf der Seite noch ein Bsp von Nico
MiniDExe
Dort ist die Anwendung nur noch 3kb groß!

Allerdings musst du dafür schon die System.pas austauschen, welche auch auf den Seiten zufinden sind! Dabei gibt es verschiedene Versionen dort, einmal eine von Nico, und einmal eine von Assarbad (wenn ich mich recht entsinne)!

Musst mal sehen wo sich diew befinden, weiß ich jetzt auch nicht mehr genau, müsste auch erst suchen!!

Edit:

Willst du es immer schön kleine haben, dann hilft dir nur das Umsteigen auf Maschienen-Sprache, also Assembler!
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#10

Re: Delphi Programme ~ 1kb

  Alt 6. Apr 2009, 18:10
Zitat von Dax:
Zitat von Reinhard Kern:
Die Entwicklung geht (leider) dahin, gleich die gesamte Library einzubinden (.NET), mit dem Argument dass ja auch Waschmaschinen heute MBytes an Speicher haben.
Hast du was gegen in Delphi-Programme eingebundene Fremd-DLLs? :)
Hallo,

ich bin halt entsetzlich altmodisch und denke, eine Waschmaschine soll Wäsche waschen und nicht eine Website mit Flash-Animationen, FTP-Server, DHCP und DNS zur Verfügung stellen - aber das ist natürlich Geschmackssache. Dafür muss ich in den Keller laufen und nachsehen, ob die Wäsche fertig ist, aber da mir das wg. beginnendem Alzheimer sowieso erst in 2-3 Stunden wieder einfällt, habe ich kaum Nachteile dadurch.

Gruss Reinhard
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


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 05:31 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