usecase ، مدونة Qiling والعمل ذات الصلة
Qiling هو إطار محاكاة ثنائية متقدمة ، مع الميزات التالية:
- محاكاة المنصات المتعددة: Windows ، MacOS ، Linux ، Android ، BSD ، UEFI ، DOS ، MBR ، Ethereum Virtual Machine
- محاكاة العمليات المتعددة: 8086 ، x86 ، x86_64 ، ARM ، ARM64 ، MIPS ، RISCV ، PowerPC
- دعم تنسيقات الملفات المتعددة: PE ، Macho ، Elf ، Com ، MBR
- دعم برنامج تشغيل Windows (.sys) ، وحدة Linux kernel (.ko) و macos kernel (.kext) عبر demigod
- يحاكي رمز الرمل في بيئة معزولة
- يوفر صندوق رمل قابل للتكوين بالكامل
- يوفر الذاكرة المتعمقة ، التسجيل ، مستوى نظام التشغيل واجهة برمجة تطبيقات مستوى الملفات
- أجهزة الحبوب الدقيقة: يسمح بالسنانير في مستويات مختلفة (التعليمات/الكتل/الوصول إلى الذاكرة/الاستثناء/Syscall/IO/etc)
- يوفر واجهة برمجة تطبيقات مستوى الجهاز الظاهري مثل Save واستعادة حالة التنفيذ الحالية
- يدعم العمارة المتقاطعة وقدرات تصحيح الأخطاء منصة
- تصحيح الأخطاء المدمجة مع إمكانية تصحيح الأخطاء العكسية
- يتيح رمز التشغيل Dynamic HotPatch على الطيران ، بما في ذلك المكتبة المحملة
- إطار حقيقي في بيثون ، مما يجعل من السهل إنشاء أدوات تحليل أمان مخصصة في الأعلى
شق Qiling طريقه أيضًا إلى العديد من المؤتمرات الدولية.
2022:
- قبعة سوداء ، الاتحاد الأوروبي
- قبعة سوداء ، ميا
2021:
- قبعة سوداء ، الولايات المتحدة الأمريكية
- اختراق في المربع ، أمستردام
- قبعة سوداء ، آسيا
2020:
- قبعة سوداء ، أوروبا
- قبعة سوداء ، الولايات المتحدة الأمريكية
- قبعة سوداء ، الولايات المتحدة الأمريكية (ديميجود)
- قبعة سوداء ، آسيا
- اختراق في المربع ، Lockdown 001
- اختراق في المربع ، Lockdown 002
- اختراق في المربع ، Cyberweek
- nullcon
2019:
- ديفكون ، الولايات المتحدة الأمريكية
- Hitcon
- Zeronights
Qiling مدعوم بمحرك يونيكورن.
تفضل بزيارة موقعنا https://www.qiling.io لمزيد من المعلومات.
رخصة
يتم إصدار هذا المشروع وتوزيعه ضمن ترخيص البرامج المجاني GPLV2 والإصدار اللاحق.
Qiling vs المحاكيات الأخرى
هناك العديد من المحاكيات المفتوحة المصدر ، ولكن مشروعان أقرب إلى Qiling هما Unicorn & Qemu Usermode. يشرح هذا القسم الاختلافات الرئيسية في Qiling ضدهم.
Qiling vs Unicorn Engine
بنيت على قمة يونيكورن ، ولكن Qiling & Unicorn هما حيوانان مختلفان.
- يونيكورن هو مجرد محاكي وحدة المعالجة المركزية ، لذلك يركز على محاكاة تعليمات وحدة المعالجة المركزية ، والتي يمكن أن تفهم ذاكرة المحاكي. علاوة على ذلك ، فإن Unicorn ليس على دراية بمفاهيم المستوى الأعلى ، مثل المكتبات الديناميكية أو مكالمات النظام أو معالجة الإدخال/الإخراج أو التنسيقات القابلة للتنفيذ مثل PE أو Macho أو ELF. نتيجة لذلك ، يمكن لـ Unicorn فقط محاكاة تعليمات الجهاز الخام ، دون سياق نظام التشغيل (OS)
- تم تصميم Qiling كإطار عالي المستوى ، والذي يعزز Unicorn لمحاكاة تعليمات وحدة المعالجة المركزية ، ولكن يمكن أن يفهم نظام التشغيل: إنه يحتوي على لوادر تنسيق قابلة للتنسيق (ل PE ، Macho & Elf في الوقت الحالي) ، والرابطات الديناميكية (حتى نتمكن من تحميل المكتبات المشتركة ونقلها) ، Syscall & IO. لهذا السبب ، يمكن لـ Qiling تشغيل ثنائي قابل للتنفيذ دون الحاجة إلى نظام التشغيل الأصلي
Qiling vs Qemu Usermode
تقوم QEMU USERMODE بشيء مشابه لمحاكينا ، وهو محاكاة الثنائيات القابلة للتنفيذ الكاملة في طريقة البنية عبر البنية. ومع ذلك ، يقدم Qiling بعض الاختلافات المهمة ضد Qemu Usermode.
- Qiling هو إطار تحليل حقيقي ، يسمح لك بإنشاء أدوات التحليل الديناميكي الخاص بك في الأعلى (بلغة Python الودية). وفي الوقت نفسه ، QEMU هي مجرد أداة ، وليس إطار عمل
- يمكن لـ Qiling أداء الأجهزة الديناميكية ، ويمكنه حتى رمز Hotpatch في وقت التشغيل. Qemu لا تفعل أيضًا
- ليس فقط العمل عبر الهندسة المعمارية ، بل هو أيضًا منصة ، لذلك على سبيل المثال ، يمكنك تشغيل ملف Linux Elf أعلى Windows. في المقابل ، تشغيل QEMU USERMODE فقط ثنائي لنفس نظام التشغيل ، مثل Linux ELF على Linux ، نظرًا للطريقة التي يتم بها إعادة توجيه SYSCALL من التعليمات البرمجية المحببة إلى OS الأصلي
- يدعم Qiling المزيد من الأنظمة الأساسية ، بما في ذلك Windows و MacOS و Linux & BSD. QEMU USERMODE يمكنه فقط التعامل مع Linux & BSD
تثبيت
يرجى الاطلاع على ملف دليل الإعداد لكيفية تثبيت Qiling Framework.
أمثلة
- يوضح المثال أدناه كيفية استخدام Qiling Framework بأكثر طريقة striagghtforward لمحاكاة 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 ()- يوضح المثال التالي كيف يمكن تصحيح crackme Windows بشكل ديناميكي لجعله دائمًا يعرض مربع الحوار "تهنئة".
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 أدناه كيف يعمل المثال أعلاه.
محاكاة البرامج الثابتة لجهاز توجيه الذراع على جهاز Ubuntu X64
- Qiling Framework الساخن ويحاكي جهاز التوجيه/usr/bin/httpd على x86_64bit ubuntu

المكون الإضافي لـ Qiling's Idapro: صك وفك تشفير سر ميراي
- يوضح هذا الفيديو كيف قادر على تشغيل المكون الإضافي الخاص بـ Qiling's Idapro مع تشغيل Idapro مع محرك Qiling Insturnation
GDBServer مع Idapro Demo
- حل تحدي CTF بسيط مع Qiling Framework و Idapro
محاكاة MBR

qltool
يوفر Qiling أيضًا أداة ودية تدعى qltool لمحاكاة SHELDCODE بسرعة وثنائيات قابلة للتنفيذ.
باستخدام 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/
مع تمكين مصحح الأخطاء الثنائية و 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