Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 08:40

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Vernünftiger C++/DLL Obfuscator

Discussion on Vernünftiger C++/DLL Obfuscator within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 237
Join Date: May 2013
Posts: 336
Received Thanks: 89
Vernünftiger C++/DLL Obfuscator

Moin,

habe schon viel darüber gelesen, dass C++ schon eine extreme Sicherheit vor dem decompilieren bietet, allerdings sehe ich teilweise trotzdem va Hacks, die in C++ programmiert wurden und geknackt wurden.

Jetzt mal meine Frage:
Gibt es irgend einen euch bekannten, wirklich vernünftigen Obfuscator für DLLs in C++? Wie wäre es zB mit Themida?

Gruß
X3enox is offline  
Old 03/21/2014, 15:51   #2
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
Themida ist schrott.
Arbeite mit übermäßig vielen Klassen und Vererbungen.
Wenn du es richtig schön übertreibst haste hinterher schönen Assemblercode den niemand mehr reversen will. Dann noch etwas in Richtung Themida drauf und gut ist.
Das wird trotzdem keine 100% Sicherheit bieten, die hast du niemals.
Tyrar is offline  
Thanks
1 User
Old 03/21/2014, 16:11   #3
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
quatsch.
Obfuscatoren machen bei C/C++ nur begrenzt sinn.

C/C++ bietet tatsächlich "schutz" vor dekompilieren, dieses aber vor allem durch den nicht verlustfreien kompilierungsprozess in dem der C/C++ code in maschinensprache umgewandelt wird und optimierte compiler nur noch so wenig informationen von dem ursprünglichen C/C++ code übrig lassen, dass dieser normalerweise nicht wiederherstellbar ist.
Das bietet dabei aber keine sicherheit vorm disassemblen, wobei der vom compiler erzeugte maschinencode in assembler angezeigt wird, der dann in meist mühsamer kleinarbeit reversed werden kann.
wenn man dabei weiß wonach man suchen muss und z.b. durch die WinAPI eine bestimmte bekannte schnittstelle hat, kann man den bereich den man reversen muss jedoch sehr stark eingrenzen.
eine mittelgroßes C++ projekt kompilat wieder in komplett lauffähigen C++ code zu reversen ist praktisch kaum möglich.

schutz vor disassemblern bieten z.b. packer wobei der gesamte, oder auch nur teile des codes erst zur laufzeit in maschinencode entpackt werden.
obfuscaten macht in c++ nur wenig sinn, da viel vom compiler wieder rausoptimiert wird oder einer der hauptgründe überhaupt eine native sprache zu benutzen, nämlich die laufzeit, massiv beeinträchtigt werden kann.
außerdem muss man zum cracken meist nur einen sehr kleinen bereich des programms untersuchen, nämlich der in dem die registrierung überprüft wird, da hat es keinen sinn das ganze programm zu obfuskieren, da sollte man eher manuell gucken, dass die registrierungscheckroutine ausreichend gesichert ist bzw. das programm selbst geschützt ist, z.b. indem das programm erst nach erfolgreicher serverauthentifizierung vom server gestreamt wird.
Dr. Coxxy is offline  
Thanks
1 User
Old 03/21/2014, 16:23   #4
 
elite*gold: 237
Join Date: May 2013
Posts: 336
Received Thanks: 89
Hm, und was wären so gängige Packer?

Zum Compilen benutze ich eben den Standard von VC++ Express 2010, oder gibts da auch bessere Alternativen?
X3enox is offline  
Old 03/21/2014, 16:30   #5
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
der ist ok, solltest als release kompilieren, in den projekteinstellungen das erstellen von debug informationen deaktivieren und keinesfalls die .pdb datei aus dem compile ordner mit ausliefern.
packer hab ich net soviel ahnung, benutz die meist um die größe zu verkleinern und nicht als disasm schutz, wie z.b. UPX.
Ansonsten kenn ich themida und armadillo, die afaik mehr auf schutz ausgelegt sind.
aber wie gesagt ist das auch der falsche ansatz, du solltest eher gucken, dass du dein programm sicherer machst anstatt zu versuchen dich vorm disassemblen zu schützen.
Dr. Coxxy is offline  
Thanks
1 User
Old 03/21/2014, 16:57   #6
 
