AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Warum PE-Packer sehr fragwürdig sind ...
Tutorial durchsuchen
Ansicht
Themen-Optionen

Warum PE-Packer sehr fragwürdig sind ...

Ein Tutorial von Olli · begonnen am 19. Jul 2005 · letzter Beitrag vom 4. Aug 2005
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Olli
Da ja immer wieder versucht wird Leuten zu erklären wieso PE-Packer sehr fragwürdig sind, habe ich mich dazu entschlossen dies mal in anschauliche Form zu bringen. In dieser kurzen Abhandlung wird PE und EXE synonym verwendet. Es basiert auf einem fiktiven Beispiel um anhand von jeweiligen Rechnungen des Speicherverbrauchs vor der Ausführung der eigentlichen Datei (oder im gepackten Fall, Ursprungsdatei) die Nachteile zu verdeutlichen. Es ist völlig egal ob hier EXE-Packer oder EXe-Crypter besprochen werden, sie nehmen sich nichts!

Betrachtung für EXEs (PE)

Nehmen wir mal folgendes Szenario an. Wir haben eine 1 MB große EXE-Datei. Wir betrachten nur die Datei und nicht den Speicher, den der Prozess (im gepackten Fall, nach dem Entpacken) belegt!

Die Datei liegt einmal gepackt (0,3 MB) und einmal ungepackt (1 MB) vor. Nun wird sie vom PE-Loader jeweils einmal geladen.

Die ungepackte EXE enthält Segmente, die der PE-Loader ignoriert und nicht in den RAM lädt, sondern auf der Platte beläßt. Also lädt der PE-Loader 0,2 MB weniger -> das lauffähige Image der EXE im Speicher ist also 0,8 MB groß.

Nun die gepackte EXE. Da wir alles vor dem Entpacken besprechen, bitte ich zu beachten, daß sich die Allozierung im folgenden eben darauf bezieht!!! Die gepackte EXE wird also vom PE-Loader geladen. Da der Packer alles bestens ausnutzt, wird die EXE komplett in den Speicher geladen -> 0,3 MB.
Danach beginnt der enthaltene Entpacker Speicher in Größer der ursprünglichen Datei zu allozieren und die ursprüngliche EXE im Speicher dorthin zu entpacken -> 1 MB.
Macht summa summarum 1,3 MB.

Vergleich in meinem Beispiel -> 0,8 MB vs. 1,3 MB.

Wenn man das jetzt auf andere Dateigrößen hochrechnet wird's böse ...

Ich hoffe der Unterschied wird nun etwas deutlicher. Bei EXE-Cryptern ist es analog!!!

Betrachtung für DLLs

Und jetzt besprechen wir das Ganze nochmal für DLLs. Eine DLL ist immer eine Datei, deren Code im Kontext von einem Prozess ausgeführt wird. Nun ist es gerade so, daß sich unter NT alle Prozesse dieselbe Kopie einer DLL teilen, es sei denn, ein Prozess verändert Speicherseiten innerhalb dieser DLL (also innerhalb des gemappten Images). In diesem Fall (Copy-on-Write) wird die entsprechende Speicherseite für den entsprechenden Prozess kopiert und sie gehört nur ihm (er teilt sie sich also nicht mit anderen Prozessen!).

Wenn wir also einen Prozeß haben, der eine 0,5 MB große DLL benutzt, wird die DLL (xyz.dll) im schlechtesten Fall 0,5 MB Speicherplatz belegen. Wenn wir einhundert Prozesse haben, die die xyz.dll benutzen, wird der Speicherverbrauch im besten Fall bei 0,5 MB liegen (wenn man mal nur die DLL betrachtet!!!), statt bei 100 * 0,5 MB. Sollte verständlich und klar sein.
Fazit: summa summarum 0,5 MB

Nun ist es aber so, daß die DLL-Entpackroutine (analog zu der im oben besprochenen Fall einer EXE) Speicher (innerhalb des Prozesses - also unabhängig vom gemappten Image) reserviert um dorthin die DLL zu entpacken. Soweit so gut. Nun nehmen wir einmal an, ein beliebiger Packer hätte uns unsere xyz.dll auf 0,2 MB geschrumpft. Aufgrunddessen, daß Entpacker meist selbstmodifizierenden Code benutzen, ist es normal anzunehmen, daß die kompletten 0,2 MB im jeweiligen Prozess beschrieben werden und so ebenfalls pro Prozess benutzt werden. Aber lassen wir diese Betrachtung erstmal außen vor. Nehmen wir also an, daß geladene Image in der Größe von 0,2 MB wird in allen Prozessen gleichermaßen benutzt (also ohne Dopplungen), dann tut sich nun aber folgendes Problem auf.
Der Entpacker alloziert wie gesagt Speicher um das Orginal-Image in den Speicher zu entpacken. Dies geschieht auf einer Pro-Prozeß-Basis. Dieses entpackte Image teilen sich also nciht X Prozesse, sondern jeder der X Prozesse kommt hat seine eigene Kopie davon. Rechnen wir das mit unseren 100 Prozessen, welche die gepackte DLL xyz.dll benutzen also nochmal nach:
Gepacktes Image einmalig + Entpacktes Image Xmal
Macht summa summarum 50,2MB!

