Delphi-PRAXiS
Seite 1 von 3  1 23      

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)

Metal_Snake2 17. Jun 2006 15:56


Wie herausfinden ob eine Ausführbare gepackt ist?
 
hi,

hat einer einen blassen schimmer wie ich herausfinden kann ob eine ausführbare binärdatei mit PE Packern wie z.B. UPX komprimiert wurde? Villeicht in der PE Header durchstöbern?

danke für antworten.

Olli 17. Jun 2006 16:56

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
Also die beste Indikation ist meiner Meinung nach die Entropie, aber das ist auch nicht hunderprozentig sicher. Einfach ein Histogramm der Verteilung der einzelnen Bytewerte anzeigen lassen und schon siehst anhand der Gleichmäßigkeit, ob die Datei wahrscheinlich gepackt ist.

Mit Sicherheit kann man das ja sowieso nur für bekannte Packer herausbekommen und "Crypter" sind in diesem Sinne auch als Packer zu verstehen. Ansonsten kann ja jeder seinen eigenen Packer schreiben ...

himitsu 17. Jun 2006 17:03

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
Eigentlich bräuchte man doch nur die Anwendung ausführen, sich im Prozessspeicher das FileImage suchen und mit der EXE zu vergleichen? :gruebel:

Metal_Snake2 17. Jun 2006 17:33

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
@himitsu: Wie meinst du das? Welche werte sol ich miteinander vergleichen.
@Olli: Ist das nicht ein bischen zu aufwendig? Das benötigt sicherlich auch einiges an rechenzeit. Der Process Explorer erkennt eine gepackte exe wie ein flitzebogen:-)

himitsu 17. Jun 2006 17:49

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
Im Normalfall gibt es sozusagen eine Kopie der "EXE" im RAM, welche ausgeführt wird.

Wenn die Datei aber gepackt wurde, dann ist doch am Anfang der EXE ein winziges Programm (der Entpacker), welches stattdessen die entpackte Version der EXE im RAM ablegt und diese dann ausführt.

Denn der Computer kann ja nur mit der entpackten Version arbeiten.

Also wenn das Abblid im RAM anders ist, als die Daten in der EXE, dann wurde es verändert und demnach könnte die EXE also gepackt sein.
Am einfachsten bräuchte man wohl nur die Größe des Abbildes mit der der EXE vergleichen ... es müßte ja größer sein.

Olli 17. Jun 2006 22:41

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

Zitat von Metal_Snake2
@Olli: Ist das nicht ein bischen zu aufwendig? Das benötigt sicherlich auch einiges an rechenzeit. Der Process Explorer erkennt eine gepackte exe wie ein flitzebogen:-)

Und du bist dir sicher, daß der *alle* Packer erkennt?! Die Standardpacker kann man mit Signaturen erkennen, keine Frage. Deine Frage war aber generisch gestellt und so habe ich sie beantwortet.

Zitat:

Zitat von himitsu
Wenn die Datei aber gepackt wurde, dann ist doch am Anfang der EXE ein winziges Programm (der Entpacker), welches stattdessen die entpackte Version der EXE im RAM ablegt und diese dann ausführt.

Denn der Computer kann ja nur mit der entpackten Version arbeiten.

Also wenn das Abblid im RAM anders ist, als die Daten in der EXE, dann wurde es verändert und demnach könnte die EXE also gepackt sein.
Am einfachsten bräuchte man wohl nur die Größe des Abbildes mit der der EXE vergleichen ... es müßte ja größer sein.

Das ist etwas naiv:
1.) kann sich das Datensegment auch so ändern
2.) ist die Ausrichtung im Speicher anders als auf Platte, die Daten unterscheiden sich also schon per-se!

Außerdem kommt es dann noch darauf an, welche Form der Entpacker wählt:
1.) reserviert er eine Section in der PE-Datei, die in der Datei 0 Byte, im Speicher aber x (x>0) ist?
2.) benutzt er VirtuallAlloc & Co. um Speicher für die entpackten Daten zu allozieren?
3.) benutzt er eine völlig unbekannte Form?

Ja, die von mir beschriebene Methode ist nicht schön, sie kostet Rechenaufwand, sie ist nicht perfekt - aber besser geht es meines Erachtens nach aktuell noch nicht.

Garfield 18. Jun 2006 13:19

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
Vielleicht bringt es etwas, sich die aPLib anzusehen. Die Library wird zum Beispiel von PEspin benutzt.

UPX verwendet zum Beispiel UCL.

UPX wird - wie es auf der Homepage aussieht - von einigen seriösen Softwareherstellern verwendet, während PESpin öfter im Zusammenhang mit Trojanern auftaucht.

Oder Du siehst Dir an, was ein PE Explorer ausgibt:
ZB - http://www.pe-explorer.com/ 129 $, 30 Tage Trial

Beziehungsweise siehst Du Dir die Strukture des Headers an:
http://www.delorie.com/djgpp/doc/exe/
http://www.wotsit.org/search.asp?s=EXE

oder das noch:
http://www.itee.uq.edu.au/~cristina/...is96/table.htm

Dummerweise alles in Englisch. Eine Seite in Deutsch, welche interessant war, war vermutlich nicht legal und bei ein paar txt-Dateien sprang der Virenwächter an.

Metal_Snake2 20. Jun 2006 20:18

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
Danke für die links.

Ich habe jedoch eine sehr einfache Methode herausgefunden(die nicht so ganz sicher ist). Ich untersuche einfach die ausführbare nach allen möglichen namen von Exe-Packern. Den mit ist aufgefallen das Exe packer in die binary den namen des packers hinzufügen.

Hier ist auch schon eine liste aller packer: http://en.wikipedia.org/wiki/Executable_compression

Olli 20. Jun 2006 20:44

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

Zitat von Metal_Snake2
Hier ist auch schon eine liste aller packer

:wall: ... soll ich heute mal einen Packer schreiben, mit dem ich alle meine Programme ab jetzt packe? Der hat dann keinen String für die Erkennung drin usw. - wie erkennst du ihn? Es gibt Myriaden von Packern!

Metal_Snake2 20. Jun 2006 21:02

Re: Wie herausfinden ob eine Ausführbare gepackt ist?
 
Naja war nur mal ein anhaltspunkt. Hab leider mom. noch keinen anderen brauchbaren entdeckt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 Uhr.
Seite 1 von 3  1 23      

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