Usecase, Blog und damit verbundene Arbeit von Qiling
Qiling ist ein erweiterter Binäremulationsrahmen mit den folgenden Merkmalen:
- Multi-Plattformen emulieren: Windows, MacOS, Linux, Android, BSD, UEFI, DOS, MBR, Virtual Machine Ethereum
- Emulieren Sie Multi-Architekturen: 8086, x86, x86_64, Arm, ARM64, MIPS, RISCV, PowerPC
- Unterstützen Sie mehrere Dateiformate: PE, Macho, ELF, com, mbr
- Unterstützen Sie Windows Driver (.sys), Linux -Kernel -Modul (.KO) und MacOS -Kernel (.Kext) über Halbodes
- Emuliert & Sandbox -Code in einer isolierten Umgebung
- Bietet eine vollständig konfigurierbare Sandbox
- Bietet ausführliche Speicher-, Register-, Betriebssystem- und Dateisystem-API-Ebene-API
- Feinkorninstrumentierung: Ermöglicht Haken auf verschiedenen Ebenen (Anweisungen/Basis-Block/Speicherzugriff/Ausnahme/SYSCALL/IO/ETC)
- Bietet eine API auf virtueller Maschinenebene wie Speichern und Wiederherstellung des aktuellen Ausführungszustands
- Unterstützt Cross -Architektur- und Plattform -Debugging -Funktionen
- Eingebauter Debugger mit umgekehrter Debugging-Fähigkeit
- Ermöglicht dynamischen Hotpatch im Fliege-laufende Code, einschließlich der geladenen Bibliothek
- True Framework in Python, so
Qiling machte sich auch auf den Weg zu verschiedenen internationalen Konferenzen.
2022:
- Schwarzer Hut, EU
- Schwarzer Hut, Mea
2021:
- Schwarzer Hut, USA
- Hack in die Box, Amsterdam
- Schwarzer Hut, Asien
2020:
- Schwarzer Hut, Europa
- Schwarzer Hut, USA
- Black Hat, USA (Halbgott)
- Schwarzer Hut, Asien
- Hacken Sie in der Box, Lockdown 001
- Hacken Sie in der Box, Lockdown 002
- Hack in der Box, Cyberweek
- NULLCON
2019:
- Defcon, USA
- Hitcon
- Zeronights
Qiling wird durch Einhornmotor unterstützt.
Besuchen Sie unsere Website https://www.qiling.io, um weitere Informationen zu erhalten.
Lizenz
Dieses Projekt wird unter der kostenlosen Softwarelizenz GPLV2 und spätere Version veröffentlicht und verteilt.
Qiling gegen andere Emulatoren
Es gibt viele Open -Source -Emulatoren, aber zwei Projekte, die Qiling am nächsten stehen, sind Unicorn & Qemu Usmode. In diesem Abschnitt werden die Hauptunterschiede von Qiling gegen sie erläutert.
Qiling gegen Einhornmotor
Auf Einhorn gebaut, aber Qiling & Unicorn sind zwei verschiedene Tiere.
- Unicorn ist nur ein CPU -Emulator und konzentriert sich auf die Emulation von CPU -Anweisungen, die den Emulator -Speicher verstehen können. Darüber hinaus ist sich Unicorn von Konzepten auf höherer Ebene wie dynamischen Bibliotheken, Systemaufrufen, E/A -Handhabung oder ausführbaren Formaten wie PE, Macho oder Elf nicht bewusst. Infolgedessen kann Unicorn nur Anweisungen für Rohmaschinen nachahmen, ohne den Kontext des Betriebssystems (OS)
- Qiling wurde als Rahmen auf höherer Ebene konzipiert, das Unicorn für die Nachahmung von CPU -Anweisungen nutzt, aber das Betriebssystem verstehen kann: Es verfügt derzeit über ausführbare Formatlader (für PE, Macho & Elf), dynamische Linker (damit wir gemeinsame Bibliotheken laden und verschieben können), SYSCALL & IO -Handler. Aus diesem Grund kann Qiling ausführbare Binärdatoren ausführen, ohne sein natives Betriebssystem zu verlangen
Qiling gegen Qemu Usmode
QEMU Usmode macht ähnlich wie unser Emulator, dh, um ganze ausführbare Binärdateien auf Kreuzarchitektur zu emulieren. Qiling bietet jedoch einige wichtige Unterschiede zu QEMU Usmode.
- Qiling ist ein echter Analyse -Framework, mit dem Sie Ihre eigenen dynamischen Analyse -Tools oben (in freundlicher Pythonsprache) erstellen können. Inzwischen ist Qemu nur ein Werkzeug, kein Framework
- Qiling kann eine dynamische Instrumentierung durchführen und sogar zur Laufzeit Code von Hotpatch ausführen. Qemu tut es auch nicht
- Nicht nur die Cross-Architektur funktioniert, sondern auch plattformübergreifend, daher können Sie beispielsweise die Linux-ELF-Datei über Windows ausführen. Im Gegensatz dazu läuft QEMU Usmode nur Binär desselben Betriebssystems wie Linux -ELF unter Linux, da es die SYSCall vom emulierten Code zum nativen Betriebssystem weiterleitet
- Qiling unterstützt mehr Plattformen, einschließlich Windows, MacOS, Linux & BSD. QEMU Usmode kann nur Linux & BSD verarbeiten
Installation
Weitere Informationen finden Sie unter der Installation von Qiling -Framework.
Beispiele
- Das folgende Beispiel zeigt, wie das Qiling -Framework auf der Striaghtforward -Art verwendet wird, um eine ausführbare Windows zu emulieren.
from qiling import Qiling
if __name__ == "__main__" :
# initialize Qiling instance, specifying the executable to emulate and the emulated system root.
# note that the current working directory is assumed to be Qiling home
ql = Qiling ([ r'examples/rootfs/x86_windows/bin/x86_hello.exe' ], r'examples/rootfs/x86_windows' )
# start emulation
ql . run ()- Das folgende Beispiel zeigt, wie ein Windows Crackme dynamisch gepatcht werden kann, damit es immer den Dialog "Glückwunsch" angezeigt wird.
from qiling import Qiling
def force_call_dialog_func ( ql : Qiling ):
# get DialogFunc address from current stack frame
lpDialogFunc = ql . stack_read ( - 8 )
# setup stack memory for DialogFunc
ql . stack_push ( 0 )
ql . stack_push ( 1001 ) # IDS_APPNAME
ql . stack_push ( 0x111 ) # WM_COMMAND
ql . stack_push ( 0 )
# push return address
ql . stack_push ( 0x0401018 )
# resume emulation from DialogFunc address
ql . arch . regs . eip = lpDialogFunc
if __name__ == "__main__" :
# initialize Qiling instance
ql = Qiling ([ r'rootfs/x86_windows/bin/Easy_CrackMe.exe' ], r'rootfs/x86_windows' )
# NOP out some code
ql . patch ( 0x004010B5 , b' x90 x90 ' )
ql . patch ( 0x004010CD , b' x90 x90 ' )
ql . patch ( 0x0040110B , b' x90 x90 ' )
ql . patch ( 0x00401112 , b' x90 x90 ' )
# hook at an address with a callback
ql . hook_address ( force_call_dialog_func , 0x00401016 )
ql . run () Das folgende YouTube -Video zeigt, wie das obige Beispiel funktioniert.
ARM -Firmware für Armrouter auf Ubuntu X64 -Maschine emulieren
- Qiling Framework Hot-Patch und emuliert den Armrouter/usr/bin/httpd auf einem x86_64bit Ubuntu

