usecase บล็อกและงานที่เกี่ยวข้องของ Qiling
Qiling เป็นกรอบการจำลองแบบไบนารีขั้นสูงพร้อมคุณสมบัติดังต่อไปนี้:
Qiling ยังเดินทางไปสู่การประชุมนานาชาติต่างๆ
2022:
2021:
2020:
2019:
Qiling ได้รับการสนับสนุนจากเครื่องยนต์ยูนิคอร์น
เยี่ยมชมเว็บไซต์ของเรา https://www.qiling.io สำหรับข้อมูลเพิ่มเติม
โครงการนี้ได้รับการเผยแพร่และแจกจ่ายภายใต้ใบอนุญาตซอฟต์แวร์ฟรี GPLV2 และรุ่นใหม่กว่า
มีอีมูเลเตอร์โอเพ่นซอร์สจำนวนมาก แต่สองโครงการที่อยู่ใกล้กับ Qiling มากที่สุดคือยูนิคอร์นและ QEMU USERMODE ส่วนนี้อธิบายถึงความแตกต่างหลักของ qiling กับพวกเขา
สร้างขึ้นบนยูนิคอร์น แต่ Qiling & Unicorn เป็นสัตว์สองตัวที่แตกต่างกัน
QEMU USERMODE ทำสิ่งที่คล้ายคลึงกับอีมูเลเตอร์ของเรานั่นคือการเลียนแบบไบนารีที่ปฏิบัติการได้ทั้งหมดในรูปแบบการสถาปัตยกรรม อย่างไรก็ตาม Qiling เสนอความแตกต่างที่สำคัญบางอย่างกับ QEMU USERMODE
โปรดดูไฟล์คู่มือการตั้งค่าสำหรับวิธีการติดตั้ง Qiling Framework
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 () 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 ด้านล่างแสดงวิธีการทำงานของตัวอย่างด้านบน


Qiling ยังมีเครื่องมือที่เป็นมิตรชื่อ qltool เพื่อเลียนแบบ ShellCode & Conecutable Binaries อย่างรวดเร็ว
ด้วย qltool สามารถดำเนินการได้ง่าย:
ด้วย Shellcode:
$ ./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/
พร้อม Binary และ GDB Debugger เปิดใช้งาน:
$ ./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 [email protected] หรือผ่าน Twitter @Qiling_io หรือ Weibo
โปรดดูเครดิต MD