Ich hoffe, daß durch diesen Riesenunterschied noch deutlicher wird, wo's hakt. Das heißt, während man sich bei EXE-Dateien "nur" drauf einläßt einen jeweils an Größe der Datei und Packrate festzumachenden Nachteil zu bekommen, wird der Nachteil bei DLLs unermeßlich groß!

[edit=alcaeus]Titel auf Wunsch von Olli angepasst: "sinnlos" in "sehr fragwürdig" geaendert, um "eine Debatte um Worthülsen" (Zitat Olli) zu vermeiden. Mfg, alcaeus[/edit]
 
Benutzerbild von mh166
mh166

 
Delphi 10.2 Tokyo Starter
 
#31
  Alt 21. Jul 2005, 14:09
Zitat von TeronG:
Zitat von Olli:
Woher nun plötzlich diese Großzügigkeit in Sachen RAM rührt, bleibt mir auch ein Rätsel.
Früher: war der Speicher soo klein/knapp, daß z.B. Programmierer von Spielen Programm-Code in Grafiken "versteckt" haben ...

Heute:
aber wenn man "nur" kleine Windows-Tools (für Einzelanwender) macht ist das nicht so wild .. wenn ich aber Größere oder auf kleinenren Systremen Anwendungen schreiben müsste würde ich mir das mit dem Packern lieber genauer anschauen.
Wo investiere ich lieber Recourcen Arbeitsspeicher/CPU-last oder Festplatte/ladezeit .... naja muss wohl jeder für sich entscheiden
  Mit Zitat antworten Zitat
Robert_G
 
#32
  Alt 21. Jul 2005, 14:38
Was willst du uns mit diesem Quote sagen?
  Mit Zitat antworten Zitat
barf00s
 
#33
  Alt 21. Jul 2005, 14:42
ich bin auf olli's seite -.-°
  Mit Zitat antworten Zitat
brechi
 
#34
  Alt 21. Jul 2005, 15:38
der Titel ist bisschen fürn arsch ;P

PE-Packer haben den zweck die Datei zu verkleinern -> das gelingt denen auch also sind sie nicht "sinnlos".
Hattest das besser nennen sollen "schlechte Eigenschaften von PE-Packern".

Ansonsten kannste auch schreiben "Warum sind PE-Crypter sinnlos". Fürs Speichermanagement vielleicht, aber der "Sinn" liegt halt im verschlüsseln.

Von daher is der Thread "sinnlos", da durch die Argumentationen nicht unterlegt werden kann das Packer Sinnlos sind.


Edit:
Ich weiß nicht ob ihr euch UPX angeschaut habt, aber der komprimiert verlusstfrei d.h. nachm entpacken mit upx.exe -d <name.exe>
ist es wieder genau die selbe Ausgangsdatei.
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

 
Delphi 7 Personal
 
#35
  Alt 21. Jul 2005, 16:16
Zitat von brechi:
Ich weiß nicht ob ihr euch UPX angeschaut habt, aber der komprimiert verlusstfrei d.h. nachm entpacken mit upx.exe -d <name.exe>
ist es wieder genau die selbe Ausgangsdatei.
Wäre ja wohl auch schlimm, wenns nicht so wäre
  Mit Zitat antworten Zitat
Olli
 
#36
  Alt 21. Jul 2005, 16:52
Zitat von brechi:
PE-Packer haben den zweck die Datei zu verkleinern -> das gelingt denen auch also sind sie nicht "sinnlos".
Der Unterschied zwischen Sinn und Zweck sind dir schon geläufig, oder?

Sie sind durchaus nicht zwecklos, aber schon sinnlos.

Den Rest kommentiere ich nicht weiter.
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

 
Delphi 12 Athens
 
#37
  Alt 21. Jul 2005, 17:05
Moin, Spitze! Klasse!

Mir hat man mal beigebracht zielorientiert zu arbeiten, aber das heiligt letztlich auch nur einem Zweck. Jetzt kommt die Philosophie ins Spiel. Olli wenn Generationen von Philosophen nach dem Sinn des Lebens suchen, dann wird es fast unmöglich sein den Sinn in einem Computerprogramm zu finden, aber auch schwer den Sinn in diesem Thread. Stimme Dir voll zu, das es wohl besser ist nach dem Zweck zu suchen. Nun gut ich werde mich hier zurückhalten, aber bin gespannt wie das weiterläuft.

