2010-02-25 11 views
43

Ho appena finito una libreria in Objective-C che ho compilato come libreria statica per la distribuzione.Decomposizione librerie Objective-C

Avrei voluto sapere quali sono le possibilità di ottenere questo decompilato sono là fuori.

  • Conosci qualche software in grado di farlo?
  • Se sì, come potrei proteggermi meglio?

EDIT: mia lib statica è fatto per iPhone/ARM

Ho creato un algoritmo che a seconda delle alcuni parametri del app, può funzionare come demo o come codice completo. Si inizia l'oggetto con le variabili X e si sblocca la versione completa. Mi stavo chiedendo se saranno in grado di vedere questo algoritmo in modo che possano creare un generatore di chiavi.

+0

FYI, avendo gli utenti inserire un codice per utilizzare la versione completa suona iffy per un'app per iPhone.Se stanno acquistando il gioco completo dall'App Store, non è necessario inserire un codice. Se lo stanno acquistando al di fuori dell'App Store, Apple non sarà felice. – Chuck

+3

Grazie, non intendo gli utenti finali ma gli sviluppatori. [[myLib alloc] initWithMySecretKey: @XXX]] –

+0

L'algoritmo verrà eseguito per controllare la chiave; possono vedere le istruzioni (come la macchina, devono conoscere le istruzioni per eseguirlo), quindi possono vederlo e sviluppare un generatore. – JHG

risposta

58

Non è chiaro cosa si sta cercando di proteggersi da. Sì, può essere decodificato. Lo strumento più semplice è otool, parte della distribuzione standard di sviluppatore:

otool -tV <library> 

Da che corrono fino a cose come IDA Pro, che ha il supporto iPhone ed è molto bello per questo tipo di lavoro. Nel frattempo, sono davvero sorpreso di non aver ancora visto una rielaborazione di otx per iPhone/ARM. Non sarei sorpreso di vedere uno spettacolo alla fine. E ovviamente c'è gdb se stai cercando di capire come le cose fluiscono e quali sono i dati in vari punti.

Se si dispone di ulteriori dettagli su ciò che si sta cercando di proteggersi da, ci possono essere alcune risposte mirate. Oltre a ciò, leggi i commenti di Chuck.

+1

Grazie Rob, questo è stato molto illuminante. Ho aggiunto ulteriori informazioni su ciò che sto cercando di proteggere. –

+2

Vedo la modifica. Alla tua domanda, sì, con un debugger saranno in grado di creare un generatore di chiavi. Ma loro non si preoccuperanno. Cambieranno semplicemente il file binario per saltare il controllo dei tasti. Non ti preoccupare troppo. Se la tua biblioteca è così popolare che le persone si stanno prendendo la briga di creare chiavi false, allora è abbastanza popolare che comunque guadagnerai un sacco di soldi. Preoccupati per questo quando stai rotolando in tutta quella pasta. Se perdi tempo con l'offuscamento (che non ti aiuta molto), non avrai mai abbastanza tempo per creare il fantastico prodotto che chiunque acquisterà comunque. –

+1

In ogni caso, consiglierei di creare versioni separate piuttosto che usare una chiave. Quando le persone pagano, invia loro la versione completa. Meno cose da fare in modo sbagliato, meno codice gonfiato, molto più difficile da rompere con persone a caso (perché non avranno il codice completo). –

5

ChanceGetsDecompiled = ExpectedGainFromBeingDecompiled/PopularityOfLibrary

Beh, se si vuole veramente sapere vorrei provare decompilazione la vostra auto. Non si dice se questo è per PPC, Intel o ARM che fa la differenza. Ecco un decompilatore per Intel i386 Decompiler

Non so cosa si possa fare (non credo ci sia molto) per limitare questo. Il codice può sempre essere decodificato. Sii felice che non usi java o .net. La loro decompilazione è così bella.

+0

Ciao Jamone, grazie per il tuo post. In realtà la libreria che ho creato è per iPhone SDK. –

+0

Il collegamento fornito è rotto –

+0

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

80

Se eseguito, può essere decompilato. Objective-C è particolarmente facile da decompilare in codice leggibile grazie alle sue caratteristiche dinamiche. Se vuoi rendere le cose un po 'più difficili, puoi scrivere la maggior parte del tuo codice in chiaro C e rimuovere il file eseguibile - che ovviamente ha il compromesso di rendere più difficile la gestione dell'applicazione. Ma sii onesto con te stesso: se qualcuno vuole rompere il tuo codice, non sarai in grado di fermarli. I cracker hanno praticamente una quantità illimitata di tempo ed entusiasmo e saranno davvero eccitati da ogni nuovo sforzo che hai fatto per fermarli. Nessuno ha ancora creato un software noncrissibile e le più grandi corporazioni del mondo hanno provato. Non farai di meglio di loro, specialmente se devi chiedere informazioni su Stack Overflow.

Prenditi il ​​tempo che vorresti mettere nella decompilazione contrastata e usalo per rendere il tuo prodotto migliore - questo avrà un ROI molto migliore.

+72

'Non hai intenzione di fare meglio di loro, soprattutto se hai bisogno di chiedere informazioni su Stack Overflow. - Lol ... – Rodrigo

+4

"e sarà davvero eccitato da ogni nuovo sforzo che hai fatto per fermarli" Lol ... Ben detto. – theKRAY

+0

Puoi dirmi qualsiasi strumento o modo utile per decompilare la libreria ios. estraggo il file oggetto ma non è utile perché è binario. Voglio il codice sorgente dalla libreria statica. ar -xv MyLib.a MyObj.o questo comando fornisce solo il file binario. come posso estrarre il file di classe da quello. –

Problemi correlati