Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie herausfinden ob eine Ausführbare gepackt ist? (https://www.delphipraxis.net/71576-wie-herausfinden-ob-eine-ausfuehrbare-gepackt-ist.html)

Lillebrohr 20. Jun 2006 22:15

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
Hi,

also ich hätte da einen Lösungsansatz. Man sucht sich die Raw Size und die Virtual Size der einzelnen Sections raus und vergleicht diese. Wenn sich R.Size und V.Size deutlich unterscheiden kann man davon ausgehen das diese .exe, .dll gepackt ist.
Aber aufgepasst, das die V.Size der .DATA Section sich stark gegenüber der R.Size unterscheiden kann liegt wohl daran das der Programmierer schonmal viel Memory pre-allocated also reserviert hat für irgendwelche Variablen oder Arrays.

Hier mal ein Beispiel einer gepackten Exe mit Aspack :

Zitat:

CODE-Section
-> VSIZE = 1B2000
-> RSIZE = 99E00
DATA-Section
-> VSIZE = D000
-> RSIZE = 6800
Und jetzt noch ein Beispiel einer nicht-gepackten Exe:

Zitat:

text-Section
-> VSIZE = 3344A
-> RSIZE = 34000
DATA-Section
-> VSIZE = 9FA8
-> RSIZE = 5000
Die Unterschiede bei der "normalen" Exe sind recht gering.
Das ist mir bei vielen Packern aufgefallen. Es wäre halt ein Weg um ne grobe Analyse zu zeigen.

Bye

himitsu 20. Jun 2006 22:22

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
Zitat:

Zitat von Lillebrohr
Das ist mir bei vielen Packern aufgefallen.

Na ja, verwunderlich ist was wohl nicht ... oder was sollte denn sonst der Sinn von 'nem Packer sein :mrgreen:

Olli 20. Jun 2006 23:07

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
Zitat:

Zitat von Lillebrohr
Die Unterschiede bei der "normalen" Exe sind recht gering.

Aha, und wer definiert "normal"?

Ich habe schon mehrere Anwendungen geschrieben, wo ich absichtlich und unter Vollbesitz meiner geistigen Kräfte die Sektionsparameter angepaßt habe. Daß dir das bei einer Delphi-EXE selten passieren wird, ist mir klar. Andere Sprachen/Compiler lassen solche Modifikationen aber zu ... (und diese Modifikationen können gute Gründe haben, wie zB Speicher, welcher vom Loader alloziert wird und direkt ohne Umwege von der EXE benutzt werden kann).


Und nochmal für Metal_Snake2: es gibt keinen Unterschied zwischen gepackten und sog. verschlüsselten PE-Dateien. Wenn du generisch etwas rausbekommen willst, ist die Verteilung (Stichwort: Histogramm) noch die beste Chance, allerdings auch nur unter der Annahme, daß es sich nicht um eine "Verschlüsselung" ala ROT13 handelt.

Metal_Snake2 21. Jun 2006 00:08

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
@Lillebrohr:

Danke für den ansatz, jedoch funzt das bei mir nicht. Ich Öffne mit dem PE-Explorer einmal die mit UPX Komprimierte datei und die nicht Gepackte Datei, jedoch merke ich keinen unterschied zwichen den einzelnen größen der PE Section Headers.
Die Ausführbaren dateien waren klein, gepackt 20KB und undgepackt 31KB, villeicht kann es auch daran liegen?? Jedoch waren die werte absolut identisch.

@Olli:
Ja deine idee ist wohl eher die "Vollständig" Funktionierendere Methode, jedoch würd ich lieber eine einfachere lösung vorziehen, wie z.B. unterschiedliche werte zu vergleichen den an irgendweiner stelle muss sich ja eine gepackte und nichtgepackte ausführbare unterscheiden.

Nachtrag: mir ist aufgefallen das gepackte exe datein keine Relocation Table beinhalten, villeicht kann man ja dort ansetzen.

Olli 21. Jun 2006 00:25

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
Zitat:

Zitat von Metal_Snake2
jedoch merke ich keinen unterschied zwichen den einzelnen größen der PE Section Headers.

Er meinte die Sektionen, nicht die Section Headers.

Zitat:

Zitat von Metal_Snake2
Ja deine idee ist wohl eher die "Vollständig" Funktionierendere Methode, jedoch würd ich lieber eine einfachere lösung vorziehen, wie z.B. unterschiedliche werte zu vergleichen den an irgendweiner stelle muss sich ja eine gepackte und nichtgepackte ausführbare unterscheiden.

Das ist schon klar, aber eine triviale Lösung gibt es für dieses Problem nicht. Es gibt zuviele verschiedene Methoden um eine EXE zu packen, so daß es mindestens ebensoviele Indikatoren gibt ...

Eine Heuristik ist da eben die beste Methode. Alternativ: Emulator ...

himitsu 21. Jun 2006 03:02

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
20/31KB, wer kommt denn aus diese Idee so'ne Datei nohmals zu packen?
ich meine ... irgendwo kann man es auch übertreiben.

Olli 21. Jun 2006 09:26

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
Zitat:

Zitat von himitsu
20/31KB, wer kommt denn aus diese Idee so'ne Datei nohmals zu packen?
ich meine ... irgendwo kann man es auch übertreiben.

Vielleicht Leute aus der Demo-Szene?

himitsu 21. Jun 2006 10:46

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
hmmm, aber selbst auf 'ne Diskette würden dann immernoch tausende dieser "Demos" draufpassen ... Platzmangel sollte doch bei diesen Kleinen (Größen) wohl keiner herschen :stupid:

brechi 21. Jun 2006 11:34

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
Hier mal ein paar Ansätze die man geschickt kombinieren muss um ein möglichst gutes Ergebnis zu erzielen. Dabei wird dann aber auch ein Crypter etc. als Packer erkannt.

Es dürfen nur gängige Sektionnamen benutzt werden (.text .data)
Ist bei einer Sektion die Rawdatengröße 0 dann ist es (wahrscheinlich) gepackt
Welche Daten stehem am Entrypoint? siehe z.b. Programm PeID
Wo liegt der Entrypoint? Nur in der Codesection und 1. Section erlaubt. (OllyDbg erkennt die unter anderem so)

Lillebrohr 21. Jun 2006 15:44

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
Hey brechi,

Bei Delphi liegt der EP oft auch in der DATA-Section also wars das mit CODE-Section.

@Olli:

Zitat:

Es wäre halt ein Weg um ne grobe Analyse zu zeigen.
!!! ;)

@himitsu:

Zitat:

Na ja, verwunderlich ist was wohl nicht ... oder was sollte denn sonst der Sinn von 'nem Packer sein
Genau und ebend das machen wir uns zu Nutze ! ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 Uhr.
Seite 2 von 3     12 3      

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