
आपकी कमांड लाइन के लिए एक मल्टी-आर्क असेंबली REPL और इम्यूलेटर।
scare आपकी कमांड लाइन के लिए एक मल्टी-आर्किटेक्चर असेंबली REPL और एमुलेटर है।
आजकल बहुत सारे आधुनिक असेंबली REPL मौजूद नहीं हैं। जो मौजूद हैं वे या तो अपारदर्शी वेबऐप हैं, या किसी विशेष आर्किटेक्चर/प्लेटफ़ॉर्म से बंधे हुए हैं। scare उन लोगों के लिए बनाया गया था जो असेंबली कोड का परीक्षण, प्रयोग या अन्यथा खेलना चाहते हैं। सभी असेंबल किए गए कोड एक एमुलेटर में चलाए जाते हैं, जो केवल वही कोड निष्पादित करता है जो आप उसे देते हैं। अंतर्निहित scarelib लाइब्रेरी के लिए मल्टी-आर्किटेक्चर डिज़ाइन मॉड्यूलर होने के लिए है, जिससे नए आर्किटेक्चर को जल्दी से जोड़ा जा सके।
संस्करण 0.3.0 scare का पहला सार्वजनिक रिलीज़ है।
मुख्य विशेषताएँ
वर्तमान में समर्थित आर्किटेक्चर
आवश्यकताएँ
वांछित आर्किटेक्चर के साथ कमांड लाइन से scare को लॉन्च करें। यह डिफ़ॉल्ट सेटिंग्स के साथ एक REPL इंस्टेंस बनाएगा।
python3 scare.py -a x64
हेल्प फ़ाइल
[x64]400000> /
scare Help
/ /? /help -- Open help menu
/x /exit /q /quit -- Quit the program
/back n -- Go back n number of lines
/dis {0xaddress|$register} NUM -- Disassemble NUM bytes from 0xaddress or $register
/export FILETYPE FILENAME -- Export machine code as FILETYPE to the FILENAME
FILETYPE List:
- bin
- elf64
- pe32
/info -- Info about the emulator state
/l /list -- List the current program
/load file.asm -- Load listing from file.asm (overwrites current program)
/read {0xaddress|$register} NUM -- Read NUM bytes from 0xaddress or $register
/reset -- Reset the emulator to a clean state
/run -- Run the current program
/save file.asm -- Save assembly output to file.asm
[[: Config Commands :]] (Use /c or /config)
NOTE: Run /reset if you are changing emu/* options, otherwise the emulator may not start!
/c -- Print all config options
/c emu/arch -- Print Arch Value
/c emu/arch x64 -- Set Arch to x64
/c x86/xmm 1 -- Enable x86/xmm
असेंबली सूची में पीछे जाना
mov eax, 0x5555
mov ebx, 0xaaaa
xor eax, ebx
/l
/back 2
mov ecx, 0xbbbb
add eax, ecx
फ़ाइल लोड करना, फ़ाइल सहेजना
/load examples/x64/test.asm
/l
/run
/read $rsp 32
pop rdx
/save test2.asm
बाइनरी के रूप में निर्यात करें, यहाँ आपको exit55.elf नामक एक elf64 मिलेगा जो चलाने पर बाहर निकल जाता है।
mov eax, 0x3c
mov edi, 55
syscall
/export elf64 exit55.elf
कॉन्फ़िग विकल्पों का उपयोग करना
not rax
/c x86/xmm 1
movq xmm4, rax
movaps xmm5, xmm4
शेलकोड डिकोड करना:

कोड को elf64 में निर्यात करना और उसे चलाना:

ऐसी कई चीज़ें हैं जिन्हें भविष्य में जोड़ना शानदार होगा: अधिक आर्किटेक्चर (ज्ञात और अल्पज्ञात दोनों), अधिक CPU मोड, बेहतर वातावरण एमुलेशन, emu/asm/dis लाइब्रेरीज़ के बीच हॉट स्वैपिंग आदि। एमुलेटर, असेंबलर और डिसअसेंबलर को एक साथ अच्छी तरह से काम करवाना हमेशा आसान नहीं होता।
कुछ सुविधाएँ इस समय समर्थित नहीं हो सकती हैं क्योंकि उन्हें एमुलेटर के कॉन्फ़िगरेशन पर निर्णय लेने की आवश्यकता होती है। इस परियोजना का लक्ष्य एक लक्षित आर्क के लिए एक सामान्य REPL और एमुलेटर समाधान होना है। परिणामस्वरूप, विकास रोडमैप "लोग जो चीज़ें उठाते हैं उन्हें जोड़ना" होगा, जबकि इसे उपयोग और विकसित करने में आसान रखा जाएगा।
यदि आपके पास विचार हैं, तो बेझिझक PR बनाएँ।
यदि आपको कोई बग मिलता है, तो बेझिझक issue दर्ज करें।
धन्यवाद और मज़े करें!
~ netspooky
हॉन्टेड क्रू को शाउट आउट