AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wie herausfinden ob eine Ausführbare gepackt ist?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie herausfinden ob eine Ausführbare gepackt ist?

Ein Thema von Metal_Snake2 · begonnen am 17. Jun 2006 · letzter Beitrag vom 2. Jul 2006
Antwort Antwort
Seite 2 von 3     12 3      
Lillebrohr
(Gast)

n/a Beiträge
 
#11

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

  Alt 20. Jun 2006, 22:15
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

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

  Alt 20. Jun 2006, 22:22
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#13

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

  Alt 20. Jun 2006, 23:07
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.
  Mit Zitat antworten Zitat
Metal_Snake2

Registriert seit: 19. Nov 2004
134 Beiträge
 
Delphi 7 Personal
 
#14

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

  Alt 21. Jun 2006, 00:08
@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.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#15

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

  Alt 21. Jun 2006, 00:25
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 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 ...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

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

  Alt 21. Jun 2006, 03:02
20/31KB, wer kommt denn aus diese Idee so'ne Datei nohmals zu packen?
ich meine ... irgendwo kann man es auch übertreiben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#17

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

  Alt 21. Jun 2006, 09:26
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

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

  Alt 21. Jun 2006, 10:46
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#19

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

  Alt 21. Jun 2006, 11:34
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)
  Mit Zitat antworten Zitat
Lillebrohr
(Gast)

n/a Beiträge
 
#20

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

  Alt 21. Jun 2006, 15:44
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 !
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 15:00 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