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 1 von 3  1 23      
Metal_Snake2

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

Wie herausfinden ob eine Ausführbare gepackt ist?

  Alt 17. Jun 2006, 16:56
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.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

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

  Alt 17. Jun 2006, 17:56
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 ...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 17. Jun 2006, 18:03
Eigentlich bräuchte man doch nur die Anwendung ausführen, sich im Prozessspeicher das FileImage suchen und mit der EXE zu vergleichen?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Metal_Snake2

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

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

  Alt 17. Jun 2006, 18:33
@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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 17. Jun 2006, 18:49
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#6

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

  Alt 17. Jun 2006, 23:41
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 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.
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#7

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

  Alt 18. Jun 2006, 14:19
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.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Metal_Snake2

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

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

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

n/a Beiträge
 
#9

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

  Alt 20. Jun 2006, 21:44
Zitat von Metal_Snake2:
Hier ist auch schon eine liste aller packer
... 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!
  Mit Zitat antworten Zitat
Metal_Snake2

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

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

  Alt 20. Jun 2006, 22:02
Naja war nur mal ein anhaltspunkt. Hab leider mom. noch keinen anderen brauchbaren entdeckt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 11:42 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