elite*gold: 237
Join Date: May 2013
Posts: 336
Received Thanks: 89
Tyrar findet Themida ja nicht so toll, wie er schrieb.
Da würde mich mal die Kontraargumente interessieren @Tyrar.

Das mit den Klassen werde ich wohl auf jeden Fall mal machen, lässt sich bei mir einfach strukturieren.
Verschachtelungen...müsste ich wohl mal sehen, wie ich die passend einbauen kann.

Ansonsten werde ich mich wohl noch auf Google informieren müssen, aber danke für die Infos^^

Und noch was, was meinst du genau mit der Registrierung?
X3enox is offline  
Old 03/21/2014, 17:08   #7
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
na, wenn man etwas crackt umgeht man ja normalerweise den registrierungsvorgang, bzw. die prüfung, ob ein programm rechtmäßig registriert ist, als entwickler solltest du diesen prozess gesondert schützen.
dass dein programm wieder zu C++ code dekompiliert werden kann brauchst du dir, wenn das projekt net gerade winzig ist normalerweise keine sorgen drum machen.
Dr. Coxxy is offline  
Old 03/21/2014, 17:40   #8
 
elite*gold: 237
Join Date: May 2013
Posts: 336
Received Thanks: 89
Achso...dann habe ich mich vermutlich falsch ausgedrückt.
Wie das geht, weiß ich.

Mir ging es nur allgemein ums decompilern ^^
X3enox is offline  
Old 03/21/2014, 17:50   #9
 
.SkyneT.'s Avatar
 
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 786
Quote:
Originally Posted by X3enox View Post
Mir ging es nur allgemein ums decompilern ^^
Dann kann man meistens davon ausgehen das - falls keine Weltneuheiten
in dem Programm enthalten sind - keiner in absehbarer Zeit ein größeres
Projekt komplett reversen wird.
.SkyneT. is offline  
Old 03/21/2014, 17:55   #10


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,905
Received Thanks: 25,407
Quote:
Originally Posted by X3enox View Post
Achso...dann habe ich mich vermutlich falsch ausgedrückt.
Wie das geht, weiß ich.

Mir ging es nur allgemein ums decompilern ^^
Bist du dir sicher, dass du weißt, wie du diese Routine sicher gestaltest?
Eine Textdatei auf einem Web oder gar Ftp Server ist es nicht.
Sofern du eine sichere Authentifizierungsarchitektur hast (Beispiel: der eigentliche Hack wird live übera Netzwerk gestreamt und liegt nicht auf der Festplatte des potenziellen Angreifers), kann dir das ohnehin unmögliche Decompilen und auch das Debuggen relativ egal sein.
100%ige Sicherheit gibt es nie.
MrSm!th is offline  
Old 03/21/2014, 18:11   #11
 
elite*gold: 237
Join Date: May 2013
Posts: 336
Received Thanks: 89
Das mit der Textdatei sicherlich nicht, da gäbe es ja u.a. Wireshark...
Habe mich dazu auch bereits im Internet informiert, aber das mit dem Netzwerk wäre ein interessanter Ansatz Da wäre ein kleiner vServer vermutlich sinnvoll, die meisten Webspaceanbieter finden das vermutlich nicht ganz so toll, was die Belastung angeht(, oder?)
X3enox is offline  
Old 03/21/2014, 18:47   #12
 
Tyrar's Avatar
 
elite*gold: 0
Join Date: Oct 2008
Posts: 1,637
Received Thanks: 1,119
Allgemein sollte man sich für das streaming nen eigenes und ausreichend verschlüsseltes Protokoll einfallen lassen. Sonst kann da auch jeder mit Wireshark ran, die Datei so vom Server laden und dann drin rum schauen.

Zu Themida: das unpacken ist einfach relativ leicht, das sollte denke ich als Argument schon reichen. Ist dennoch besser als überhaupt nichts!
Tyrar is offline  
Thanks
1 User
Old 03/21/2014, 19:37   #13
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,878
Quote:
Originally Posted by Tyrar View Post
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.
Shadow992 is offline  
Thanks
3 Users
Old 03/21/2014, 19:43   #14
 
