Qiling's Usecase, Blog, dan Pekerjaan Terkait
Qiling adalah kerangka kerja emulasi biner canggih, dengan fitur -fitur berikut:
- Tiru multi-platform: windows, macOS, linux, android, bsd, uefi, dos, mbr, mesin virtual ethereum
- Meniru multi-arsitektur: 8086, x86, x86_64, ARM, ARM64, MIPS, RISCV, PowerPC
- Dukung beberapa format file: PE, Macho, Elf, Com, MBR
- Dukung Windows Driver (.sys), Linux Kernel Module (.KO) & MacOS Kernel (.kext) melalui Demigod
- Meniru & kode kotak pasir di lingkungan yang terisolasi
- Memberikan kotak pasir yang sepenuhnya dapat dikonfigurasi
- Memberikan memori mendalam, register, level OS dan API tingkat file
- Instrumentasi Gandum Besar: Memungkinkan kait di berbagai tingkatan (instruksi/blok dasar/akses memori/pengecualian/syscall/io/etc)
- Menyediakan API tingkat mesin virtual seperti menyimpan dan memulihkan keadaan eksekusi saat ini
- Mendukung kemampuan debugging arsitektur dan platform
- Debugger bawaan dengan kemampuan debugging terbalik
- Mengizinkan kode yang sedang berjalan di hotpatch dinamis, termasuk perpustakaan yang dimuat
- Kerangka kerja sejati di Python, membuatnya mudah untuk membangun alat analisis keamanan yang disesuaikan di atas
Qiling juga berjalan ke berbagai konferensi internasional.
2022:
- Topi Hitam, UE
- Topi hitam, mea
2021:
- Topi Hitam, AS
- Hack in the Box, Amsterdam
- Topi Hitam, Asia
2020:
- Topi Hitam, Eropa
- Topi Hitam, AS
- Black Hat, USA (Demigod)
- Topi Hitam, Asia
- Hack in the Box, Lockdown 001
- Hack in the Box, Lockdown 002
- Hack in the Box, Cyberweek
- Nullcon
2019:
- DEFCON, AS
- Hitcon
- Zeronights
Qiling didukung oleh mesin unicorn.
Kunjungi situs web kami https://www.qiling.io untuk informasi lebih lanjut.
Lisensi
Proyek ini dirilis dan didistribusikan di bawah lisensi perangkat lunak gratis GPLV2 dan versi yang lebih baru.
Qiling vs emulator lainnya
Ada banyak emulator open source, tetapi dua proyek yang paling dekat dengan qiling adalah unicorn & qemu usermode. Bagian ini menjelaskan perbedaan utama qiling terhadap mereka.
Mesin qiling vs unicorn
Dibangun di atas unicorn, tetapi qiling & unicorn adalah dua hewan yang berbeda.
- Unicorn hanyalah emulator CPU, sehingga berfokus pada meniru instruksi CPU, yang dapat memahami memori emulator. Di luar itu, Unicorn tidak menyadari konsep tingkat yang lebih tinggi, seperti perpustakaan dinamis, panggilan sistem, penanganan I/O atau format yang dapat dieksekusi seperti PE, Macho atau ELF. Akibatnya, unicorn hanya dapat meniru instruksi mesin mentah, tanpa konteks sistem operasi (OS)
- Qiling dirancang sebagai kerangka kerja tingkat yang lebih tinggi, yang memanfaatkan unicorn untuk meniru instruksi CPU, tetapi dapat memahami OS: ia memiliki pemuat format yang dapat dieksekusi (untuk PE, Macho & Elf saat ini), penghubung dinamis (sehingga kami dapat memuat & memindahkan perpustakaan bersama), handler syscall & IO. Untuk alasan ini, qiling dapat menjalankan biner yang dapat dieksekusi tanpa memerlukan OS asalnya
Qiling vs qemu usermode
Qemu Usermode melakukan hal yang serupa dengan emulator kami, yaitu meniru seluruh binari yang dapat dieksekusi dengan cara lintas-arsitektur. Namun, qiling menawarkan beberapa perbedaan penting terhadap qemu usermode.
- Qiling adalah kerangka analisis sejati, yang memungkinkan Anda membangun alat analisis dinamis Anda sendiri di atas (dalam bahasa Python yang ramah). Sementara itu, Qemu hanyalah sebuah alat, bukan kerangka kerja
- Qiling dapat melakukan instrumentasi dinamis, dan bahkan dapat kode hotpatch saat runtime. Qemu juga tidak melakukannya
- Tidak hanya bekerja lintas arsitektur, qiling juga merupakan platform lintas, jadi misalnya Anda dapat menjalankan file linux elf di atas windows. Sebaliknya, qemu usermode hanya menjalankan biner dari OS yang sama, seperti Linux Elf di Linux, karena cara itu meneruskan syscall dari kode yang ditiru ke OS asli
- Qiling mendukung lebih banyak platform, termasuk Windows, MacOS, Linux & BSD. Qemu usermode hanya dapat menangani Linux & BSD
Instalasi
Silakan lihat File Panduan Pengaturan untuk cara menginstal kerangka kerja qiling.
Contoh
- Contoh di bawah ini menunjukkan cara menggunakan kerangka kerja qiling dengan cara yang paling striaghthorward untuk meniru Windows yang dapat dieksekusi.
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 ()- Contoh berikut menunjukkan bagaimana windows crackme dapat ditambal secara dinamis untuk membuatnya selalu menampilkan dialog "ucapan selamat".
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 () Video YouTube di bawah ini menunjukkan cara kerja contoh di atas.
Meniru firmware router lengan di mesin ubuntu x64
- Kerangka Qiling Hot-Patch dan meniru router lengan/usr/bin/httpd pada x86_64bit ubuntu

