
एक सच्चा इंस्ट्रुमेंटेबल बाइनरी एमुलेशन फ्रेमवर्क
Qiling के उपयोग, ब्लॉग और संबंधित कार्य
Qiling एक उन्नत बाइनरी एमुलेशन ढांचा है, जिसमें निम्नलिखित विशेषताएं हैं:
Qiling ने विभिन्न अंतर्राष्ट्रीय सम्मेलनों में भी अपना स्थान बनाया है।
2022:
2021:
2020:
2019:
Qiling को Unicorn Engine द्वारा समर्थित किया गया है।
अधिक जानकारी के लिए हमारी वेबसाइट पर जाएं।
यह प्रोग्राम मुफ्त सॉफ्टवेयर है; आप इसे GNU जनरल पब्लिक लाइसेंस की शर्तों के तहत पुनर्वितरित और/या संशोधित कर सकते हैं जैसा कि फ्री सॉफ्टवेयर फाउंडेशन द्वारा प्रकाशित किया गया है; या तो लाइसेंस का संस्करण 2, या (आपके विकल्प पर) कोई बाद का संस्करण।
कई ओपन-सोर्स एमुलेटर हैं, लेकिन Qiling के सबसे करीब दो प्रोजेक्ट Unicorn और QEMU यूज़र मोड हैं। यह अनुभाग उनके विरुद्ध Qiling के मुख्य अंतरों की व्याख्या करता है।
Unicorn के ऊपर निर्मित, लेकिन Qiling और Unicorn दो अलग-अलग प्राणी हैं।
QEMU यूज़र मोड हमारे एमुलेटर के समान कार्य करता है, अर्थात क्रॉस-आर्किटेक्चर तरीके से संपूर्ण एक्जीक्यूटेबल बाइनरीज़ को एमुलेट करना। हालांकि, Qiling QEMU यूज़र मोड के विरुद्ध कुछ महत्वपूर्ण अंतर प्रदान करता है:
कृपया 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()
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()
नीचे दिया गया यूट्यूब वीडियो दिखाता है कि उपरोक्त उदाहरण कैसे काम करता है।
Qiling ढांचा x86_64 Ubuntu होस्ट पर ARM राउटर के /usr/bin/httpd को हॉट-पैच और एमुलेट करता है।
यह वीडियो प्रदर्शित करता है कि कैसे Qiling का IDA Pro प्लगइन IDA Pro को Qiling इंस्ट्रुमेंटेशन इंजन के साथ चला सकता है।
Qiling का IDA Pro प्लगइन: Mirai के रहस्य को इंस्ट्रूमेंट और डिक्रिप्ट करना
Qiling ढांचे और IDA Pro के साथ एक सरल CTF चुनौती को हल करना
Qiling ढांचे और IDA Pro के साथ एक सरल CTF चुनौती को हल करना
Qiling ढांचा MBR एमुलेट करता है
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 देखें।