Verschleierung auf source-code-Ebene effektiver als obfuscators?
Lernen von meiner Letzte Frage, die meisten Elementnamen scheinen, um in das Projekt aufgenommen Ausgang.
Blick auf einige decompilers wie 9rays, Salamander, Dschungel, vielen verschleiernden Techniken scheinen bereits besiegt, gibt ' s diese eine besonders beängstigend Anspruch:
Entfernt automatisch die string-Verschlüsselung injiziert, die von obfuscators ~ Salamander
So ist die manuelle, source-code-Ebene verschleiern effektiver als post-compile - /mid-kompilieren eingeseift, 'oberflächlichen' Verschleierung von bekannten (leicht besiegt??) verschleiern Programme?
InformationsquelleAutor Robinicks | 2009-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verschleierung von source-code wird selbstzerstörerisch in Bezug auf die Wartung.
Wenn Ihr Projekt ist so "secret", ich vermute, Sie haben zwei Möglichkeiten:
Ort das "Geheimnis" proprietry code hinter einen Dienst auf einem server, die Sie Steuern
Code in einer Sprache, die so einfach nicht zu dekompilieren, wie C/C++
InformationsquelleAutor Mitch Wheat
Vielleicht, strittigerweise, aber Sie zerstören die Wartbarkeit zu tun.
Ist dieser wirklich Wert?
Eigentlich nur kommt, um security through obscurity, d.h. es ist nicht die Sicherheit, an alles, es ist nur eine Unannehmlichkeit. sollten Sie fromt er Annahme, dass jeder interessierten Partei genug wird dekompilieren Ihrem code, wenn Sie es nutzen können. Es lohnt sich nicht den Schmerz Sie zufügen, auf sich selbst zu machen, sehr leicht mehr Zeit in Anspruch für die bösen haxxors. Befassen sich mit der realen Probleme der Sicherheit von access.
Also unsere einzigen Optionen sind diejenigen, Mitch, welche uns mit...
Und du gehst zu einem Kommentar zu erklären, "was zum Teufel", die neben jeder Verweis auf IFoogleBargle sind Sie?
InformationsquelleAutor annakata
Als Personen Gaben an Verschleierung ist über die Messlatte. Wenn Sie verschleiern Ihre Montage werden Sie aufhören, ein casual-Entwickler, dessen nur neugierig, aber Sie werden nicht aufhören, eine etwas motivierte person von reverse-engineering.
Wenn Sie wollen, um die Messlatte ein wenig weiter viele obfuscation-tools können Sie verwenden, um nicht-druckbare Zeichen werden als Elementnamen. verwenden Sie die Reflektor auf sich selbst zu schauen. Dies wird verhindern, dass eine Menge mehr Leute, könnte ich schauen, obfuscated code, um es zu verstehen, aber wenn ich es nicht Lesen kann, bin ich nicht zu gehen durch den Schmerz des dumping der IL, und Umbenennung aller Mitglieder manuell, keine motiviation für mich zu verschwenden, viel Zeit.
Aber für manche Menschen gibt es eine motiviation, so dass Sie brauchen, um zu gehen ein weiterer Schritt, wenn sich Ihre geschäftlichen Anforderungen nessecitate. Aber egal, was Sie tun, wenn der computer Sie Lesen kann, wird es jemand gibt, der Sie auch Lesen kann. Das Ziel ist die Verringerung der Zahl der Menschen, die Lesen können und wäre motiviert, es zu Lesen.
Gibt es auch einige tricks, die Sie verwenden können, um Reflektor-Pause (Obfuscator von Präemptiven bricht Reflektor in einigen Fällen aber natürlich können Sie immer noch Lesen Sie die ILLINOIS). Ich hatte ein Interessantes Gespräch einmal mit einem Entwickler einer obfusction tool und ich nicht in der Lage sein, es zu tun Gerechtigkeit, aber er hatte eine Art und Weise zu machen Reflektor komplett Pause durch den code zu springen dynamisch um. Zum Beispiel einen moment in Ihrer Funktion ein dann würden Sie springen in die Mitte der Funktion b. Doign diesem Grund PEVerify zu erhöhen-Fehler, so dass Sie nie tatsächlich umgesetzt haben es aber irgendwie nett Idee.
InformationsquelleAutor JoshBerke
annakata korrekt ist. Wirklich alles, was Sie tun können, ist es schwieriger (und teurer) für die person, die zum reverse Engineering der software.
Mein Unternehmen identifiziert mehrere Bereiche, in die wir wollten, um es so schwer wie möglich für reverse engineering. Zum Beispiel unsere Dateien sind in einem binären format, die jedes Objekt in unserer Hierarchie verantwortlich für die Rettung selbst und Lesen wieder die richtige version. Dies bedeutet für eine person zu Lesen, die Dateien hätten Sie replizieren unsere gesamte Hierarchie in der code, den Sie erstellen, Lesen Sie unsere Dateien. Zusätzlich viel der Informationen in der Job-Datei ist nützlich, ohne das entsprechende bit im shop Normen-Dateien. Also, Sie haben, um die Arbeit zweimal, um zu verstehen, was der job-Datei sagt.
Mehreren kritischen Bereichen (dongle-Schutz, Kommunikation mit unseren metal cutting machines) befinden sich in Win32DLL. Was bedeutet, dass Sie würde haben, um zu wissen, Montage-und wie man DLL, die sich replizieren, andere DLLs-Signaturen, um reverse Engineering unsere software. Plus unserem design, mit unserer CAM-software ist, dass es sehr interaktiv mit der Maschine schneidet, (Informationen ausgetauscht, die ganze Zeit)
Aus der wenigen Zeit, die wir gehört Wettbewerber versuchen, zum Umgang mit unseren Maschinen, die Sie allein aufgezogen einbauen, die die Elektronik mit Ihren eigenen, um den job zu beenden. Major Dollar, dies zu tun.
Teil der Schritte, die wir haben, basierend auf unseren eigenen Erfahrungen mit dem Versuch, den Konkurrenzkampf mit der Maschine und software. Wir haben Erfahrung und gelernt, wie Sie Sie optimieren unser setup. Natürlich haben wir Grenzen, die wir nicht opfern, Zuverlässigkeit oder Wartung nur für den Zweck zu besiegen reverse engineering.
Für Ihren Fall müssen Sie sich selbst Fragen, welcher Teil in Ihr Programm von Interesse sein, um Ihre Konkurrenten und gehen von dort aus. Wenn Sie einen vertikalen Markt-Entwickler (Maschinensteuerungen, spezialisierte Buchhaltung, etc) ich schlage vor, mit einem USB-dongle für die software-Steuerung.
Sonst ein Seriennummer-system und akzeptieren, dass die Menschen gehen, um Piraten Ihrer software und bauen das in Ihr Geschäftsmodell. Der Zweck einer Seriennummer Systems ist, dass ist relativ unaufdringlichen und behindert kausale kopieren plus geben Sie eine remote-chance, aufzuspüren, wo die Kopie herkam.
InformationsquelleAutor RS Conley
Dort das problem ist, dass Sie Einbußen bei der Lesbarkeit zu tun. Wenn Ihr Projekt ist, das Heilige zu schützen, glaube ich, ist es sicher davon ausgehen, zwei Dinge:
"propitiatory" scheint verschleiert wurden, indem die SO Kommentar-compiler. Meinst du mit "geschützt"?
Ich denke "unmöglich, herauszufinden," ist ein sehr relativer Begriff. Jeder hat immer Zugang zu einer Art Assembler-code. Alles was ich sage ist, dass, wenn das, was du versuchst zu schützen, ist es Wert, all die Mühe, zu verschleiern, es lohnt sich alle den gleichen Schwierigkeiten zu zerlegen, auf der anderen Seite.
das hängt davon ab, den Aufwand zu dekompilieren. Wenn ich ein Jahr verbringen, mit sehr erfahrenen Entwickler drehen asm wieder in C++, ich habe gewonnen ' t die Mühe. Wenn ich drop können Sie eine dll in ein app und es passiert in einer halben Stunde - ich wird.
InformationsquelleAutor lc.
Ich bin beunruhigt, dass Sie sogar über eine code-obfuscation. Werden Sie nicht verschleiern den code für dich zu? Wie wollen Sie jemals die Arbeit daran wieder? Aus Gründen der Wartbarkeit dies nicht getan werden sollte.
Aber Bedenken Sie: -
Nehme an, es war ein Skript oder eine app, die Sie ausführen können, würde öffnen Sie Ihr Projekt und geschickt zu verschleiern jede Zeichenfolge/variable-name in Ihrem Projekt und Sie es kompiliert haben danach, während Ihr ursprünglicher code ist sicher unangetastet in einem separaten Ort.
Nun, das ist eine Idee.
Ich Denke, das ist Genau das, was annakata bedeutete, zu tun... er wollte nicht zerstören, seinen eigenen code, sondern fügen Sie die Verschleierung Schicht an der "Precompiler" - Ebene.
InformationsquelleAutor Cyril Gupta
Eigentlich code-Verschleierung ist weniger sicher als das, was die obfuscators gibt, tun können. Dies ist in Erster Linie, weil obfuscators können die Vorteile der strengen CLI-Implementierung-details sind nicht gestattet, von Sprache zu Sprache-Compiler. Zum Beispiel, es ist völlig legal für die private Felder, die alle den gleichen Namen haben - aber es gibt keine compiler gibt, mit denen Sie zu tun.
Yep - das ist nicht besser als das, was alle Billig obfuscator tun können. Und man kann nicht Dinge tun, wie zero-width Namen wie ein Werkzeug DeployLX CodeVeil tun können.
InformationsquelleAutor Paul Alexander
können Sie eine Technik wie diese : http://g.palem.in/SecureAssembly.html über das Sie schreiben .aber net, das Sie einbetten in eine c++ - executable Ihr .net ausführbare Datei ,
InformationsquelleAutor gianmarco castagna