> For the complete documentation index, see [llms.txt](https://sansong.gitbook.io/cyber/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sansong.gitbook.io/cyber/rev/android/frida/trace.md).

# Trace

`frida-trace` permet de tracer les appels à certaines méthodes de l'app.

{% hint style="info" %}
Dans les commandes suivantes `-U` est utilisé pour les téléphones connectés avec adb par USB. Pour une connexion sans fil utiliser `-R`.
{% endhint %}

{% hint style="success" %}

## Tips

1. Possible d'utiliser des wildcards

```
## hook toutes les méthodes d'une classe
-j 'com.example.app.MyClass!*'

## hook toutes les méthodes commençant par "sign"
-j '*!sign*'
```

2. Possible de définir plusieurs patterns

```
-j 'com.example.app.MyClass!*' -j '*!sign*'
```

{% endhint %}

**Lancer l'app directement**

```
frida-trace -U -f <package_name> -j '<class>!<method>'
```

**S'attacher à un processus existant**

```
frida-trace -U <nom du processus> -j '<class>!<method>'
```

{% hint style="success" %}
Le nom du processus est visible avec la commande:

```
frida-ps -U
```

{% endhint %}

**Afficher la stack trace**

`frida-trace` créé un répertoire `__handlers__` dans le répertoire où la commande est exécutée. **Pour afficher la stack trace** (les appels menant à la fonction ciblée) d'une fonction, **ajouter ce bout de code dans la méthode** `onEnter` du fichier `__handlers__/.../la_classe_en_question.js`.

```javascript
log('YourMethod(' + args.join(', ') + ')');
Java.perform(function () {
    var Log = Java.use('android.util.Log');
    var Exception = Java.use('java.lang.Exception');
    var stack = Log.getStackTraceString(Exception.$new());
    log(stack);
});
```
