
Petit plugin d'émulateur mignon pour IDA basé sur Unicorn.
uEmu est un petit plugin d'émulateur mignon pour IDA basé sur unicorn engine.
Prend en charge les architectures suivantes directement : x86, x64, ARM, ARM64, MIPS, MIPS64

MSR S3_x, X0 pour ARM64)idapyswitchbrew install unicorn pour installer les binaires Unicornpip install unicorn pour installer les bindings Python d'UnicornFile / Script file... ou ALT+F7 dans IDA pour charger uEmu.pyOptionnellement, uEmu peut être chargé automatiquement comme plugin IDA. Dans ce cas, placez-le dans le dossier [IDA]/Plugins et modifiez USE_AS_SCRIPT à False dans uEmu.py

ALT/OPTION pour spécifier un nombre)Démarrer l'émulation depuis le curseur. Il est nécessaire de fournir d'abord le contexte CPU initial (voir Update CPU Context). Après cela, tous les segments de la base de données IDA seront mappés dans l'émulateur (les données initialisées seront également copiées).
Exécuter le code jusqu'à ce qu'un point d'arrêt de code ou de mémoire soit atteint ou qu'un événement nécessitant une action de l'utilisateur se produise.
Effectuer une exécution pas à pas unique. Maintenez ALT/OPTION pour spécifier le nombre de pas à effectuer.

Lorsque l'émulation est en cours, cette commande peut être utilisée pour interrompre l'exécution.
Réinitialise l'instance de l'émulateur et supprime le mappage de toutes les régions mémoire.
Vous pouvez utiliser les points d'arrêt IDA pour indiquer les emplacements où l'émulation doit être interrompue. Cela inclut les points d'arrêt de code et de mémoire. Généralement utilisés avec la commande Run.
Lorsque l'émulateur doit accéder à une mémoire qui n'est pas encore mappée, le plugin affiche la boîte de dialogue suivante.


Lorsque l'émulateur rencontre une instruction inconnue, il est possible de la sauter et de restaurer manuellement le contexte CPU.

Juste un panneau pour contrôler l'exécution.

Contexte CPU actuel.

Chaque fois que l'émulation s'arrête, les registres modifiés seront surlignés. Les registres peuvent être affichés sur 1, 2 ou 3 colonnes via le menu contextuel.
Il est possible de mettre à jour le contexte CPU via le menu contextuel (voir ci-dessous).
Contexte CPU étendu actuel.

Chaque fois que l'émulation s'arrête, les registres modifiés seront surlignés. Les registres peuvent être affichés sur 1, 2 ou 3 colonnes via le menu contextuel.
Il est possible de mettre à jour le contexte CPU via le menu contextuel (voir ci-dessous).
Utilisez cette vue pour observer les régions mémoire pour une adresse et une taille spécifiées. Un commentaire sera affiché dans le titre pour plus de commodité.

Chaque fois que l'émulation s'arrête, les blocs mémoire modifiés seront surlignés.

Les valeurs des registres peuvent être modifiées individuellement ou toutes à la fois via un fichier JSON depuis le menu contextuel. Le contexte actuel peut également être sauvegardé dans un fichier JSON pour une utilisation future.



En plus de toutes les fonctions listées dans le menu contextuel, il y a quelques nouvelles commandes.

Affiche toutes les régions mappées. Utilisez le menu contextuel pour afficher la mémoire d'une région particulière ou la dumper dans un fichier.

Cette commande essaie de synchroniser les segments IDA avec la mémoire mappée en créant de nouveaux mappages ou en fusionnant avec les existants si possible. Cela aide à ajouter de nouveaux segments IDA à l'émulateur en cours d'exécution sans redémarrer l'émulateur.
Charger l'état d'uEmu depuis un fichier.
Sauvegarder l'état d'uEmu dans un fichier. Veuillez noter que seuls les registres définis dans un plugin sont sauvegardés.

Il est également possible d'ajouter de nouvelles fonctionnalités ou de construire votre projet sur uEmu en utilisant le système d'extensions.
Veuillez trouver la description avec un exemple ici