Idapro Plugin von Qiling: Instrument und Entschlüsselung von Mirais Geheimnis
- Dieses Video zeigt, wie das Idapro -Plugin von Qiling IDAPRO mit Qiling Instrumentation Engine ausführen kann
Gdbserver mit Idapro Demo
- Lösen einer einfachen CTF -Herausforderung mit Qiling Framework und Idapro
MBR emulieren
- Qiling -Gerüst emuliert MBR

Qltool
Qiling bietet auch ein freundliches Tool namens qltool , um Shellcode und ausführbare Binärdateien schnell nachzuahmen.
Mit QLTOOL kann eine einfache Ausführung durchgeführt werden:
Mit Shellcode:
$ ./qltool code --os linux --arch arm --format hex -f examples/shellcodes/linarm32_tcp_reverse_shell.hex
Mit Binärdatei:
$ ./qltool run -f examples/rootfs/x8664_linux/bin/x8664_hello --rootfs examples/rootfs/x8664_linux/
Mit Binär- und GDB -Debugger aktivieren:
$ ./qltool run -f examples/rootfs/x8664_linux/bin/x8664_hello --gdb 127.0.0.1:9999 --rootfs examples/rootfs/x8664_linux
Mit Code -Abdeckungsersammlung (UEFI nur für den Moment):
$ ./qltool run -f examples/rootfs/x8664_efi/bin/TcgPlatformSetupPolicy --rootfs examples/rootfs/x8664_efi --coverage-format drcov --coverage-file TcgPlatformSetupPolicy.cov
Mit JSON -Ausgabe (hauptsächlich Windows):
$ ./qltool run -f examples/rootfs/x86_windows/bin/x86_hello.exe --rootfs examples/rootfs/x86_windows/ --console False --json
Kontakt
Holen Sie sich die neuesten Informationen von unserer Website https://www.qiling.io
Kontaktieren Sie uns unter [email protected] oder über Twitter @qiling_io oder Weibo
Kernentwickler, wichtige Mitwirkende usw.
Bitte beachten Sie die Credits.md