# Préparation à l'installation

Ce document de préparation à l'installation décrit les prérequis nécessaires avant de commencer. FIRERPA prend en charge de nombreux types d'appareils et d'architectures. Nous listons ici les opérations de préparation pour divers appareils courants. Vous pouvez choisir la méthode appropriée en fonction de votre situation réelle. FIRERPA se compose d'un client et d'un serveur. Le client est principalement constitué de bibliothèques et d'interfaces Python, tandis que le serveur est un service qui s'exécute sur le téléphone cible. Vous pouvez choisir d'installer les bibliothèques Python sur votre ordinateur pour contrôler le téléphone. De même, si vous devez contrôler l'appareil via Python, vous devrez installer et exécuter le serveur Android sur le téléphone, ce qui est obligatoire.

## Prérequis de base

L'environnement d'exécution idéal pour FIRERPA est un appareil qui vient d'être rooté (par exemple : un nouvel émulateur, une ROM avec des permissions natives, un appareil fraîchement rooté avec Magisk). Veuillez vous assurer de disposer d'un appareil Android ou d'un émulateur rooté avec plus de 2 Go de RAM et plus de 1 Go d'espace de stockage disponible. Nous recommandons d'utiliser les dernières versions des émulateurs Nox, LDPlayer ou AVD. Avant de démarrer, **assurez-vous de vérifier** les points suivants :

- [X] Désactiver Magisk Hide
- [x] Arrêter frida-server
- [X] Redémarrer l'appareil après confirmation

```{important}
Si vous n'effectuez pas les opérations ci-dessus comme requis, des problèmes de compatibilité pourraient vous empêcher d'utiliser pleinement les interfaces FIRERPA ou le bureau à distance.
```

## Paramètres système

En général, votre téléphone peut nécessiter les réglages suivants. Ils ne sont pas obligatoires, mais pour garantir une installation réussie du premier coup, il est recommandé de les effectuer si vous en avez le temps.

### Vérifier le fuseau horaire et l'heure

Ouvrez les paramètres système, trouvez 'Date et heure', et vérifiez si l'**Heure normale de Chine** ou votre fuseau horaire local est défini automatiquement. Vérifiez si l'heure est correcte ou dans une marge d'erreur acceptable. Sinon, désactivez **Utiliser le fuseau horaire fourni par le réseau** et **Heure du réseau**, puis réglez manuellement le fuseau horaire et l'heure sur ceux de votre emplacement actuel.

### Désactiver l'accessibilité

Ouvrez les paramètres système, trouvez 'Accessibilité' (dans les paramètres système ou avancés), et désactivez ou désinstallez toutes les applications qui utilisent les services d'accessibilité (par exemple, TalkBack, Auto.js, etc.).

```{note}
Les services d'accessibilité peuvent provoquer des conflits de fonctionnalités. Ne vérifiez ce point que si vous ne parvenez pas à utiliser normalement le bureau à distance ou les interfaces de FIRERPA.
```

## Paramètres réseau

Les conditions réseau varient pour les appareils physiques, les téléphones cloud, les émulateurs, etc. Vous devez configurer les paramètres correspondants à votre situation, sinon vous ne pourrez pas accéder au service après l'installation.

Pour un appareil physique, assurez-vous simplement que l'ordinateur et le téléphone sont sur le même réseau. Pour les émulateurs, par défaut, le réseau de l'émulateur n'est généralement pas connecté à celui de votre machine hôte. Si vous utilisez Android x86 (une machine virtuelle Android basée sur VMWare), essayez de régler le mode réseau sur 'Mode Pont' (Bridged Mode) dans les paramètres de la machine virtuelle. Pour les émulateurs comme LDPlayer ou Nox, vous devez installer les pilotes nécessaires via leurs paramètres, activer le mode pont, puis redémarrer l'émulateur. Pour un Android Virtual Device (AVD) d'Android Studio, il n'y a pas de paramètre équivalent. Si vous devez vous connecter à un AVD, exécutez d'abord `adb forward tcp:65000 tcp:65000` et utilisez `localhost` pour la connexion.

```{note}
Pour les ports de service transférés ou liés à l'adresse de bouclage (loopback), nous recommandons d'utiliser `localhost` au lieu de `127.0.0.1`, car certains de nos outils, comme ceux pour l'interception de paquets (man-in-the-middle), se basent sur `localhost` pour déterminer si la connexion est établie via USB.
```

## Autres paramètres

### WSA (Sous-système Windows pour Android)

Si vous utilisez WSA (Sous-système Windows pour Android), assurez-vous que votre version de WSA n'est pas inférieure à 2210.40000 et qu'il est rooté. Ensuite, ouvrez les paramètres de WSA -> Subsystem Resources -> sélectionnez 'Continuous', et désactivez 'Advanced Networking'. Sélectionnez 'Developer', activez le 'Developer mode' et développez l'onglet, activez 'Support single machine UI automation', puis redémarrez le sous-système WSA.

### AVD (Android Studio Virtual Device)

Si vous utilisez un AVD (Android Studio Virtual Device), veuillez d'abord augmenter l'espace de stockage et la mémoire par défaut.

Cliquez sur le 'Virtual Device Manager' dans Android Studio, créez une nouvelle machine virtuelle, puis trouvez la machine virtuelle correspondante et cliquez sur le bouton d'édition (l'icône en forme de crayon). Cliquez sur 'Show Advanced Settings', trouvez 'Storage -> Internal Storage' et réglez-le sur au moins 2 Go, et réglez la taille de la RAM sur au moins 4 Go.

### Redroid (android dans docker)

```{attention}
La méthode suivante peut ne pas s'appliquer à d'autres distributions Linux.
```

Si vous utilisez Redroid (android dans docker), en prenant comme exemple la version recommandée `Ubuntu 20.04`, installez d'abord les modules `linux-modules-extra`.

```bash
apt install linux-modules-extra-`uname -r`
```

Éditez le fichier `/etc/modules`, copiez les noms suivants et insérez-les à la fin du fichier, puis redémarrez la machine hôte.

```bash
# redroid modules
mac80211_hwsim

binder_linux
ashmem_linux
```

Enfin, utilisez la commande suivante pour démarrer. Veuillez modifier `redroid_gpu_mode` et d'autres paramètres pertinents en fonction de votre configuration réelle.

```{attention}
Notez que la commande suivante est différente de celle fournie dans la documentation officielle. Assurez-vous d'utiliser la commande ci-dessous.
```

```bash
docker run -itd --rm --privileged --pull always -v /lib/modules:/lib/modules:ro -v ~/redroid:/data -p 127.0.0.1:5555:5555 -p 127.0.0.1:65001:65000 redroid/redroid:12.0.0-latest androidboot.redroid_gpu_mode=guest
```

Dans la commande ci-dessus, le port 65000 du conteneur est mappé sur le port 65001 de la machine hôte, car certains outils doivent se lier temporairement au port 65000 de l'hôte. Pour éviter les conflits, nous utilisons le port 65001.

```{note}
Le conteneur Android démarré avec la commande ci-dessus doit être accessible depuis la machine hôte via `http://127.0.0.1:65001`.
```