Quote:
Originally Posted by Tyrar
Zu Themida: das unpacken ist einfach relativ leicht, das sollte denke ich als Argument schon reichen. Ist dennoch besser als überhaupt nichts!
|
Ne ehrlich Themida ist, auch in meinen Augen, Schrott genau so wie die ganzen anderen "super Sicherheitspacker". Es gibt doch schon genug Tuts wie man sogar als Noob Themida u.ä. per Hand "entpackt".
Ein Packer kann ansich nicht schaden, wenn dann würde ich aber einen nehmen, der sehr wenig Viren-Warnungen erzeugt (UPX beispielsweise). Das macht das ganze ein klitze klein wenig schwerer und verringert zusätzlich die Größe des Kompilats.
Auf Themida o.ä. würde ich hingegen nicht setzen, ist in meinen Augen nur Geldmacherei.
Viel Sinnvoller ist es seine Zeit in Anti-Reversing und Anti-Dumping Methoden zu investieren. Auch wenn es auf den ersten Blick nach einer sehr dummen Idee klingt, aber im Bereich "Sicherheit" kannst du dir einmal viele moderne (und gute) Viren anschauen (gibt ja ein paar Seminar/Bachelor/Master/Doktor - Arbeiten dazu). Diese haben sehr oft sehr ausgeklügelte Schutzmechanismen.
Dazu zählen u.a.:
- Runtime Code-Decryption
- Polymorphic Code Generation (jetzt nicht so wichtig aber kann auch helfen)
- Verschleierte WinApi-Calls
- usw.
Die guten Viren versuchen ja möglichst gut und lange sich vor den Antiviren-Systemen (und auch vor Menschen) zu verstecken und genau das willst du ja mit deinem Kompilat auch erreichen, wobei es hier weniger ums verstecken im Sinne von Rootkits geht sondern mehr ums Code verstecken/verschleiern.
Weitere mögliche Schutzmaßnahmen, die sehr leicht umzusetzen sind aber oft unterschätzt werden (deswegen sind sie auch selten irgendwo aufgeführt):
- Viele unnötige Ifs/Whiles/usw. in den C/C++ Code einbauen (die ein Compiler nicht einfach so wegoptimieren kann)
- Strings dynamisch zusammensetzen lassen (z.b. 3 Grundstrings nehmen und diese dann beliebig zu etwas "Neuem" und Sinnvollen kombinieren)
- Analysten auf viele falsche Fährten führen (z.B. irgendwo einen String benutzen, der als Inhalt "Lizenz-Key" hat, obwohl dieser String nichts mit dem Code außen rum zu tun hat).
- Funktionen inlinen
...
Und für mehr und auch fortgeschrittenere Methoden kannst du einfach einmal nach "Anti Debugging" oder "Anti Disassembling" oder "Anti Reversing" googlen, da findet man genug.