Frage

Lernen von meiner letzte Frage , die meisten Mitgliedsnamen scheinen in der Projektausgabe eingeschlossen werden.

Mit Blick auf einige decompilers wie 9rays , Salamander , Jungle scheinen viele Verschleierungstechniken bereits besiegt worden sind, gibt es diese eine besonders beängstigend Anspruch:

  

Entfernt automatisch Zeichenfolge Verschlüsselungen von obfuscators injiziert ~ Salamander

ist also manuell, Source-Code-Ebene Verschleiern effektiver als post-Kompilierung / mid-Kompilierung eingeseift, 'oberflächlich' Verschleierung von gut bekannt (leicht besiegt ??) Verschleiern Programme?

War es hilfreich?

Lösung

Verschleiern Source-Code wird in der Wartung sein selbstzerstörerisch.

Wenn Ihr Projekt so ‚Geheimnis‘ ist, ich denke, Sie haben zwei Möglichkeiten:

  • Stellen Sie den 'Geheimnis' proprietry Code hinter einem Dienst auf einem Server, den Sie steuern

  • -Code in einer Sprache so nicht leicht zu dekompilieren wie C / C ++

Andere Tipps

Vielleicht, debatably, aber Sie werden Wartbarkeit zerstören, dies zu tun.

Ist das wirklich wert?

Eigentlich nur das kommt auf Sicherheit durch Unklarheit , das heißt es ist durchaus nicht die Sicherheit, es ist nur eine Unannehmlichkeit. Sie sollten fromt er davon aus, dass jede Partei interessiert genug wird decompile Code, wenn sie darauf zugreifen können. Es ist nicht wert, die Schmerzen, die Sie auf sich selbst verursachen, werde es machen sehr wenig mehr Zeit für die bösen haxxors raubend. Deal mit den realen Sicherheitsprobleme des Zugangs.

Da die Menschen Verschleierungs angegeben ist etwa die Messlatte. Wenn Sie Ihre Montag verschleiern finden Sie einen lässigen Entwickler, die halten nur neugierig, aber Sie werden nicht leicht motivierte Person von Reverse Engineering stoppen.

Wenn Sie die Bar ein wenig weiter viele Verschleierungs Tools erhöhen wollen können Sie verwenden, nicht druckbare Zeichen als Mitgliedsnamen. verwenden Reflektor auf sich selbst einen Blick zu haben. Dies wird viel mehr Leute, halte ich an verschleierten Code aussehen könnte, es zu verstehen, aber wenn ich es nicht lesen kann, werde ich gehen nicht durch den Schmerz davon zu IL Dumping und Umbenennen alle Mitglieder manuell, kein Motivationsschub für mich, dass viel Zeit zu verlieren.

Doch für manche Menschen gibt es einen Motivationsschub, so dass Sie einen weiteren Schritt, wenn Ihre geschäftlichen Anforderungen es nessecitate gehen müssen. Aber egal, was Sie tun, wenn der Computer lesen kann, wird es jemand da draußen, die es zu lesen. Das Ziel ist, die Zahl der Menschen zu reduzieren, die sie lesen können oder wären motiviert, es zu lesen.

Es gibt auch einige Tricks, die Sie Reflektor Pause machen verwenden können, um (Obfuscator aus PreEmptive Reflektor in einigen Fällen bricht aber natürlich kann man immer noch die IL lesen). Ich hatte ein interessantes Gespräch einmal mit einem Entwickler eines obfusction Werkzeugs und ich werde es nicht gerecht sein kann, aber er hatte eine Art Reflektor vollständig, indem Sie den Code Sprung dynamisch um brechen zu machen. Zum Beispiel ein Moment in Ihrer Funktion ein dann würden Sie in die Mitte der Funktion b springen. Doign diese Ursache PEVerify Fehler zu erhöhen, so dass sie nie wirklich umgesetzt aber irgendwie nette Idee.

annakata ist richtig. Wirklich alles, was Sie tun können, ist es schwieriger zu machen (und teuer) für die Person, die Umkehr der Software-Ingenieur.

