> 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/guides-outils/lldb.md).

# LLDB

### Contrôle des processus

| Commande                                  | Description                                                                  |
| ----------------------------------------- | ---------------------------------------------------------------------------- |
| `process attach --name <nom>`             | Attache LLDB à un processus en cours d'exécution à partir de son nom.        |
| `process attach --name <nom> --waitfor`   | Attend le lancement du processus, puis s'y attache automatiquement.          |
| `process connect connect://<hôte>:<port>` | Se connecte à un `debugserver` distant.                                      |
| `process status`                          | Affiche l'état actuel du processus débogué.                                  |
| `c` (`continue`)                          | Reprend l'exécution du programme.                                            |
| `detach`                                  | Détache LLDB du processus tout en laissant celui-ci continuer son exécution. |
| `q` (`quit`)                              | Quitte LLDB.                                                                 |

***

### Points d'arrêt (Breakpoints)

| Commande                                      | Description                                                                                 |
| --------------------------------------------- | ------------------------------------------------------------------------------------------- |
| `b <méthode>` (`breakpoint set --name`)       | Place un point d'arrêt sur une fonction ou une méthode.                                     |
| `b -a <adresse>` (`breakpoint set --address`) | Place un point d'arrêt à une adresse mémoire précise.                                       |
| `breakpoint set --selector <sélecteur>`       | Place un point d'arrêt sur toutes les méthodes implémentant un sélecteur Objective-C donné. |
| `br l` (`breakpoint list`)                    | Liste tous les points d'arrêt définis.                                                      |
| `breakpoint enable <num>`                     | Active un point d'arrêt.                                                                    |
| `breakpoint disable <num>`                    | Désactive un point d'arrêt.                                                                 |
| `breakpoint delete <num>`                     | Supprime un point d'arrêt spécifique.                                                       |
| `breakpoint delete`                           | Supprime l'ensemble des points d'arrêt.                                                     |

***

### Exécution pas à pas (Stepping)

| Commande         | Description                                                                              |
| ---------------- | ---------------------------------------------------------------------------------------- |
| `n` (`next`)     | Exécute l'instruction suivante sans entrer dans les appels de fonctions (niveau source). |
| `s` (`step`)     | Exécute l'instruction suivante en entrant dans les fonctions appelées (niveau source).   |
| `fin` (`finish`) | Exécute jusqu'au retour de la fonction courante.                                         |
| `ni`             | Exécute une seule instruction assembleur sans entrer dans les appels.                    |
| `si`             | Exécute une seule instruction assembleur en entrant dans les appels.                     |

***

### Threads et pile d'appels

| Commande                   | Description                                                 |
| -------------------------- | ----------------------------------------------------------- |
| `thread list`              | Affiche la liste des threads du processus.                  |
| `bt` (`backtrace`)         | Affiche la pile d'appels du thread courant.                 |
| `bt all`                   | Affiche la pile d'appels de tous les threads.               |
| `f <num>` (`frame select`) | Se positionne sur une frame spécifique de la pile d'appels. |

***

### Registres

| Commande                        | Description                                                |
| ------------------------------- | ---------------------------------------------------------- |
| `register read`                 | Affiche tous les registres généraux.                       |
| `register read <reg> <reg>`     | Affiche le contenu des registres spécifiés.                |
| `register read pc`              | Affiche la valeur du compteur ordinal (*Program Counter*). |
| `register write <reg> <valeur>` | Modifie le contenu d'un registre.                          |

***

### Mémoire

| Commande                                               | Description                                                    |
| ------------------------------------------------------ | -------------------------------------------------------------- |
| `x <adresse>` (`memory read`)                          | Lit la mémoire à l'adresse indiquée.                           |
| `x $x0`                                                | Lit la mémoire pointée par le registre `x0`.                   |
| `memory read --format s <adresse>`                     | Affiche le contenu mémoire sous forme de chaîne de caractères. |
| `memory read --size 1 --format x --count 64 <adresse>` | Lit 64 octets et les affiche en hexadécimal.                   |
| `x/16xb <adresse>`                                     | Version abrégée pour afficher 16 octets en hexadécimal.        |
| `memory write <adresse> <valeur>`                      | Écrit une valeur à une adresse mémoire.                        |

***

### Expressions et affichage

| Commande                           | Description                                                    |
| ---------------------------------- | -------------------------------------------------------------- |
| `expr <expression>` (`expression`) | Évalue une expression.                                         |
| `expression (char *)$x1`           | Convertit le contenu du registre `x1` en chaîne de caractères. |
| `po <expression>`                  | Affiche la description d'un objet Objective-C.                 |
| `p <expression>`                   | Affiche la valeur brute d'une expression.                      |

***

### Désassemblage

| Commande                                            | Description                                                  |
| --------------------------------------------------- | ------------------------------------------------------------ |
| `di -f` (`disassemble --frame`)                     | Désassemble la fonction correspondant à la frame courante.   |
| `disassemble --name "<méthode>"`                    | Désassemble une méthode ou une fonction spécifique.          |
| `disassemble --start-address <adresse> --count <n>` | Désassemble `n` instructions à partir de l'adresse indiquée. |

***

### Points de surveillance (Watchpoints)

| Commande                                               | Description                                                   |
| ------------------------------------------------------ | ------------------------------------------------------------- |
| `watchpoint set expression -w write -- <adresse>`      | Déclenche un arrêt lors d'une écriture à l'adresse spécifiée. |
| `watchpoint set expression -w read -- <adresse>`       | Déclenche un arrêt lors d'une lecture à l'adresse spécifiée.  |
| `watchpoint set expression -w read_write -- <adresse>` | Déclenche un arrêt lors des lectures et des écritures.        |
| `watchpoint list`                                      | Affiche la liste des watchpoints actifs.                      |
| `watchpoint delete <num>`                              | Supprime un watchpoint.                                       |

***

### Autres commandes utiles

| Commande                                       | Description                                                                    |
| ---------------------------------------------- | ------------------------------------------------------------------------------ |
| `help`                                         | Affiche la liste des commandes disponibles.                                    |
| `help <commande>`                              | Affiche l'aide détaillée d'une commande spécifique.                            |
| `image list`                                   | Liste toutes les bibliothèques et tous les exécutables chargés en mémoire.     |
| `image list -f <nom>`                          | Recherche un binaire ou une bibliothèque chargée par son nom.                  |
| `settings set stop-disassembly-display always` | Affiche systématiquement le désassemblage lorsque l'exécution est interrompue. |
| `script`                                       | Ouvre l'interpréteur Python intégré à LLDB.                                    |
