
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:
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')