
Cas d'utilisation de Qiling, blog et travaux connexes
Qiling est un framework avancé d'émulation binaire, avec les fonctionnalités suivantes :
- Émuler multi-plateformes : Windows, macOS, Linux, Android, BSD, UEFI, DOS, MBR.
- Émuler multi-architectures : 8086, X86, X86_64, ARM, ARM64, MIPS, RISC-V, PowerPC.
- Prend en charge plusieurs formats de fichiers : PE, Mach-O, ELF, COM, MBR.
- Prend en charge les pilotes Windows (.sys), les modules noyau Linux (.ko) et les extensions noyau macOS (.kext) via Demigod.
- Émule et isole le code dans un environnement cloisonné.
- Fournit un sandbox entièrement configurable.
- Fournit une API approfondie au niveau mémoire, registre, système d'exploitation et système de fichiers.
- Instrumentation fine : permet de placer des hooks à différents niveaux
(instruction / bloc de base / accès mémoire / exception / appel système / E/S, etc.)
- Fournit des API de niveau machine virtuelle telles que la sauvegarde et la restauration de l'état d'exécution actuel.
- Prend en charge les capacités de débogage cross-architecture et cross-platform.
- Débogueur intégré avec capacité de débogage inversé.
- Permet le hot patch dynamique du code en cours d'exécution, y compris la bibliothèque chargée.
- Véritable framework en Python, facilitant la construction d'outils d'analyse de sécurité personnalisés.
Qiling s'est également fait une place dans diverses conférences internationales.
2022 :
2021 :
2020 :
2019 :
Qiling est soutenu par Unicorn Engine.
Visitez notre site web pour plus d'informations.
Licence
Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier
selon les termes de la GNU General Public License telle que publiée par
la Free Software Foundation ; soit la version 2 de la Licence, ou
(à votre choix) toute version ultérieure.
Qiling vs. autres émulateurs
Il existe de nombreux émulateurs open-source, mais deux projets sont les plus proches de Qiling :
Unicorn et QEMU user mode.
Cette section explique les principales différences entre Qiling et eux.
Qiling vs. Unicorn engine
Construit sur Unicorn, mais Qiling et Unicorn sont deux animaux différents.
- Unicorn est simplement un émulateur de CPU, donc il se concentre sur l'émulation des instructions CPU,
qui peut comprendre la mémoire de l'émulateur.
Au-delà, Unicorn ne connaît pas les concepts de haut niveau, tels que les bibliothèques
dynamiques, les appels système, la gestion des E/S ou les formats exécutables comme PE, Mach-O
ou ELF. En conséquence, Unicorn ne peut émuler que des instructions machine brutes,
sans contexte de système d'exploitation (OS).
- Qiling est conçu comme un framework de plus haut niveau, qui exploite Unicorn pour
émuler les instructions CPU, mais peut comprendre l'OS : il dispose de chargeurs de formats
exécutables (pour PE, Mach-O et ELF actuellement), d'éditeurs de liens dynamiques (pour
charger et relocaliser les bibliothèques partagées), de gestionnaires d'appels système et d'E/S. Pour cette raison,
Qiling peut exécuter un binaire exécutable sans nécessiter son OS natif.
Qiling vs. QEMU user mode
QEMU user mode fait une chose similaire à notre émulateur, c'est-à-dire émuler des binaires
exécutables entiers de manière cross-architecture.
Cependant, Qiling offre quelques différences importantes par rapport à QEMU user mode :
- Qiling est un véritable framework d'analyse,
qui vous permet de construire vos propres outils d'analyse dynamique par-dessus (en Python).
Pendant ce temps, QEMU est simplement un outil, pas un framework.
- Qiling peut effectuer de l'instrumentation dynamique, et peut même patcher du code à
chaud pendant l'exécution. QEMU ne fait ni l'un ni l'autre.
- Non seulement il fonctionne en cross-architecture, mais Qiling est également cross-platform.
Par exemple, vous pouvez exécuter un fichier ELF Linux sur Windows.
En revanche, QEMU user mode n'exécute que des binaires du même système d'exploitation, comme ELF
Linux sur Linux, en raison de la façon dont il transmet les appels système du code émulé à
l'OS natif.
- Qiling prend en charge plus de plateformes, notamment Windows, macOS, Linux et BSD. QEMU
user mode ne peut gérer que Linux et BSD.
Installation
Veuillez consulter le guide d'installation pour savoir comment installer Qiling Framework.
Exemples
L'exemple ci-dessous montre comment utiliser le framework Qiling de la manière la plus
simple pour émuler un exécutable Windows.
from qiling import Qiling
if __name__ == "__main__":
# initialise l'instance Qiling, en spécifiant l'exécutable à émuler et la racine du système émulé.
# notez que le répertoire de travail actuel est supposé être le répertoire Qiling
ql = Qiling([r'examples/rootfs/x86_windows/bin/x86_hello.exe'], r'examples/rootfs/x86_windows')
# démarre l'émulation
ql.run()
- L'exemple suivant montre comment un crackme Windows peut être patché dynamiquement
pour toujours afficher la boîte de dialogue "Félicitations".
from qiling import Qiling
def force_call_dialog_func(ql: Qiling):
# récupère l'adresse de DialogFunc depuis la pile actuelle
lpDialogFunc = ql.stack_read(-8)