Pur essendo d'accordo con le altre risposte, trovo che ci siano alcune cose pragmatiche che vengono trascurate.
Divulgazione completa: lavoro per un'azienda che costruisce software di offuscamento / protezione per applicazioni mobili.
Non è possibile una protezione completa e indistruttibile per un'app in esecuzione su un dispositivo controllato da un utente malintenzionato. Tuttavia, esiste un software che mira ad alzare il livello e rende meno / non utile per una persona effettuare un attacco.
In genere queste soluzioni coprono due aspetti
Statico protezione
Questo di solito include una serie di tecniche di offuscamento che mirano a rendere difficile per un utente malintenzionato che vuole analizzare un'applicazione mobile esaminando i binari utilizzando strumenti come IDA Pro, Ghidra e Hopper.
Le tecniche qui sono l'offuscamento del flusso di controllo, l'offuscamento semantico (classe, metodo, ... nomi), l'offuscamento aritmetico, la crittografia delle stringhe, la crittografia delle classi, ...
Questi lo rendono molto difficile "sbirciare" all'interno di un binario e capire cosa sta succedendo, ma non offrire molta protezione quando un utente malintenzionato guarda l'applicazione mentre è in esecuzione sul dispositivo stesso.
Protezione dinamica
Si tratta di tecniche di protezione che mirano a proteggere un'applicazione dall'analisi o dalla modifica durante l'esecuzione sul dispositivo. Gli strumenti popolari qui sono debugger (lldb, gdb, ...) e framework di hooking (Frida, Cydia Substrate, ...).
Qui le tecniche cercheranno di bloccare / rilevare l'uso di questi strumenti, rilevare ambienti di esecuzione manomessi (dispositivo jailbroken / rooted, emulatori), modifiche apportate all'applicazione e molto altro.
Conclusione
Sebbene sia della massima importanza garantire che la tua applicazione sia stata creata utilizzando pratiche di sicurezza ben definite (il software di offuscamento / protezione non ti aiuterà qui!), esistono strumenti che possono funzionare come un gruppo di shell attorno alla tua applicazione che insieme rendono molto più difficile, e si spera non utile, violare la tua applicazione.