Frage

Gibt es eine Möglichkeit zu verschleiern C-basierte ausführbare Dateien oder Bibliotheken Dekompilierung zu verhindern?

War es hilfreich?

Lösung

Nein. Sie können es mehr schwierig dekompilieren aber man kann nicht verhindern es. Mein Rat ist, Ihre Zeit zu stoppen verschwenden und stattdessen konzentrieren sich auf ein fantastisches Produkt mit immer besseren Eigenschaften zu liefern.

Dann die Leute dafür zu zahlen bereit sein.

Ihr Hauptproblem ist, dass der einzige Weg, um Ihre Code un-entzifferbar zu machen, ist es un-runnable zu machen. Alles, was in einen PC geladen werden kann, kann geknackt werden. Die Leute, die für Spaß, Gewinn oder Ruhm Reverse Engineering zu tun sind in der Regel sehr gut darin und wirklich kein bisschen von allem, was Sie versuchen zu tun Phased sein und stoppt sie.

Sie haben Zugriff auf Tools, die die Arbeit der Entzifferung der Code wesentlich einfacher als die Arbeit machen Sie es Verschleiern haben wird :-) Viel besser die Welt im Allgemeinen zu überzeugen, dass die Software den Kauf wert ist, und zu sehen, die Piraterie als Chance möglicherweise „Diebe“, um einen echten Benutzer zu konvertieren.

Zum Beispiel erfahren Sie Warum , sie sind nicht für die Software zahlen und versuchen, das zu beheben. Sie werden nie 100% der Menschen konvertieren, werden einige der Code nur für den Spaß von ihm Pirat.

Überprüfen Sie die Serie von Artikeln über läuft über out techdirt über CWF + RTB (Verbindung mit den Fans und Grund kaufen). Ich habe viele der Punkte gefunden erhöht dort die Software-Industrie anwendbar sein könnte.

Andere Tipps

Die einfache Art und Weise : Kaufen Sie einen Packer / cryptor / obfuscator Produkt. Einige sind teuer und in Spielen verwendet werden, sind einige nicht. Google für sie von Schlagwörtern wie "Kopierschutz", etc.

Der schnelle Weg : pack mit UPX und dann den mangle Header irgendwo so wird es noch im Speicher und laufen fein geladen werden, aber das upx Dienstprogramm wird mit einem Fehler fehl (versuchen sie das Versionsfeld). 95% geben, wenn der upx Dienstprogramm kann.

Der harte Weg :. Schreiben Sie Ihren eigenen Packer

oh, ich vergaß:

Die real einfache Möglichkeit, : Einfach versenden, wie es ist. Nein, wirklich - was auch immer Sie tun können, die Menschen immer noch Reverse Code Engineering. Der Aufwand setzen Sie es in nur einengt, wie viele kann es umgekehrt.

Kompilierung mit voller Optimierung.

"verschleierte Executables" machen keinen Sinn. Die Hardware muss in die Lage zu „verstehen“, um den Code in der Lage, es auszuführen, und es die Hardware kann es verstehen, ein Reverse-Engineering Mensch es verstehen kann. Die Sie tun können, wird es mehr mühsam zu verstehen, aber wahrscheinlich nicht viel, und mit Kosten verbunden.

Um es schwieriger zu machen? Sicher. Bitte tun Sie das nicht.

Um es zu verhindern? Nein. Jedes System, das die Binärdatei laufen geht, müssen die Software zu entschlüsseln, was Schema Sie kommen mit. Und sie werden in der Lage, das zu dekompilieren und dann sehen, wie Ihre Verdecktes Binärdateien interpretiert erhalten.

Ich denke, wenn man über kompilierte binäre sprechen gibt es nicht viel Sie tun können, (vielleicht nur anwenden UPX oder ähnlichen Werkzeug), die da es nicht viel Sinn machen rückgängig gemacht werden.

Wenn Sie über das Schreiben neuer Code sprechen, versuchen Sie Self Modyfing C-Code , die wahrscheinlich der härteste Weg zu re-Ingenieur Ihre Anwendung wird.

Kompilieren von C-Code mit einem optimierenden Compiler macht es unmöglich, den ursprünglichen Quellcode oder etwas wiederherstellen, die auch nur entfernt ähnelt. Es ist viel sicherer als eine der Java- oder .NET-obfuscators, die in diesen Tagen beliebt sind. Achten Sie darauf, die ausführbare Datei strippen, wenn Sie es kleiner machen wollen und verstecken alle Symbolnamen vor der Freigabe. Beachten Sie jedoch, dass dies macht auch das Debuggen (, wenn die Anwendung abstürzt) ziemlich unmöglich.

Auch so, wenn jemand wirklich will, um Ihre Software hacken, wird er tut so auf Baugruppenebene, möglicherweise mit Loader-Software oder anderen Tricks - egal was Sie versuchen und tun, um ihn zu verhindern. Viele Unternehmen haben versucht, noch keine gelungen. Mit Hacks wie dies vereiteln nur die Endbenutzer, da sie die Anwendung zum Absturz bringen oder sogar die integrierten Debugger von Windows zum Absturz bringen.

Beenden Sie Ihre Zeit Gedanken über die Verschleierung zu verschwenden, während Sie stattdessen das Programm werden zu verbessern sollte.