elite*gold: 237
Join Date: May 2013
Posts: 336
Received Thanks: 89
Na dann bedanke ich mich mal für eure Tipps, da habe ich ja auch nochmal ein paar gute Ideen bekommen
X3enox is offline  
Old 03/21/2014, 23:01   #15


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,905
Received Thanks: 25,407
Quote:
Allgemein sollte man sich für das streaming nen eigenes und ausreichend verschlüsseltes Protokoll einfallen lassen. Sonst kann da auch jeder mit Wireshark ran, die Datei so vom Server laden und dann drin rum schauen.
Wobei das prinzipiell auch mit einem Webspace geht (falls du dich auf die Frage nach dem vServer bezogen hast).

Quote:
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.
Im Gegensatz zu Themida macht es UPX nicht einmal im Ansatz schwerer.

Quote:
- Runtime Code-Decryption
- Polymorphic Code Generation (jetzt nicht so wichtig aber kann auch helfen)
- Verschleierte WinApi-Calls
- usw.
Wow, das macht übrigens auch jeder bessere Packer und das voll automatisiert. Wenn übrigens wer die Themida VM anschmeißt, kannste in den meisten Fällen einpacken. Lohnt sich nicht für viele Ziele, sich damit rumzuschlagen.

Ne, da gibt's schon deutlich bessere und sicherere Ansätze. Wie gesagt, die Sicherheit in die Hand des Servers zu legen ist z.B. ein guter Ansatz, den man noch mit anderen kombinieren kann.

Quote:
Viele unnötige Ifs/Whiles/usw. in den C/C++ Code einbauen (die ein Compiler nicht einfach so wegoptimieren kann)
Den Kampf verlierst du. Noch dazu ist es Unsinn.
MrSm!th is offline  
Reply


Similar Threads Similar Threads
Vernünftiger Lvlbot für P server?
07/12/2013 - Metin2 - 3 Replies
Halllo liebe com, habe viele bots die letzten stunden ausprobiert.. Der multibot ist am besten von allen, allerdings hört er teils auf die mobs an zu greifen etc.. gibt es einen LVl bot der automatisch monster angreift/umhänge nutzt, sachen aufhebt etc? finde keinen nützlichen vill sowas wie m2k-mod?
Vernünftiger Keyshop?
05/10/2012 - Off Topic - 20 Replies
Mal ne Frage, hier gibt's ja jede Menge Keyshops, aber gibt's auch einen - der nicht von heute auf morgen verschwindet - dessen Preise nicht gleich oder sogar höher wie bei eBay sind Scheint keinen zu geben auf den BEIDES zutrifft .... -.-
Vernünftiger Fun Server?
01/17/2012 - Flyff Private Server - 10 Replies
Heyho, hoffe ich post grad in der richtigen Abteilung. Zum Thema: Gibts nur noch Donate Server?! Egal ob High/Mid/Low Rate Server immer findet man n Donate Button wodurch man dann exklusive ingame Items bekommt die dann mit Penya total überteuert sind. Gibt es keine Fun Server mehr wo man alles im ingames Cash Shop gibt, High Rates, kein Donater o.ä.? Klar muss der Großteil Rechnungen für z.B. den Root bezahlen aber früher gabs noch Server die nen Root Sponsor hatten oder über Hamachi...
Vernünftiger MH?
02/22/2011 - Metin2 Private Server - 3 Replies
Hey, wollte mal Fragen ob es einen Aktuellen Multihack ( Speedy reicht) für P Server gibt.. habe Sufu benutzt leider nix gefunden darum direkte Frage! Gebe thx ;P LG
Vernünftiger Angelbot???
07/16/2008 - Metin2 - 5 Replies
Hi alle zusammen ich habe jetzt viel nach angelbots ausschau gehalten und ich hab immer wieder gelesen, dass fast alle angelbots bugs haben oder garnich funzen. FRAGE: Kennt ihr einen Angelbot der perfekt (fast perfekt) funktioniert??? bitte auch link reinstellen



All times are GMT +1. The time now is 08:40.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.