Corruptions de mémoire (iOS)
Mis à jour
Point clé : Chaque appel système macOS ARM64 suit le même schéma.
Chargement des arguments dans X0 jusqu'à X7 => Syscall dans X16 => Execution SVC #0x80.La compréhension de cette convention d’appel est essentielle pour écrire du shellcode et comprendre les charges utiles d’exploitation.
Attacher LLDB à un exécutable:
$ lldb ./binaryPlacer un breakpoint et lancer l'execution:
b <function>
runPlacer un breakpoint conditionnel:
Par exemple:
breakpoint set -n objc_msgSend -c '(bool)[(id)$x0 isKindOfClass:(Class)objc_getClass("<className>")]'Supprimer un breakpoint:
breakpoint delete 1Lire des registres:
register read x1 x2 ... x16Ecrire dans un registre:
Passer à l'instruction suivante:
Lire la mémoire à une adresse spécifique:
Il s'agit d'une technique de débogage essentielle. La commande x/s lit la mémoire sous forme de chaîne de caractères à partir de l'adresse stockée dans X1, X2 ou autre. Lors du développement d'exploits, cette technique est constamment utilisée pour examiner les charges utiles, le shellcode et les chaînes corrompues à des adresses arbitraires.
Désassembler une fonction:
Backtrace:
Lister ler images chargées:
Faire une recherche par regex dans les images chargées:
Finir l'exécution:
Quitter LLDB:
Mis à jour
register write x22 0xFFFFFFFF00000000six/s $x1disassemble -n <function>btimage listimage lookup -rn "<regex>"cquit