Блог и связанная с ними работа Qiling
Qiling - это усовершенствованная структура бинарной эмуляции со следующими функциями:
- Эмуляция мультиплатформ: Windows, MacOS, Linux, Android, BSD, UEFI, DOS, MBR, Virtual Machine Ethereum
- Эмуляция мультиархитектуры: 8086, x86, x86_64, ARM, ARM64, MIPS, RISCV, PowerPC
- Поддержка нескольких форматов файлов: PE, Macho, Elf, Com, MBR
- Поддержка драйвера Windows (.sys), модуль ядра Linux (.ko) и ядра MacOS (.kext) через полубог
- Эмулирует и код песочницы в изолированной среде
- Предоставляет полностью настраиваемую песочницу
- Обеспечивает углубленную память, регистр, уровень ОС и API уровня файловой системы
- Мелкозернистого прибора: позволяет крючкам на различных уровнях (инструкция/базовый блок/access/exception/syscall/io/etc)
- Предоставляет API уровня виртуальной машины, такой как сохранение и восстановление текущего состояния выполнения
- Поддерживает возможности поперечной архитектуры и отладки платформы
- Встроенный отладчик с возможностью обратной отладки
- Позволяет Dynamic Hotpatch на лете.
- True Framework в Python, что позволяет легко создавать индивидуальные инструменты анализа безопасности сверху
Цилинг также пробился на различные международные конференции.
2022:
- Черная шляпа, ЕС
- Черная шляпа, меа
2021:
- Черная шляпа, США
- Взломать коробку, Амстердам
- Черная шляпа, Азия
2020:
- Черная шляпа, Европа
- Черная шляпа, США
- Черная шляпа, США (полубог)
- Черная шляпа, Азия
- Взломать коробку, блокировка 001
- Взломать коробку, блокировка 002
- Взломать в коробке, кибер -рад
- Нулькон
2019:
- Defcon, США
- HITCON
- Zeronights
Qiling поддерживается двигателем Unicorn.
Посетите наш веб -сайт https://www.qiling.io для получения дополнительной информации.
Лицензия
Этот проект выпускается и распространяется в соответствии с бесплатной лицензией на программное обеспечение GPLV2 и более поздней версии.
Qiling против других эмуляторов
Есть много эмуляторов с открытым исходным кодом, но два проекта, ближайшие к Qiling, - это Unicorn & Qemu Usermode. Этот раздел объясняет основные различия в Qiling против них.
Двигатель Qiling vs Unicorn
Построенный на вершине единорога, но Qiling & Unicorn - это два разных животных.
- Unicorn - это просто эмулятор процессора, поэтому он фокусируется на эмулировании инструкций процессора, которые могут понять память эмулятора. Кроме того, Unicorn не знает о концепциях более высокого уровня, таких как динамические библиотеки, системные вызовы, обработку ввода/вывода или исполняемые форматы, такие как PE, Macho или Elf. В результате единорог может эмулировать только инструкции по необработанной машине, без операционной системы (ОС) контекст
- Qiling разработан как структура более высокого уровня, которая использует Unicorn для эмуляции инструкций процессора, но может понимать ОС: у него есть исполняемые погрузчики формата (для PE, Macho & Elf на данный момент), динамические линкеры (поэтому мы можем загружать и переехать общие библиотеки), обработчики SYSCALL & IO. По этой причине Qiling может запускать исполняемый бинарник, не требуя ее нативной ОС
Qiling vs qemu usermode
Qemu Usermode делает схожие вещи с нашим эмулятором, то есть и подражайте целым исполняемым двоичным файлам по перекрестной архитектуре. Тем не менее, Qiling предлагает некоторые важные различия в отношении qemu usermode.
- Qiling - это настоящая структура анализа, которая позволяет создавать свои собственные инструменты динамического анализа сверху (на дружественном языке питона). Между тем, Qemu - это просто инструмент, а не структура
- Qiling может выполнять динамическую инструментацию и может даже код HotPatch во время выполнения. Qemu тоже не делает
- Не только работающая перекрестная архитектура, Qiling также является кроссплатформенным, поэтому, например, вы можете запустить файл ELF Linux поверх Windows. Напротив, Qemu usermode запускает только бинарную из одной и той же ОС, например, Linux Elf на Linux, из -за того, как он направляет Syscall из эмулированного кода в нативную ОС
- Qiling поддерживает больше платформ, включая Windows, MacOS, Linux & BSD. Qemu usermode может только обрабатывать Linux & BSD
Установка
Пожалуйста, смотрите файл руководства по настройке для установки Qiling Framework.
Примеры
- В приведенном ниже примере показано, как использовать Qiling Framework самым StriaghtForward для эмуляции исполняемого файла Windows.
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 ()- В следующем примере показано, как Windows Crackme может быть динамически исправлен, чтобы он всегда отображал диалог «поздравляю».
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 () Ниже на YouTube видео показывает, как работает приведенный выше пример.
Эмуляция прошивки маршрутизатора Arm на машине Ubuntu X64
- Qiling Framework Hot Patch и эмулирует маршрутизатор ARM/USR/BIN/HTTPD на x86_64BIT Ubuntu

Плагин Цилинга Idapro: Инструмент и расшифрование Mirai's Secret
- Это видео демонстрирует, как плагин Ziling's Idapro способен выполнять запуск Idapro с помощью Qiling Instrumentation Engine
GDBServer с демо -версией Idapro
- Решение простого вызова CTF с помощью Qiling Framework и Idapro
Эмуляция MBR
- Qiling Framework эмулирует MBR

Qltool
Qiling также предоставляет дружелюбный инструмент с именем qltool для быстрого имиляции ShellCode и исполняемых двоичных файлов.
С Qltool можно выполнить легкое выполнение:
С SheltCode:
$ ./qltool code --os linux --arch arm --format hex -f examples/shellcodes/linarm32_tcp_reverse_shell.hex
С бинарным файлом:
$ ./qltool run -f examples/rootfs/x8664_linux/bin/x8664_hello --rootfs examples/rootfs/x8664_linux/
С бинарным и отладчиком GDB, включенным:
$ ./qltool run -f examples/rootfs/x8664_linux/bin/x8664_hello --gdb 127.0.0.1:9999 --rootfs examples/rootfs/x8664_linux
С коллекцией покрытия кода (UEFI только на данный момент):
$ ./qltool run -f examples/rootfs/x8664_efi/bin/TcgPlatformSetupPolicy --rootfs examples/rootfs/x8664_efi --coverage-format drcov --coverage-file TcgPlatformSetupPolicy.cov
С выводом JSON (в основном Windows):
$ ./qltool run -f examples/rootfs/x86_windows/bin/x86_hello.exe --rootfs examples/rootfs/x86_windows/ --console False --json
Контакт
Получите последнюю информацию с нашего веб -сайта https://www.qiling.io
Свяжитесь с нами по электронной почте [email protected] или через Twitter @Qiling_io или Weibo
Основные разработчики, ключевые участники и т. Д.
Пожалуйста, обратитесь к credits.md