So Schützen Sie eine Exe-Datei von Dekompilierung
Was sind die Methoden für das schützen von Exe-Dateien vor Reverse Engineering.Viele Packer sind verfügbar, um zu packen eine exe-Datei.Ein solcher Ansatz ist bereits in http://c-madeeasy.blogspot.com/2011/07/protecting-your-c-programexe-files-from.html
Ist diese Methode effizient?
Oh, und es gibt keine solche Sache wie zu "schützen", eine ausführbare Datei von reverse-engineering. Wenn es ausgeführt werden kann, kann es reverse-engineered. Packer und andere tools nur die Messlatte für reverse-engineering.
kann sicherlich Programme, die können nicht zerlegt werden." Ist das eine Vermutung oder eine Tatsache? Könnte Sie liefern ein Beispiel? Sie wirklich hat mein Interesse geweckt. Meinst du, dass Sie schreiben können, die code für eine bestimmte Maschine, so dass die Maschine produziert mit einer gut definierten output für einen gegebenen input und -Besitz, dieses Stück code, können Sie nicht bekommen, eine Vorstellung von den Regeln, die führen vom Eingang zum Ausgang und kann daher nicht umgeschrieben werden?
Siehe meine Antwort.....
kann sicherlich Programme, die können nicht zerlegt werden." Ist das eine Vermutung oder eine Tatsache? Könnte Sie liefern ein Beispiel? Sie wirklich hat mein Interesse geweckt. Meinst du, dass Sie schreiben können, die code für eine bestimmte Maschine, so dass die Maschine produziert mit einer gut definierten output für einen gegebenen input und -Besitz, dieses Stück code, können Sie nicht bekommen, eine Vorstellung von den Regeln, die führen vom Eingang zum Ausgang und kann daher nicht umgeschrieben werden?
Siehe meine Antwort.....
InformationsquelleAutor techno | 2011-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur guter Weg, um zu verhindern, dass ein Programm von der Zurückentwicklung ("verstanden") ist zu überarbeiten, seine Struktur im wesentlichen Kraft der Gegner zu verstehen, Turing-Maschinen. Im wesentlichen, was Sie tun, ist:
Nun ein Gegner starrte auf Ihren code hat, um herauszufinden, was die "richtige" Berechnung ist, durch die Lösung algorithmisch schwere Probleme. Es gibt Tonnen von NP-harten Probleme, die niemand hat effizient gelöst, die in der Literatur in 40 Jahren; Ihre eine ziemlich gute Wette, wenn Ihr Programm beruht auf einem von diesen, wird J. Random Reverse-Engineering nicht plötzlich in der Lage sein, um Sie zu lösen.
In der Regel tut dies durch die Umwandlung der original-Programm zu verschleiern, seine Ablaufsteuerung und/oder Ihren Datenfluss. Einige Techniken Gerangel der Ablaufsteuerung durch die Umwandlung einige Ablaufsteuerung in im wesentlichen Datenfluss ("jump indirekt durch das Zeiger-array"), und dann der Implementierung von data-flow-algorithmen erfordern präzise Punkte-Analyse, die beide nachweislich schwer und hat sich in der Praxis erschweren.
Hier ist ein Papier, das beschreibt eine Vielzahl von Techniken, eher flach, aber seine leicht zu Lesen:
http://www.cs.sjsu.edu/faculty/stamp/students/kundu_deepti.pdf
Hier ist noch eine, die konzentriert sich auf, wie um sicherzustellen, dass die verschleiernden Transformationen führen zu Ergebnissen, die garantiert werden, um rechnerisch schwer:
http://www.springerlink.com/content/41135jkqxv9l3xme/
Hier ist eine, die Umfragen, die eine Vielzahl von Steuerungs-flow-transformation Methoden,
einschließlich die Versorgung der Ebenen der gaurantees zur Sicherheit:
http://www.springerlink.com/content/g157gxr14m149l13/
Diesem Papier verbirgt Ablaufsteuerungen in binäre Programme, die mit geringem overhead:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.167.3773&Rang=2
Nun, man konnte gehen durch eine Menge ärger zu verhindern, dass ein Programm dekompiliert werden. Aber wenn die dekompiliert es war unmöglich, zu verstehen, dass du einfach vielleicht nicht stören; das ist der Ansatz, den ich machen würde.
Wenn Sie darauf bestehen, auf die Verhinderung der Dekompilierung, Sie können angreifen, indem Sie überlegen, was für eine Dekompilierung ist beabsichtigt, zu erreichen. Die Dekompilierung im wesentlichen schlägt vor, Sie können konvertieren jedes byte des Ziel-Programms sind in einigen Stück code. Ein Weg, um das scheitern, um sicherzustellen, dass die Anwendung offenbar jedes byte verwenden
da sowohl die Anweisungen für den computer, und wie Daten, auch wenn, wenn nicht tatsächlich so ist, und dass die Entscheidung, dies zu tun ist verschleiert durch die oben genannten Arten von Methoden. Eine variation davon ist eine Menge von bedingten Verzweigungen im code, die sind in der Tat die bedingungslose (mit control flow obfuscation Methoden); die andere Seite des Zweiges fällt in nonsense-code, der sieht gültig, aber äste, um tolle Plätze in den bestehenden code. Eine andere Variante dieser Idee ist die Umsetzung, Ihr Programm wie eine verschleierte Dolmetscher, und implementieren die eigentliche Funktionalität, wie eine Reihe von Daten interpretiert.
Ein Spaß Weg, um dieses Versagen ist zum generieren von code zur Laufzeit und führen Sie auf der Fliegen; die meisten konventionellen Sprachen wie C haben so ziemlich keine Möglichkeit, dies darzustellen.
Ein Programm aufgebaut, wie dies schwierig sein würde, zu dekompilieren, geschweige denn verstehen, nach der Tat.
Tools, die beansprucht werden, um einen guten job beim Schutz der binary code sind aufgeführt unter:
https://security.stackexchange.com/questions/1069/any-comprehensive-solutions-for-binary-code-protection-and-anti-reverse-engineeri
Das erinnert mich an vx.netlux.org/lib/vzo00.html
size matters: eq-skype-20Mb, so fügen viele, es sei denn, code etc
InformationsquelleAutor Ira Baxter
Verpacken, komprimieren und andere Methoden binären Schutz wird nur alle dazu dienen, zu verhindern oder langsame Umkehrung des Codes, die Sie nie gewesen und wird nie eine 100% sichere Lösung (wenn die marketing-einige würden Sie glauben, dass). Sie im Grunde brauchen, um zu bewerten, welche Art von Niveau der hacker Sie gegen, wenn Sie die Skript-kids, dann ist jede packer, die erfordern, dass echt Mühe und Geschick (sprich:diejenigen, die Mangel Auspacken Skripte/Programme/tutorials) abschrecken. Wenn Ihr zugewandten Menschen mit Fähigkeiten und Ressourcen, dann können Sie vergessen Sie halten Ihr code sicher (so wie viele der Kommentare sagen: wenn das Betriebssystem es Lesen kann, es auszuführen, so kann Sie, es wird nur eine längere Weile dauern). Wenn Ihr Problem ist nicht so sehr Ihre IP, sondern die Sicherheit von etwas, was dein Programm tut, dann könnten Sie besser gedient werden, bei der Neugestaltung in einer Weise, wo es nicht Angriff, selbst mit der original-Quelle (chrome greift diesen Ansatz auf).
Es gibt keine Sicherheitsmaßnahmen, die sind 100% sicher. Auch alle, die kryptografische Sachen, die wir haben, ist nicht sicher. Die Frage ist, "ist der Betrag der Arbeit zu brechen, die Sicherheit signifikant, und wird Sie entmutigen einige große Klasse von Angreifern?" Wenn die Antwort ja ist, dann ist die Sicherheit der Regelung ist sinnvoll.
Wenn es um die Sicherheit geht, können Sie besser nicht verwenden der software. Und ja, wenn der OS oder der Prozessor versteht die binären, also kann jemand anderes. +1
die binäre" ist weit anders als "verstehen Sie das Programm" oder "kann beliebige gewünschte änderungen".
InformationsquelleAutor Necrolis
Dekompilierung ist immer möglich. Die Aussage
auf Ihre verlinkte Website ist eine Reine Lüge.
Ich kann nicht Folgen Sie es. Wenn die Umgebung, führt den code aus, sei es eine RE, einen Prozessor, einen Abakus) tut, was das Programm will, dann ist das offensichtlich der code wurde erfolgreich gelesen. Wenn meine Runtime-Umgebung kann dies tun, so kann ich und damit disassemblation ist immer möglich. Oder Irre ich mich da?
Siehe meine Antwort......
InformationsquelleAutor Hyperboreus