Meine Firma hat mehrere Bereiche identifiziert, in denen wir es so schwer wie möglich für das Reverse Engineering machen wollte. Zum Beispiel unsere Dateien sind ein binäres Format, die jedes Objekt in unserer Hierarchie verantwortlich für sich selbst speichern und lesen Sie die richtige Version zurück. Das bedeutet, dass eine Person unsere Dateien lesen würden sie unsere gesamte Hierarchie in den Code zu replizieren haben sie erstellen unsere Dateien zu lesen. Darüber hinaus viele der Informationen in der Job-Datei ist ohne das entsprechende Bit in den Laden Standards Dateien nützlich. So haben sie die Arbeit zweimal zu tun, um zu verstehen, was die Job-Datei sagt.

Mehrere kritischen Bereiche (Dongle Schutz, Kommunikation mit unseren Metallschneidemaschinen) residiert in Win32DLL. Was bedeutet, dass sie wissen müssen, um Versammlung würden und wie DLL zu machen, die andere DLLs Signaturen, um zu replizieren, um unsere Software Reverse Engineering. Und unser Design mit unserer CAM-Software ist, dass es mit der Schneidemaschine sehr interaktiv ist (Informationen des ganze Zeit werden ausgetauscht)

Von der wenige Zeit hörten wir über Wettbewerber versuchen, mit unseren Maschinen zu beschäftigen allein gewickelt sie die Elektronik mit ihrer eigenen, um zu ersetzen, um den Job zu beenden. Wichtige Dollar, dies zu tun.

Ein Teil der Maßnahmen, die wir wurde auf eigene Erfahrungen nahmen Basis mit dem Versuch, mit der Konkurrenz der Maschine und Software zu beschäftigen. Wir haben diese Erfahrung und gelernt, wie unser Setup zu optimieren. Natürlich haben wir Grenzen, dass wir nur für den Zweck der Sieg über Reverse Engineering nicht gehen Opfer Zuverlässigkeit oder Wartung.

Für Ihren Fall, werden Sie sich fragen, welcher Teil Ihrer Software von Interesse für Ihre Konkurrenten sein würde und von dort aus gehen. Wenn Sie ein vertikaler Markt-Entwickler (Maschinensteuerung, spezialisierte Rechnungswesen, etc.) Ich schlage vor, einen USB-Dongle für die Softwaresteuerung.

Ansonsten ein Seriennummer-System verwenden und akzeptieren, dass die Menschen Ihre Software Piraten gehen und bauen, dass in Ihr Geschäftsmodell. Der Zweck einer Seriennummer Regelung ist, dass relativ unaufdringlich ist, und behindert kausalen Kopieren und geben Sie eine entfernte Chance aufzuspüren, wo die Kopie kam.

Das Problem gibt es die Lesbarkeit wird zu opfern, es zu tun. Wenn Ihr Projekt ist, dass heilig zu schützen, wie ich glaube, es ist sicher, zwei Dinge zu übernehmen:

  1. Das Projekt ist groß genug, dass der Hit in Lesbarkeit wird wieder kommen Sie in den Arsch zu beißen.
  2. Die Leute, die Reverse-Engineering will es so ohnehin tun. Es dauert nur eine etwas größere Leistung der Intelligenz, um zu bestimmen, welche Dinge tun (statt nur die Mitgliedernamen zu lesen).

Ich bin beunruhigt, dass Sie auch Code-Ebene Verschleierungs berücksichtigen. Wollen Sie den Code selbst werden Verschleierung? Wie wollen Sie immer wieder daran arbeiten? Aus Gründen der Wartbarkeit soll dies nicht getan werden.

Doch bedenken Sie: -

Angenommen, es war ein Skript / app, die Sie, dass Ihr Projekt öffnen würde laufen können und geschickt jede Zeichenfolge / Variablennamen in Ihrem Projekt verschleiern und Sie es später, während die Original-Code kompiliert sicher unangetastet in einem separaten Ort ist.

Nun, das ist eine Idee.

Eigentlich Verschleierungs Code-Ebene ist weniger sicher als das, was der obfuscators da draußen tun kann. Dies ist in erster Linie, weil obfuscators Vorteil der strengen CLI Implementierungsdetails nehmen, die nicht durch Sprache Compiler gestattet. Zum Beispiel ist es völlig legal für private Felder alle haben den gleichen Namen - aber es ist kein Compiler gibt, die Ihnen das tun lassen

.

Sie eine Technik wie diese verwenden: http://g.palem.in/SecureAssembly.html in .net schreiben diese Sie verwenden, aber Sie einbetten in eine c ++ .NET ausführbare Programmdatei,

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