Obwohl ich den anderen Antworten zustimme, gibt es einige pragmatische Dinge, die dort übersehen werden.
Vollständige Offenlegung: Ich arbeite für ein Unternehmen, das Verschleierungs- / Schutzsoftware für mobile Anwendungen entwickelt.
Für eine App, die auf einem vom Angreifer kontrollierten Gerät ausgeführt wird, ist kein vollständiger, unzerbrechlicher Schutz möglich. Es gibt jedoch Software, die darauf abzielt, die Messlatte höher zu legen und es für eine Person weniger / nicht lohnenswert macht, einen Angriff auszuführen.
In der Regel decken diese Lösungen zwei Aspekte ab:
Statisch Schutz
Dies umfasst normalerweise eine Reihe von Verschleierungstechniken, die es einem Angreifer erschweren sollen, eine mobile Anwendung zu analysieren, indem er die Binärdateien mit Tools wie IDA Pro, Ghidra und Hopper untersucht.
Techniken hier sind Kontrollfluss-Verschleierung, semantische Verschleierung (Klasse, Methode, ... Namen), arithmetische Verschleierung, Zeichenfolgenverschlüsselung, Klassenverschlüsselung, ...
Diese machen es Es ist sehr schwierig, einen Blick in eine Binärdatei zu werfen und herauszufinden, was gerade passiert, bietet jedoch keinen großen Schutz, wenn ein Angreifer die Anwendung betrachtet, während sie auf dem Gerät selbst ausgeführt wird.
Dynamischer Schutz
Dies sind Schutztechniken, die darauf abzielen, eine Anwendung vor Analysen oder Änderungen zu schützen, während sie auf dem Gerät ausgeführt wird. Beliebte Tools sind hier Debugger (lldb, gdb, ...) und Hooking-Frameworks (Frida, Cydia Substrate, ...).
Die hier beschriebenen Techniken versuchen, die Verwendung dieser Tools zu blockieren / zu erkennen, manipulierte Ausführungsumgebungen (Geräte mit Jailbreak / Root, Emulatoren), an der Anwendung vorgenommene Änderungen und vieles mehr zu erkennen.
Schlussfolgerung
Obwohl es von größter Wichtigkeit ist, sicherzustellen, dass Ihre Anwendung mit den genau definierten Sicherheitspraktiken erstellt wurde (Verschleierungs- / Schutzsoftware hilft Ihnen hier nicht !), gibt es Tools, die als Bündel fungieren können von Shells um Ihre Anwendung herum, die es insgesamt viel schwieriger und hoffentlich nicht lohnenswert machen, Ihre Anwendung zu knacken.