Decompilation ( No More Gotos ) und beide Verschleierungs Praxis ( Flowtables ) und Theorie (Ununterscheidbarkeit Obfuscation) aktiv sind Bereiche der Forschung und deshalb gibt Werkzeuge, Techniken und Know-how - nur sind keine Lösungen. Wenn Sie wirklich Ihr Code decomplilation sein undurchlässig wollen, erstellen Sie einen Web-App, und setzen Sie die sensiblen Code Server-Seite. Aber wenn Sie auf das Modell feststecken jemand eine binäre geben, dann müssen Sie mit Bedacht den Kompromiss beurteilen Sie zwischen Sicherheit und Leistung machen wollen. Obfuscation ist mit Kosten verbunden, und ist nie perfekt. Einige Optionen

  • Verwenden Sie einen Packer andere als UPX (UPX kommt in vielen Linux-Distributionen installiert ist). Die Leistungskosten sind niedrig und die meisten Menschen haben nicht die Fähigkeiten, um manuell eine binäre für die statische Analyse entpacken. Aber erfahrene Umkehrer, sind die Kosten des Auspackens immateriell
  • Überprüfen Sie heraus Tigress, eine Diversifizierung virtualizer / obfuscator mit umfangreichen Funktionen für C-Quelle-Source-Verschleierung. Für eine bessere Leistung, die sich auf den Trag Transformationen, Flusssteuerung Abflachen Funktion Misch / Spalt, literal Codierung
  • Wenn Sie noch mehr Schutz wollen Besuche Tigress wichtigsten Transformationen. Virtualisierung, Jiting, etc, aber ich bin ziemlich sicher, diese sind teurer und Ihre Benutzer können eine Verlangsamung bemerken, wenn Sie diese Transformationen verwenden

Do von Barak et al brech Arbeit nicht auf die Unmöglichkeit der Blackbox Verschleierungs entmutigen. Er beweist nur die Unmöglichkeit der Blackbox obfuscators, nicht die Unmöglichkeit, viele praktische und wertvolle Verschleierungen. (Black-Box-Verschleierungs das Innenleben des Programms ist es völlig unverständlich) auch nicht von Piraten entmutigen. Es gibt immer Leute, die es einen Punkt, um Ihr Produkt zu kaufen, wenn es gut ist.

Warum den Code verschleiern, wenn von ihm ein kommerzieller Gewinn ist? Um ehrlich zu sein, nehme die kommerzielle Code genug optimiert und verschleiert, und funktioniert, dann die Mutter eines alle peinliche Sache passiert ist - eine Störung .... Sie sind stecken imho, da die Produktion des binären Codes verschleiert wird, so dass es schwieriger zu debug, wo die Panne passiert ist und schwer zu replizieren, wird es fest sein auf dem BUGS Liste für immer ...

Zum Beispiel versuchen, den Stack-Trace zu finden, werden Sie mit dem Verlust mehr Haare am Ende dann zu versuchen, je nach Figur aus dem dis konfektionierter Code Arbeit WTF geschieht dort, endlose Berge von Spaghetti-Loops. Kurz gesagt, nicht!

Sie werden mit Geld zu verlieren am Ende bei dem Versuch, die Panne zu debuggen ... entweder Sie haben ein brillanter Assembler-Experte sein, um die Speicherabbilder zu lesen, und es Arbeit von verschleierten Code aus ... es nicht werfen weg, nur um Ihr schönes Produkt arbeiten und verkaufen sie ... sicher, es gibt viele Menschen, die Zeit auf ihren Händen brechen sie durch Reverse-Engineering den Code ...

haben

Das Geheimnis zu schlagen, die das Prinzip folgt - häufig freigeben, lassen oft , zu verbessern, wie Sie oft freigeben, auf diese Weise die neuesten und besten Features wäre mehr up-to-date dann die Zeit, die für einen Cracker dauert es zu zerlegen und trainieren! Blick auf dem Linux-Quellcode, kommen die Patches in, dann wird es veröffentlicht ... wenn man das Prinzip im Auge zu behalten, durch die Freigabe neue Version mit mehr Funktionen zu einem weitaus schnelleren Tempo dann gewinnen Sie!

Eine Möglichkeit, um die Dinge etwas schwieriger ist es, sie zu packen. UPX Ihre Binärdateien packen, was es schwieriger macht der Box zu dekompilieren aus. Technisch ist es möglich, decompile zu entpacken und dann, aber es wird die Bar ein wenig zu erhöhen. Unter der Annahme, Sie laufen auf einem User-Betriebssystem Vanille gibt es nicht viel Sie Dekompilierung ohne böse Tricks verhindern tun können.

Wenn Sie wirklich durcheinander wollen es bis benötigen Sie ein separates Programm, es zu tun. Als Entwickler schreiben Sie Ihren Code in den saubersten und die meisten lesbaren Form. Post Kompilation Sie die separate Anwendung ausführen, um die Verschleierung zu tun. Sie können für solche Anwendungen kaufen über $ 100K.

Wenn Ihre Absicht ist es, den Code zu stoppen entworfen umgekehrt wird, die wahrscheinlich zu arbeiten. Wenn Ihre Absicht jemanden reißt die Sicherheit zu stoppen, ist dann allein Verschleierung wird nicht einen entschlossenen Angreifer zu stoppen. An einem gewissen Punkt gibt es eine Ja / Nein-Entscheidung, die sie nicht brauchen, um den Code zu verstehen, um herauszufinden, dass noch es zu umgehen.

Tiny C Compiler modifiziert produzieren verschleierten Code: http://blogs.conus.info/node/58

Um eine gewisse theoretische Unterstützung für die Antworten hier bieten: 2001 Barak et. al. das Programm erwies sich als Verschleierungs unmöglich allgemein .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top