Indipendentemente dal fatto che sarai in grado di identificare le chiamate da una forma modificata o decentrata del tuo codice dipende dalla tua capacità di riconoscere se le chiamate potrebbero essere state fatte dal codice originale.
Ad esempio, se il tuo codice è in grado di emettere un valore per un parametro solo da un numero impostato di valori possibili, è probabile che qualsiasi chiamata con un valore sconosciuto sia stata creata da un altro codice diverso dal tuo.
Non esiste altrimenti alcun modo per sapere che cosa ha chiamato la tua API, specialmente se la chiamata è valida. Ad esempio, se stai ospitando un servizio web http pubblicamente pubblicitario, posso emettere i comandi di arricciatura per inviare richieste GET ad esso, e non sarebbe possibile dire che ho usato curl invece del tuo binario (e anche se il tuo binario fa qualcosa di intelligente come aggiungere le intestazioni, posso sempre annusarle e imitarle in seguito).
Per una libreria, non esiste un modo efficace per impedire a un altro binario di collegarsi ad esso e iniziare a utilizzare la sua API.
L'offuscamento rallenta solo il reverse-engineer. Se l'inversione del tuo binario è sufficientemente valida, qualcuno è destinato a superare la tua offuscazione prima o poi: il codice non è tutto, possono anche scaricare la memoria durante l'esecuzione e vedere cosa c'è dentro, ad es. urls, valori variabili, ecc. Può tuttavia deviare gli hacker più dilettanti che potrebbero aver voluto semplicemente aggirarlo. Si noti inoltre che non si tratta di un mezzo per proteggere informazioni importanti come chiavi o credenziali di API incorporate, come dimostrato recentemente e in modo spettacolare da la violazione di Retina-X , il che significa che un inversore può acquisire e imitare qualsiasi meccanismo da implementare per autenticare il binario originale contro la tua API.
La firma del codice non è un modo per proteggere il tuo codice dal reverse engineering. È un modo per garantire crittograficamente che l'integrità di un file binario non sia stata compromessa prima di acquisirla, cioè che il file binario è esattamente lo stesso di quello che è stato compilato dagli autori originali. Significa tuttavia che nessuno dovrebbe essere in grado di distribuire un binario modificato e farlo passare per una versione legittima che avresti distribuito da solo.