2010-02-25 14 views
43

Ich habe gerade eine Bibliothek in Objective-C fertiggestellt, die ich als statische Bibliothek für die Verteilung kompiliert habe.Dekompilieren von Objective-C-Bibliotheken

Ich wollte wissen, welche Chancen, dies zu dekompilieren, sind da draußen.

  • Kennen Sie irgendeine Software, die das tun kann?
  • Wenn ja, wie könnte ich mich besser schützen?

EDIT: Meine statische lib für iPhone/ARM gemacht wird

Ich habe einen Algorithmus, der einige Parameter der App je nach, es als Demo oder als Full-Code ausgeführt werden kann. Sie initialisieren das Objekt mit X-Variablen und entsperren die Vollversion. Ich habe mich gefragt, ob sie diesen Algorithmus sehen können, damit sie einen Schlüsselgenerator erstellen können.

+0

FYI, wenn Benutzer einen Code eingeben, um die Vollversion zu verwenden, klingt iffy für eine iPhone App.Wenn sie das komplette Spiel im App Store kaufen, müssen Sie keinen Code eingeben. Wenn sie es außerhalb des App Stores kaufen, wird Apple nicht glücklich sein. – Chuck

+3

Danke, ich meine nicht Endnutzer, sondern die Entwickler. [[myLib alloc] initWithMySecretKey: @XXX]] –

+0

Ihr Algorithmus wird ausgeführt, um den Schlüssel zu überprüfen; Sie können die Anweisungen sehen (wie die Maschine, sie müssen die Anweisungen kennen, um sie auszuführen), dann können sie sie sehen und einen Generator entwickeln. – JHG

Antwort

58

Es ist nicht klar, was Sie versuchen, sich zu schützen von. Ja, es kann rückentwickelt werden. Das einfachste Werkzeug ist otool, einen Teil der Standardentwicklers Verteilung:

otool -tV <library> 

Von dass sie laufen bis zu Dingen wie IDA Pro, die iPhone-Unterstützung und ist für diese Art von Arbeit sehr schön. Dazwischen bin ich wirklich überrascht, dass ich noch keine Überarbeitung von otx für iPhone/ARM gesehen habe. Ich wäre nicht überrascht, wenn einer irgendwann auftaucht. Und natürlich gibt es gdb, wenn Sie herausfinden wollen, wie die Dinge fließen und was die Daten an verschiedenen Punkten sind.

Wenn Sie weitere Details darüber haben, vor was Sie sich schützen möchten, können einige gezielte Antworten angezeigt werden. Lesen Sie darüber hinaus Chucks Kommentare.

+1

Danke Rob, das war sehr aufschlussreich. Ich habe weitere Informationen darüber hinzugefügt, was ich zu schützen versuche. –

+2

Ich sehe die Bearbeitung. Zu Ihrer Frage, ja, mit einem Debugger können sie einen Schlüsselgenerator erstellen. Aber sie werden nicht stören. Sie ändern nur die Binärdatei, um die Schlüsselüberprüfung zu überspringen. Mach dir nicht zu viele Sorgen darüber. Wenn Ihre Bibliothek so beliebt ist, dass Leute sich die Mühe machen, gefälschte Schlüssel zu erstellen, dann ist es beliebt genug, dass Sie sowieso eine Menge Geld verdienen. Machen Sie sich Sorgen, wenn Sie den ganzen Teig rollen. Wenn Sie Ihre Zeit mit Verschleierung verschwenden (was nicht viel hilft), dann haben Sie nie genug Zeit, um das großartige Produkt zu machen, das sowieso jemand kaufen wird. –

+1

In jedem Fall würde ich empfehlen, separate Versionen zu erstellen, anstatt einen Schlüssel zu verwenden. Wenn Leute dafür bezahlen, schicken Sie ihnen die Vollversion. Weniger Dinge, die schiefgehen, weniger Code aufblähen, viel schwerer von zufälligen Leuten zu knacken (weil sie nicht den vollen Code haben). –

5

ChanceGetsDecompiled = ExpectedGainFromBeingDecompiled/PopularityOfLibrary

Nun, wenn Sie wirklich wissen wollen, würde ich decompiling es versuchen Sie sich selbst. Sie sagen nicht, ob dies für PPC, Intel oder ARM ist, was einen Unterschied macht. Hier ist ein Decompiler für Intel i386 Decompiler

Ich weiß nicht, was Sie tun könnten (ich glaube nicht, es gibt viel), um dies zu begrenzen. Code kann immer reverse engineered sein. Sei froh, dass du kein Java oder .net benutzt. Ihre Dekompilierung ist so nett.

+0

Hallo Jamone, danke für deinen Beitrag. Eigentlich ist die Lib, die ich gebaut habe, für iPhone SDK. –

+0

Der angegebene Link ist defekt –

+0

Aktualisierter Link: http://www.ohloh.net/p/i386codedump –

80

Wenn es ausgeführt wird, kann es dekompiliert werden. Objective-C ist dank seiner dynamischen Eigenschaften besonders leicht in lesbaren Code zu dekompilieren. Wenn Sie die Dinge etwas schwieriger machen möchten, könnten Sie den Großteil Ihres Codes in C schreiben und die ausführbare Datei entzippen - was natürlich den Nachteil hat, dass Ihr Anwendungsdesign schwerer zu verwalten ist. Aber sei ehrlich zu dir selbst: Wenn jemand deinen Code knacken will, wirst du ihn nicht aufhalten können. Cracker haben praktisch unbegrenzte Mengen an Zeit und Enthusiasmus und werden tatsächlich von allen neuen Anstrengungen, die Sie unternommen haben, um sie zu stoppen, begeistert sein. Niemand hat bisher unknackbare Software gemacht, und die größten Unternehmen der Welt haben es versucht. Du wirst es nicht besser machen als sie, besonders wenn du auf Stack Overflow danach fragen musst.

Nehmen Sie sich die Zeit, die Sie in die Dekompilierung gesteckt hätten, und nutzen Sie sie, um Ihr Produkt zu verbessern - das wird einen viel besseren ROI haben.

+72

'Sie werden nicht besser als sie, vor allem, wenn Sie auf Stack Overflow danach fragen müssen. Lol ... – Rodrigo

+4

"und wird tatsächlich von jeder neuen Anstrengung, die Sie einsetzen, um sie zu stoppen" Lol ... Nun gut. – theKRAY

+0

Können Sie mir bitte ein Tool oder eine Methode nennen, die für die Dekompilierung der ios-Bibliothek nützlich ist? Ich extrahiere Objektdatei, aber das ist nicht nützlich, weil es binär ist. Ich möchte Quellcode aus der statischen Bibliothek. ar -xv MyLib.a MyObj.o Dieser Befehl gibt nur eine Binärdatei. Wie kann ich die Klassendatei daraus extrahieren? –

Verwandte Themen