For the complete documentation index, see llms.txt. This page is also available as Markdown.

Corruptions de mémoire (iOS)

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.

Debugging

Attacher LLDB à un exécutable:

$ lldb ./binary

Placer un breakpoint et lancer l'execution:

b <function>
run

Placer un breakpoint conditionnel:

Par exemple:

breakpoint set -n objc_msgSend -c '(bool)[(id)$x0 isKindOfClass:(Class)objc_getClass("<className>")]'

Supprimer un breakpoint:

breakpoint delete 1

Lire des registres:

register read x1 x2 ... x16

Ecrire 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