# Dé-obfuscation

## Site web

<http://apk-deguard.com/>: Site de dé-obfuscation automatisée en ligne basé sur du machine learning.

## Description

L'obfuscation est un procédé utilisé par les développeurs d'applications afin de remplacer les différents éléments du code source de leurs applications (classes, call API, noms de variables...) en valeurs beaucoup moins explicite afin de rendre plus difficile la revue de code pour un potentiel individu malveillant. Ainsi, ils peuvent coder leurs applications de manière lisible pour eux puis obfusquer que le code avant de le rendre publique avec des outils tels que ProGuard dans le cas de code JAVA par exemple.

Le processus permettant de rendre de nouveau le code compréhensible est nommé Dé-obfuscation et demande une analyse fastidieuse du code et une grande compréhension de celui-ci.

## Reconnaissance

L'outil [APKiD](https://github.com/rednaga/APKiD) peut permettre dans un premier temps de vérifier si le code a été obscurci ainsi que les éléments obscurcis.

```
apkid path/to/example.apk
[+] APKiD 2.1.2 :: from RedNaga :: rednaga.io
[*] paht/to/example.apk!classes.dex
 |-> anti_vm : Build.TAGS check, possible ro.secure check
 |-> compiler : r8
 |-> obfuscator : unreadable field names, unreadable method names
```

## Méthode

Lors de l’analyse de code obscurci, l’annotation des noms de classe, des noms de méthodes et d’autres identifiants au fur et à mesure est une bonne pratique.

De plus, lorsque le fonctionnement d'une classe peut être devinée, les outils de décompilation de code tels que intelliJ ou JADX sont permettent de renommer des classes, variables etc permettant de rendre le code plus lisible.

Exemple:

<figure><img src="/files/bHBx7sy6LJLYHTk2fIkT" alt=""><figcaption><p>Avant renommage</p></figcaption></figure>

<figure><img src="/files/lhwwQ2OEnGf9ZoAid6pZ" alt=""><figcaption><p>Après renommage</p></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.s1rn3tz.ovh/pentest-mobile/android/reverse-engineering/de-obfuscation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
