> For the complete documentation index, see [llms.txt](https://blog.s1rn3tz.ovh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://blog.s1rn3tz.ovh/pentest-mobile/ios/corruptions-de-memoire-ios.md).

# 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:

```
register write x22 0xFFFFFFFF00000000
```

Passer à l'instruction suivante:

```
si
```

Lire la mémoire à une adresse spécifique:

```
x/s $x1
```

{% hint style="info" %}
**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.
{% endhint %}

Désassembler une fonction:

```
disassemble -n <function>
```

Backtrace:

```
bt
```

Lister ler images chargées:

```
image list
```

Faire une recherche par regex dans les images chargées:

```
image lookup -rn "<regex>"
```

Finir l'exécution:

```
c
```

Quitter LLDB:

```
quit
```
