
qiling v1.4.11
एक सच्चा इंस्ट्रुमेंटेबल बाइनरी एमुलेशन फ्रेमवर्क
Qiling के उपयोग, ब्लॉग और संबंधित कार्य
Qiling एक उन्नत बाइनरी एमुलेशन ढांचा है, जिसमें निम्नलिखित विशेषताएं हैं:
- बहु-प्लेटफॉर्म एमुलेट करें: Windows, macOS, Linux, Android, BSD, UEFI, DOS, MBR.
- बहु-आर्किटेक्चर एमुलेट करें: 8086, X86, X86_64, ARM, ARM64, MIPS, RISC-V, PowerPC.
- एकाधिक फ़ाइल स्वरूपों का समर्थन: PE, Mach-O, ELF, COM, MBR.
- Windows ड्राइवर (.sys), Linux कर्नेल मॉड्यूल (.ko) और macOS कर्नेल (.kext) का समर्थन Demigod के माध्यम से।
- पृथक वातावरण में कोड को एमुलेट और सैंडबॉक्स करता है।
- पूरी तरह से कॉन्फ़िगरेबल सैंडबॉक्स प्रदान करता है।
- गहन मेमोरी, रजिस्टर, OS स्तर और फ़ाइल सिस्टम स्तर API प्रदान करता है।
- सूक्ष्म-दानेदार इंस्ट्रुमेंटेशन: विभिन्न स्तरों पर हुक की अनुमति देता है (निर्देश/बेसिक-ब्लॉक/मेमोरी-एक्सेस/एक्सेप्शन/सिस्कॉल/आई/ओ इत्यादि)।
- वर्चुअल मशीन स्तर API प्रदान करता है जैसे कि वर्तमान निष्पादन स्थिति को सहेजना और पुनर्स्थापित करना।
- क्रॉस आर्किटेक्चर और प्लेटफॉर्म डिबगिंग क्षमताओं का समर्थन करता है।
- रिवर्स डिबगिंग क्षमता के साथ अंतर्निहित डिबगर।
- चल रहे कोड पर गतिशील हॉट पैच की अनुमति देता है, जिसमें लोड की गई लाइब्रेरी शामिल है।
- Python में सच्चा ढांचा, जिससे शीर्ष पर अनुकूलित सुरक्षा विश्लेषण उपकरण बनाना आसान हो जाता है।
Qiling ने विभिन्न अंतर्राष्ट्रीय सम्मेलनों में भी अपना स्थान बनाया है।
2022:
2021:
2020:
- Black Hat, Europe
- Black Hat, USA
- Black Hat, USA (Demigod)
- Black Hat, Asia
- Hack In The Box, Lockdown 001
- Hack In The Box, Lockdown 002
- Hack In The Box, Cyberweek
- Nullcon
2019:
Qiling को Unicorn Engine द्वारा समर्थित किया गया है।
अधिक जानकारी के लिए हमारी वेबसाइट पर जाएं।
लाइसेंस
यह प्रोग्राम मुफ्त सॉफ्टवेयर है; आप इसे GNU जनरल पब्लिक लाइसेंस की शर्तों के तहत पुनर्वितरित और/या संशोधित कर सकते हैं जैसा कि फ्री सॉफ्टवेयर फाउंडेशन द्वारा प्रकाशित किया गया है; या तो लाइसेंस का संस्करण 2, या (आपके विकल्प पर) कोई बाद का संस्करण।
Qiling बनाम अन्य एमुलेटर
कई ओपन-सोर्स एमुलेटर हैं, लेकिन Qiling के सबसे करीब दो प्रोजेक्ट Unicorn और QEMU यूज़र मोड हैं। यह अनुभाग उनके विरुद्ध Qiling के मुख्य अंतरों की व्याख्या करता है।
Qiling बनाम Unicorn इंजन
Unicorn के ऊपर निर्मित, लेकिन Qiling और Unicorn दो अलग-अलग प्राणी हैं।
- Unicorn केवल एक CPU एमुलेटर है, इसलिए यह CPU निर्देशों को एमुलेट करने पर ध्यान केंद्रित करता है, जो एमुलेटर मेमोरी को समझ सकता है। इसके अलावा, Unicorn उच्च स्तरीय अवधारणाओं जैसे डायनेमिक लाइब्रेरी, सिस्टम कॉल, I/O हैंडलिंग या PE, Mach-O या ELF जैसे एक्जीक्यूटेबल प्रारूपों से अवगत नहीं है। परिणामस्वरूप, Unicorn केवल कच्चे मशीन निर्देशों को एमुलेट कर सकता है, बिना ऑपरेटिंग सिस्टम (OS) संदर्भ के।
- Qiling को एक उच्च स्तरीय ढांचे के रूप में डिज़ाइन किया गया है, जो CPU निर्देशों को एमुलेट करने के लिए Unicorn का लाभ उठाता है, लेकिन OS को समझ सकता है: इसमें एक्जीक्यूटेबल प्रारूप लोडर (वर्तमान में PE, Mach-O और ELF के लिए), डायनेमिक लिंकर (ताकि हम साझा लाइब्रेरी को लोड और रीलोकेट कर सकें), सिस्कॉल और I/O हैंडलर हैं। इस कारण से, Qiling अपने मूल OS की आवश्यकता के बिना एक्जीक्यूटेबल बाइनरी चला सकता है।
Qiling बनाम QEMU यूज़र मोड
QEMU यूज़र मोड हमारे एमुलेटर के समान कार्य करता है, अर्थात क्रॉस-आर्किटेक्चर तरीके से संपूर्ण एक्जीक्यूटेबल बाइनरीज़ को एमुलेट करना। हालांकि, Qiling QEMU यूज़र मोड के विरुद्ध कुछ महत्वपूर्ण अंतर प्रदान करता है:
- Qiling एक सच्चा विश्लेषण ढांचा है, जो आपको उसके शीर्ष पर अपने स्वयं के गतिशील विश्लेषण उपकरण (Python में) बनाने की अनुमति देता है। इस बीच, QEMU केवल एक उपकरण है, ढांचा नहीं।
- Qiling गतिशील इंस्ट्रुमेंटेशन कर सकता है, और रनटाइम पर कोड को हॉट पैच भी कर सकता है। QEMU दोनों में से कुछ नहीं करता।
- न केवल क्रॉस-आर्किटेक्चर काम करता है, Qiling क्रॉस-प्लेटफॉर्म भी है। उदाहरण के लिए, आप Windows के ऊपर Linux ELF फ़ाइल चला सकते हैं। इसके विपरीत, QEMU यूज़र मोड केवल उसी OS के बाइनरी चलाता है, जैसे Linux पर Linux ELF, जिस तरह से यह एमुलेटेड कोड से नेटिव OS में सिस्कॉल अग्रेषित करता है।
- Qiling अधिक प्लेटफॉर्म का समर्थन करता है, जिसमें Windows, macOS, Linux और BSD शामिल हैं। QEMU यूज़र मोड केवल Linux और BSD को संभाल सकता है।
स्थापना
कृपया Qiling ढांचे को स्थापित करने के तरीके के लिए सेटअप गाइड फ़ाइल देखें।
उदाहरण
नीचे दिया गया उदाहरण दिखाता है कि Windows एक्जीक्यूटेबल को एमुलेट करने के लिए Qiling ढांचे का उपयोग कैसे किया जाए।
from qiling import Qiling
if __name__ == "__main__":
# Qiling इंस्टेंस को इनिशियलाइज़ करें, एमुलेट करने के लिए एक्जीक्यूटेबल और एमुलेटेड सिस्टम रूट निर्दिष्ट करें।
# ध्यान दें कि वर्तमान कार्यशील निर्देशिका Qiling होम मानी जाती है
ql = Qiling([r'examples/rootfs/x86_windows/bin/x86_hello.exe'], r'examples/rootfs/x86_windows')
# एमुलेशन शुरू करें
ql.run()
- निम्नलिखित उदाहरण दिखाता है कि Windows क्रैकमी को गतिशील रूप से कैसे पैच किया जा सकता है ताकि वह हमेशा "बधाई" संवाद प्रदर्शित करे।
from qiling import Qiling
def force_call_dialog_func(ql: Qiling):
# वर्तमान स्टैक फ्रेम से DialogFunc का पता प्राप्त करें
lpDialogFunc = ql.stack_read(-8)
# DialogFunc के लिए स्टैक मेमोरी सेटअप करें
ql.stack_push(0)
ql.stack_push(1001) # IDS_APPNAME
ql.stack_push(0x111) # WM_COMMAND
ql.stack_push(0)
# रिटर्न एड्रेस पुश करें
ql.stack_push(0x0401018)
# DialogFunc पते से एमुलेशन फिर से शुरू करें
ql.arch.regs.eip = lpDialogFunc
if __name__ == "__main__":
# Qiling इंस्टेंस को इनिशियलाइज़ करें
ql = Qiling([r'rootfs/x86_windows/bin/Easy_CrackMe.exe'], r'rootfs/x86_windows')
# कुछ कोड को NOP आउट करें
ql.patch(0x004010B5, b'\x90\x90')
ql.patch(0x004010CD, b'\x90\x90')
ql.patch(0x0040110B, b'\x90\x90')
ql.patch(0x00401112, b'\x90\x90')
# कॉलबैक के साथ एक पते पर हुक करें
ql.hook_address(force_call_dialog_func, 0x00401016)
ql.run()
नीचे दिया गया यूट्यूब वीडियो दिखाता है कि उपरोक्त उदाहरण कैसे काम करता है।
x64 Ubuntu होस्ट पर ARM राउटर फर्मवेयर एमुलेट करना
Qiling ढांचा x86_64 Ubuntu होस्ट पर ARM राउटर के /usr/bin/httpd को हॉट-पैच और एमुलेट करता है।
Qiling का IDA Pro प्लगइन: Mirai के रहस्य को इंस्ट्रूमेंट और डिक्रिप्ट करना
यह वीडियो प्रदर्शित करता है कि कैसे Qiling का IDA Pro प्लगइन IDA Pro को Qiling इंस्ट्रुमेंटेशन इंजन के साथ चला सकता है।
IDA Pro डेमो के साथ GDB सर्वर
Qiling ढांचे और IDA Pro के साथ एक सरल CTF चुनौती को हल करना
Qiling ढांचे और IDA Pro के साथ एक सरल CTF चुनौती को हल करना
MBR एमुलेट करना
Qiling ढांचा MBR एमुलेट करता है
Qltool
Qiling शेलकोड और एक्जीक्यूटेबल बाइनरीज़ को तेज़ी से एमुलेट करने के लिए qltool नामक एक अनुकूल टूल भी प्रदान करता है।
qltool के साथ, आसान निष्पादन किया जा सकता है:
शेलकोड के साथ:
$ ./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] पर संपर्क करें, या ट्विटर @qiling_io के माध्यम से।
मुख्य डेवलपर्स, प्रमुख योगदानकर्ता और अन्य।
कृपया CREDITS.md देखें।

