2011-01-05 6 views
3

Ich verstehe, dass es einfach ist, Mach-O ausführbar zu hacken, ich will nur einfachen Schutz gegen "Class-Dump" -Tool. Gibt es ein Tool oder ein XCode-Plugin, das alle Klassennamen und Klassenfunktionen in etwas nicht sehr lesbares (wie zufällige Kombination von Symbolen und Zahlen) ändern kann?Obj C und Class-Dump-Schutz

Ehrlich gesagt, das ist alles Schutz, den ich brauche.

+1

Bedenken Sie, dass dies eine fruchtlose Bemühung sein kann: Delegierte Methoden müssen ihre Namen behalten, und xib-Verbindungen geben leicht den eigentlichen Zweck jeder Klasse oder Methode preis. Sie sollten besser auch Ihren eigenen Message Resolver schreiben, der an der Verstümmelung teilnimmt. – mvds

Antwort

5

Ich schrieb ein wenig darüber in this blog post, aber um es zusammenzufassen: Sie können vermeiden, dass Methoden in class-dump erscheinen, indem Sie sie zur Laufzeit registrieren oder einfach nur als Funktionen behalten.

Wenn wirklich alle möchten Sie tun, ist die Klassen/Methoden umbenennen, können Sie use the tops command-line tool oder Xcode Refactoring-Funktion.

1

Suchen Sie nach Objective C obfuscators?

This page hat eine großartige Diskussion über Obfuscating Cocoa.

+0

ist es nicht Hacker/Cracker Ich mache mir Sorgen. Ich habe Freeware Utility, und ich möchte es vor lästigen Konkurrenten, die sehr neugierig sind, "was ist drin" schützen. Das Ändern von Funktionen/Klassennamen reicht aus, um sie zu stoppen :) Ich habe nach 'obj c obfuscator' gegoogelt, aber jeder empfiehlt, dass es nicht hilft - sie werden deine Shareware knacken - nun, es ist nicht mein Fall – user564068

+0

@ user564068 Ich bin nicht bewusst, irgendwelche Tools, die das für Obj C. tun werden. – karlphillip

1

Sie wirklich wahrscheinlich nicht mit diesem Problem zu belästigen. Die Verschleierung wird einen entschlossenen Hacker nicht daran hindern, einen wirklich wertvollen Algorithmus zurückzuentwickeln. Zufällige Benutzer werden sich nicht darum kümmern, so dass Sie wahrscheinlich viel Arbeit für wenig Mehrwert leisten. Wie @mvds in einem Kommentar zu Ihrer Frage bemerkt, werden NIB-Verbindungen den Zweck vieler Klassen verraten und ein entschlossener Hacker könnte dtrace/Instruments.app verwenden, um Nachrichten zu verfolgen, um viel von dem Rest dessen zu finden, was sie brauchen.

Jede wirklich wertvolle IP muss durch etwas Stärkeres als die Verschleierung geschützt werden und sollte wahrscheinlich in C/C++ geschrieben sein sowie einen legalen Patent- und Urheberschutz (und Durchsetzung) haben.

+0

Ja, ich verstehe über Nib-Verbindungen, aber es ist nicht Hacker/Cracker ich mache mir Sorgen. Ich habe Freeware Utility, und ich möchte es vor lästigen Konkurrenten, die sehr neugierig sind, "was ist drin" schützen. Das Ändern von Funktionen/Klassennamen reicht aus, um sie zu stoppen :) Ich habe nach 'obj c obfuscator' gegoogelt, aber jeder empfiehlt, dass es nicht hilft - sie werden deine Shareware knacken - nun, es ist nicht mein Fall – user564068

+2

Mach dir keine Mühe. Wenn Sie das Innere schützen möchten, ein Patent anmelden oder einen anderen gesetzlichen Schutz nehmen. Einmal verteilt, ist die Funktionsweise Ihrer App für jedermann mit ein wenig Neugierde offensichtlich. – bbum

0

Wenn Sie dies noch nicht tun, können Sie Ihre ausführbare Datei von bestimmten unnötigen Symbolen entfernen, indem Sie "Deployment Postprocessing" und "Strip Linked Product" in der Xcode Build-Einstellung aktivieren. (Oder benutzen Sie einfach das strip Werkzeug direkt.) Besser als nichts.

+0

Leider hilft Streifen nicht. Class-Dump-Ausgabe ist absolut gleich vor und nach dem Strip – user564068