1. Evitare di objC in codice sicuro.
Poiché il sistema di classi di ObjC dipende in gran parte dalla riflessione in fase di esecuzione, l'intera interfaccia deve essere inclusa insieme all'eseguibile. Ciò consente a strumenti come class-dump
di ripristinare facilmente l'interfaccia @ source del file binario.
Pertanto, le funzioni di codice protetto devono essere scritte come una funzione C, non un metodo ObjC.
2. Utilizzare strip
.
Per impostazione predefinita, il compilatore manterrà tutti i simboli privati (che consente la traccia di stack per essere più leggibile). È possibile utilizzare strip
per eliminare tutti questi simboli.
3. Offuscamento.
I passaggi precedenti possono nascondere solo la logica del codice. Ma se la password è una stringa costante, è immediatamente visibile utilizzando l'utilità strings
. Si può offuscare questo costruendo la password in runtime (ad esempio, memorizzare la password codificata in ROT-13 nel file.)
4. O semplicemente modificare il progetto.
Non importa quanto sia buono il tuo sistema di protezione, dato che l'hacker ha il controllo totale sulla propria macchina, con un tempo sufficiente, vince sempre. È meglio rivedere il tuo design, ad esempio perché la password deve venire con l'eseguibile? O perché è necessaria anche una password globale?
cos'è questa cosa OTX che hai menzionato e come usarla? –