# Anti Anti Hooking/Debugging

## I. Disable Debugging

D'après OWASP, la technique la plus répendu pour faire de l'anti debogage et l'utilisation de la fonction ptrace :&#x20;

{% embed url="<https://mas.owasp.org/MASTG/iOS/0x06j-Testing-Resiliency-Against-Reverse-Engineering/#anti-debugging-detection>" %}

Ainsi il nous suffirait soit de patched le binaire ou bien d'utiliser un debogeur pour changer la valeur 0x1f responsable de la détection en 0x00 ou bien d'utiliser frida-trace

On peut utiliser lldb pour faire cela et l'installer depuis cydia.

Regardons avant tout l'assembleur et le pseudo code :&#x20;

### Le code :&#x20;

<figure><img src="https://1236449586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnLNcn403FNHCLyLwYmTO%2Fuploads%2FMVqYByhJiG4lgWLTsCAt%2Fimage.png?alt=media&#x26;token=b8d10cc1-581f-4c33-9040-8f701fc1a4bc" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1236449586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnLNcn403FNHCLyLwYmTO%2Fuploads%2FznszgpUoY78dRR8EE8EZ%2Fimage.png?alt=media&#x26;token=844babfb-cfd8-486a-a69b-b0729c6a25b1" alt=""><figcaption></figcaption></figure>

## Méthode 1 : Patch le binaire

Suivez les instructions que la fondation OWASP vous donne en remplaçant l'instruction qui nous intéresse par un NOP.&#x20;

<figure><img src="https://1236449586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnLNcn403FNHCLyLwYmTO%2Fuploads%2FJTavHzSZrOg411gRZtQQ%2Fimage.png?alt=media&#x26;token=58aa199a-d2e5-435c-b8f0-4f63d4ad543f" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1236449586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnLNcn403FNHCLyLwYmTO%2Fuploads%2Fr4b4K3ORRVQBYH5bYyMC%2Fimage.png?alt=media&#x26;token=6791e1dc-d949-42f8-a567-82e91ac2e76a" alt=""><figcaption></figcaption></figure>

Transfert du nouveau binaire vers l'appareil :&#x20;

<figure><img src="https://1236449586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnLNcn403FNHCLyLwYmTO%2Fuploads%2FQcjdfoetagbpXWggB6U9%2Fimage.png?alt=media&#x26;token=352a2568-0991-4d81-ac4a-c12dfd2e687f" alt=""><figcaption></figcaption></figure>

ne pas oublier de chmod +x file

On lance un debuggeur et on va cliquer sur le bouton disable debugging si l'application crash alors le patch n'aura pas fonctionné sinon vous avez réussi :&#x20;

<figure><img src="https://1236449586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnLNcn403FNHCLyLwYmTO%2Fuploads%2FSU0dDIFkDnDhGhBYQ3C7%2Fimage.png?alt=media&#x26;token=e66b86df-df69-4383-8249-c86ba1cd22b0" alt=""><figcaption></figcaption></figure>

L'application ne crash pas ce qui veut dire que nous avons bien désactivé la protection anti-debugging.

## Méthode 2 : Frida-trace

On utilise frida trace pour tracer les appels à la fonction ptrace

<figure><img src="https://1236449586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnLNcn403FNHCLyLwYmTO%2Fuploads%2FDxGVaRxcZKE4wmohfTl5%2Fimage.png?alt=media&#x26;token=c4c3ead7-8cb3-4d07-885f-a05a21521586" alt=""><figcaption></figcaption></figure>

On change la valeur de request en 0x00 car 0x1f est responsable de la détection.

<figure><img src="https://1236449586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnLNcn403FNHCLyLwYmTO%2Fuploads%2FjMfbhoxRo1XxF07JB8ZP%2Fimage.png?alt=media&#x26;token=7b7652ae-5530-40cc-9ec2-58089c87ced3" alt=""><figcaption></figcaption></figure>

On lance de nouveau la première commande faite et on remarque qu'en y attachant un debugger l'application ne crash pas.

## Méthode 3 : LLDB

On va désormais utiliser un debuggeur on va faire la même chose qu'avec frida mais à l'aide du debuggeur :&#x20;

<figure><img src="https://1236449586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnLNcn403FNHCLyLwYmTO%2Fuploads%2FIYLs01bpAZJmNNRsCPTt%2Fimage.png?alt=media&#x26;token=54a37652-c593-45de-af51-cfcc44bab658" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1236449586-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnLNcn403FNHCLyLwYmTO%2Fuploads%2F7HJh63FeJZvDoObtKIQK%2Fimage.png?alt=media&#x26;token=725bd5ed-8779-4b8d-97a4-4f710f2b1795" alt=""><figcaption></figcaption></figure>

On a mis un breakpoint lors de l'appel de ptrace et puis on a modifier la valeur du registre x0 qui stockait la valeur 0x1f.

## II. Disable Injection