Plugin Idapro Qiling: Instrumen dan Dekripsi Rahasia Mirai
- Video ini menunjukkan bagaimana plugin Idapro Qiling dapat membuat Idapro berjalan dengan mesin instrumentasi qiling
Gdbserver dengan demo idapro
- Memecahkan tantangan CTF sederhana dengan kerangka kerja qiling dan idapro
Meniru MBR
- Kerangka kerja qiling meniru MBR

Qltool
Qiling juga menyediakan alat ramah bernama qltool untuk dengan cepat meniru Shellcode & Binaries yang dapat dieksekusi.
Dengan Qltool, eksekusi yang mudah dapat dilakukan:
Dengan shellcode:
$ ./qltool code --os linux --arch arm --format hex -f examples/shellcodes/linarm32_tcp_reverse_shell.hex
Dengan file biner:
$ ./qltool run -f examples/rootfs/x8664_linux/bin/x8664_hello --rootfs examples/rootfs/x8664_linux/
Dengan Biner dan GDB Debugger aktifkan:
$ ./qltool run -f examples/rootfs/x8664_linux/bin/x8664_hello --gdb 127.0.0.1:9999 --rootfs examples/rootfs/x8664_linux
Dengan koleksi cakupan kode (hanya UEFI untuk saat ini):
$ ./qltool run -f examples/rootfs/x8664_efi/bin/TcgPlatformSetupPolicy --rootfs examples/rootfs/x8664_efi --coverage-format drcov --coverage-file TcgPlatformSetupPolicy.cov
Dengan output JSON (terutama Windows):
$ ./qltool run -f examples/rootfs/x86_windows/bin/x86_hello.exe --rootfs examples/rootfs/x86_windows/ --console False --json
Kontak
Dapatkan info terbaru dari situs web kami https://www.qiling.io
Hubungi kami di email [email protected], atau melalui Twitter @Qiling_IO atau WEIBO
Pengembang inti, kontributor utama dan dll
Silakan merujuk ke kredit.md