Die Suche nach dem Sinn und der Wahrheit werden uns noch lange beschäftigen...42...das wird ein langer Thread...

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

 
Delphi 7 Enterprise
 
#38
  Alt 21. Jul 2005, 17:10
Was sind schon 0,5 MB Ram bei einer kleinen Anwendung, wenn man 2GB davon hat?

Wir sind nicht mehr im Zeitalter man nur 1 MB Ram hatte...

Bye
Christian
  Mit Zitat antworten Zitat
Olli
 
#39
  Alt 21. Jul 2005, 17:13
Zitat von mschaefer:
Jetzt kommt die Philosophie ins Spiel. Olli wenn Generationen von Philosophen nach dem Sinn des Lebens suchen, dann wird es fast unmöglich sein den Sinn in einem Computerprogramm zu finden, aber auch schwer den Sinn in diesem Thread. Stimme Dir voll zu, das es wohl besser ist nach dem Zweck zu suchen.
Ich gestehe, daß man es auch auf eine "Glaubensfrage" herunterbrechen kann. Aber wie oben erwähnt, würde wohl so ziemlich jeder Ökonom bei den Preisverhältnissen auf eine Lösung ohne EXE-Packer setzen! RAM und CPU sind beispielsweise bei Servern viel zu wertvoll.

Zitat von mschaefer:
Die Suche nach dem Sinn und der Wahrheit werden uns noch lange beschäftigen...42...das wird ein langer Thread...
*g* wir sind erst bei 39

@Christian: Aua!

Danke an Alcaeus, der so freundlich war den Titel anzupassen, damit ihr euch nicht dran aufhängt ...
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

 
Delphi 12 Athens
 
#40
  Alt 21. Jul 2005, 20:07
Hallo Olli,

eins muß man Dir lassen Du bist beharrlich, eine Eigenschaft die man bei größeren EDV-Projekten braucht, sonst steht man diese nicht durch. Werde hier jetzt nicht in eine größere Diskussion mit einsteigen, aber da Du den Ökonomen ansprichst habe ich doch noch etwas für Dich. Also Ökonomen sind wunderliche Menschen, die beschäftigen sich mit Chaosthoerie, Effizienzanalysen, Spieletheorie und zum Beispiel Monte-Carlo-Methoden. Für was sich solch ein Kandidat entscheiden würde ist zunächst unklar.
Aber die Ökonomie hat ein Verfahren für die Messung von Nutzen ( ein anderes Wort für Zweckdienlichkeit), die Nutzwertanalyse:

Das kann hier helfen, ist übrigens nichts abgehobenes, sondern eine Art Punktesystem unter Berücksichtigung verschiedener Ziele.
Man kennt sowas von Testberichten bei der Stiftung-Warentest, oder trivial auch in Notensystemen. Auf der einen Seite baut man seine Ziele auf, auf der anderen seine Umweltumgebungen/technische Voraussetzungen. Und jetzt kommt das letztlich auch etwas willkürliche: Die Vergabe der Noten in den Schnittpunkten.

10-upx geeignet und sinnvoll bis hinunter zu 1- upx völlig ungeeignet und nicht sinnvoll

········································· UPX auf Server·····UPX·Profikundenpc·····UPX·Gelgenheitsan wender-PC·····
·················································· ·················································· ····························
Ziel·1: Ramoptimierung·····························01····· ··············01·························01······· ························
Ziel·2: HD-Platzoptimierung············ ·········02···················04·················· ·······06································
Ziel·5: Platzoptimierung Agabemedium··· ·00···················04·························0 6································
Ziel·6: einfache Userhandhabung········ ····00···················04······················· ··08································
Ziel·7·Virenfreiheit······························ ·······00···················01···················· ·····01································
--------------------------------------------------------------------------------------------------------------------------------
Summe············································· ·····03···················14······················ ··22·······························

Das ist nun nich die heilige Kuh, aber es macht den Entscheidungs- und Gedankenweg nachvollziehbar und zeigt Deinen Wertmaßstab.
Das Ergebnis, die Zahlen kann ja jeder für sich mal setzten, wäre hier: Finger weg von UPX auf dem Server, etwas undefiniert für den Profianwender und der Kandidat der ehedem unerfahren ist mit Packprogrammen (gibt es!) eine kleine Festplatte hat und kaum
Programme gleichzeitig nutzt, einen hohen Nutzen.

PS: Jetzt ist der Titel übrigens sehr gut gewählt den fraglich, also zu hinterfragen, ist die Benutzung von UPX allemal...


Viele Grüße und einen schönen Abend // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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:08 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