Déboguer une app impossible à déboguer
- Je suis récemment tombé sur une app impossible à déboguer. Cette app bloque l’attachement du débogueur, se ferme prématurément lors de l’injection de code, et fait crasher l’ensemble du téléphone si on l’exécute sur un appareil jailbreaké.
- Les apps iOS incluent souvent des protections supplémentaires comme la détection de jailbreak ou l’obfuscation du code. Cette app combine en particulier de nombreuses protections.
Version vidéo
- Il existe une version vidéo de ce billet, qui montre le processus plus en détail.
Sommaire
PT_DENY_ATTACH
- Contournement de
PT_DENY_ATTACH (mode facile)
- Contournement de
PT_DENY_ATTACH (mode difficile)
- Crash du téléphone
- Injection de code
- Conclusion
PT_DENY_ATTACH
- La première étape consiste à attacher le débogueur. Sur un téléphone jailbreaké, il est généralement facile d’attacher un débogueur.
- Une fonction appelée
ptrace bloque l’attachement du débogueur. Cette fonction empêche toute connexion future du débogueur via la requête PT_DENY_ATTACH.
Contournement de PT_DENY_ATTACH (mode facile)
PT_DENY_ATTACH ne bloque le débogueur qu’après son appel. Si l’on place un point d’arrêt avant l’appel, le débogueur reste attaché normalement.
- Il est possible de contourner l’appel en plaçant un point d’arrêt directement sur la fonction
ptrace.
Contournement de PT_DENY_ATTACH (mode difficile)
- Certains développeurs implémentent le blocage du débogueur via un appel système direct au lieu d’utiliser
ptrace.
- Dans ce cas, il faut trouver cet appel système dans le binaire et le contourner.
Crash du téléphone
- L’app provoque un redémarrage logiciel du téléphone dans certaines conditions. Cela se produit en appelant en boucle infinie une méthode très gourmande en mémoire.
- On peut contourner cette méthode avec
lldb.
Injection de code
- L’app plante lors de l’injection de code. Il est probable que cela soit dû à un identifiant de groupe d’apps incorrect.
- Sur un téléphone jailbreaké, il est possible d’injecter du code sans re-signer l’app. Sinon, on peut résoudre le problème en swizzlant la méthode.
1 commentaires
Avis Hacker News
Bryce Bostwick fait un travail très impressionnant et inspirant sur le débogage et le reverse engineering d’apps
Sous DOS/Windows, les techniques anti-débogage sont courantes depuis longtemps
PT_DENY_ATTACHsemble être une fonctionnalité de cette seconde catégorieIl est surprenant que la vérification de l’App Store d’Apple ne rejette pas les apps qui effectuent des appels système directs
libSystemIl se demande pourquoi l’auteur a cherché
svc 0x80au lieu demov w16, #26L’auteur est prêt à répondre aux questions
La vidéo en haut est une excellente vidéo de programmation
Il se demande si cette app est légitime ou si elle a été déboguée parce qu’elle était suspectée d’être un malware
Contournement de
PT_DENY_ATTACH(Hard Mode)PT_DENY_ATTACHne fasse rienIl s’interroge sur la notification "com.apple.tw.twrr"
com.appleIl se demande s’il existe des personnes qui font du reverse engineering du code JavaScript de sites web
Il se demande s’il est possible d’exécuter des kexts personnalisés sur un iPhone jailbreaké