Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
emuko — Rust में लिखा RISC-V एमुलेटर जो ARM64/x86_64 और Sv39 वर्चुअल मेमोरी पर JIT के साथ Linux बूट करता है | Kitploit
उपकरण/GitHubGitHub/wkoszek/emuko
एम्बेडेड सिस्टम सुरक्षासामान्य उपयोगिताएँरिवर्स इंजीनियरिंगडीबगर्ससुरक्षा वर्चुअलाइजेशनहार्डवेयर सुरक्षालर्निंग और शिक्षाफर्मवेयर विश्लेषण
GitHubwkoszek/emuko

emuko

Rust में लिखा RISC-V एमुलेटर जो ARM64/x86_64 और Sv39 वर्चुअल मेमोरी पर JIT के साथ Linux बूट करता है

रिपॉजिटरी देखें
10114 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
वेबसाइट

emuko

Rust में एक RISC-V एमुलेटर। यह Linux बूट करता है।

emuko.dev


यह मशीन RV64IMAFDC को M/S/U विशेषाधिकार स्तरों और Sv39 वर्चुअल मेमोरी के साथ कार्यान्वित करती है। यह ARM64 और x86_64 होस्ट पर एक JIT चलाता है, आवश्यकता होने पर इंटरप्रेटर पर फॉलबैक करता है। पेरिफेरल UART 16550, CLINT, PLIC और SBI 1.0 हैं। एक बाहरी निर्भरता है: zstd।

यह सबसे तेज़ एमुलेटर नहीं है। इंटरप्रेटर मोड में यह QEMU से लगभग तीन गुना धीमा चलता है। JIT मोड में, लगभग उनतीस गुना धीमा। कोड ब्लॉक चेनिंग अभी तक लागू नहीं की गई है; इससे मदद मिलेगी। हम यह स्पष्ट रूप से कहते हैं क्योंकि आपको पता होना चाहिए कि आप क्या प्राप्त कर रहे हैं।

यह अच्छा करता है: यह संचालित करने में सरल है, यह मशीन नियंत्रण के लिए एक HTTP API प्रदान करता है, यह कर्नेल के बिना बेयर-मेटल ELF को निष्पादित कर सकता है, और यह पूर्ण मशीन स्थिति को सहेज और पुनर्स्थापित कर सकता है। ये सिस्टम कार्य और परीक्षण के लिए उपयोगी चीजें हैं।


बिल्ड

root@kitploit:~
cargo build --release

बाइनरी target/release/emuko है। एक alias बनाएँ।

root@kitploit:~
alias emuko=target/release/emuko

त्वरित आरंभ

कर्नेल प्राप्त करें

root@kitploit:~
emuko dow

~/.emuko/ में एक Debian RISC-V नेटबूट कर्नेल और initrd डाउनलोड करता है। SHA256 सत्यापित किया जाता है। आपके स्वयं के कर्नेल की आवश्यकता नहीं है।

Linux बूट करें

root@kitploit:~
emuko start

एमुलेटर एक डेमॉन के रूप में चलता है। आप इसके कंसोल से जुड़े हैं। आप कर्नेल को बूट होते देखेंगे। आपको एक शेल मिलेगा।

कुंजीप्रभाव
Ctrl+]डिटैच (डेमॉन जारी रहता है)
Ctrl+Cअतिथि में इंटरप्ट
Ctrl+Dअतिथि में EOF

चल रही मशीन को नियंत्रित करें

root@kitploit:~
emuko start            # कंसोल को फिर से जोड़ें
emuko dump             # CPU स्थिति प्रिंट करें
emuko stop             # निष्पादन रोकें
emuko con              # जारी रखें
emuko step 1000        # N निर्देशों को सिंगल-स्टेप करें
emuko snap             # एक स्नैपशॉट लें
emuko kill             # बंद करें

डेमॉन http://127.0.0.1:7788/v1/api/ पर सुनता है और ws://127.0.0.1:7788/v1/ws/uart पर WebSocket कंसोल कनेक्शन स्वीकार करता है। दोनों स्क्रिप्ट से उपयोग करने योग्य हैं।


बेयर-मेटल ELF निष्पादन

कभी-कभी आपको एक ऑपरेटिंग सिस्टम की आवश्यकता नहीं होती। आप मशीन चाहते हैं, एक बाइनरी, और उनके बीच कुछ और नहीं।

root@kitploit:~
emuko run ./my_program.elf

डेमॉन मशीन को रीसेट करता है, ELF सेगमेंट को उनके भौतिक पतों पर लोड करता है, और निष्पादन शुरू करता है। आउटपुट UART कंसोल पर आता है। डेमॉन पहले से चल रहा होना चाहिए।

बेयर मेटल से कंसोल पर लिखने के लिए: 0x1000_0000 पर एक बाइट स्टोर करें।

उदाहरण

examples/ निर्देशिका में ऐसे प्रोग्राम हैं जो इस प्रकार चलते हैं।

उदाहरणयह क्या करता है
bare_printfहर 10 मिलियन पुनरावृत्तियों पर एक संदेश प्रिंट करता है। कोई libc नहीं। सीधा UART राइट।

उन्हें बनाने के लिए एक RISC-V क्रॉस-कंपाइलर आवश्यक है। macOS पर: brew install riscv64-elf-gcc। Linux पर: apt install gcc-riscv64-linux-gnu।

root@kitploit:~
emuko start
cd examples/bare_printf
make run

स्नैपशॉट

मशीन की स्थिति — रजिस्टर, मेमोरी, सब कुछ — सहेजी और पुनर्स्थापित की जा सकती है।

root@kitploit:~
emuko snap                  # अभी स्नैपशॉट लें
emuko snap 5000000          # हर 5M चरणों पर ऑटो-स्नैपशॉट
emuko snap stop             # ऑटो-स्नैपशॉट बंद करें
emuko ls                    # स्नैपशॉट सूचीबद्ध करें
emuko restore <snapshot>    # पुनर्स्थापित करें

मेमोरी मैप

वर्चुअल मशीन QEMU RISC-V virt प्लेटफ़ॉर्म के साथ संगत एक निश्चित MMIO लेआउट का उपयोग करती है।

Linux बूट पर RAM लेआउट

डिफ़ॉल्ट सेटिंग्स के साथ (load_addr=0x80200000, 1 GiB RAM):

root@kitploit:~
0x8000_0000  ── RAM आधार
                (गैप — बेयर-मेटल प्रोग्राम द्वारा उपयोग योग्य)
0x8020_0000  ── कर्नेल इमेज
                │  .text / .rodata / .data / .bss
                └─ कर्नेल अंत
                (मुक्त)
             ── initrd
             ── DTB
             ── EFI क्षेत्र    (128 KiB, केवल PE/UEFI कर्नेल)
0xBFFF_FFFF  ── RAM अंत

DTB, initrd और EFI RAM के शीर्ष से नीचे की ओर रखे जाते हैं। एमुलेटर बूट पर कर्नेल के साथ ओवरलैप की जाँच करता है और यदि RAM बहुत छोटी है तो स्पष्ट त्रुटि के साथ रुक जाता है।

बेयर-मेटल ELF के लिए RAM लेआउट

ELF PT_LOAD सेगमेंट को उनके p_vaddr पतों पर रखा जाता है। bare_printf 0x8000_0000 पर लिंक होता है:

root@kitploit:~
0x8000_0000  ── .text
             ── .rodata
             ── .data
             ── .bss   (start.S द्वारा शून्य किया गया)
             ── स्टैक  (BSS के ऊपर 16 KiB)

कोई कर्नेल नहीं। कोई initrd नहीं। कोई DTB नहीं। रजिस्टर sp को छोड़कर शून्य से शुरू होते हैं, जिसे एमुलेटर start.S के संभालने से पहले ram_base + 0x100000 पर सेट करता है।


कॉन्फ़िगरेशन

विकल्प कमांड लाइन पर पास किए जा सकते हैं, पर्यावरण चर के रूप में सेट किए जा सकते हैं, या emuko.yml में रखे जा सकते हैं।


तुलना

सामान्यतः उपयोग किए जाने वाले RISC-V एमुलेटर के साथ सीधी तुलना। ✅ = समर्थित और प्रलेखित. — = अंतर्निर्मित नहीं है.

स्रोत: QEMU virt · Spike · Renode


लाइसेंस

Apache 2.0. देखें LICENSE।

टूल डाउनलोड करें
क्षेत्रआधारआकारनोट्स
CLINT0x0200_000064 KiBटाइमर और सॉफ़्टवेयर IRQ
PLIC0x0C00_00004 MiB32 इंटरप्ट स्रोत
UART0x1000_0000256 BNS16550A, IRQ 10
RAM0x8000_00001 GiBकॉन्फ़िगरेबल
विकल्पEnv Varडिफ़ॉल्टनोट्स
--ram-sizeRAM_SIZE1 GBRAM बाइट्स में
--backendEMUKO_BACKENDadaptiveadaptive, arm64_jit, amd64_jit, arm64, x86_64
--bootargsBOOTARGSसीरियल कंसोलकर्नेल कमांड लाइन
फीचरemukoQEMUSpikeRenode
JIT / डायनेमिक अनुवाद✅✅——
स्नैपशॉट सहेजना और पुनर्स्थापित करना✅✅—✅
आवधिक ऑटो-स्नैपशॉट✅——✅
मशीन नियंत्रण के लिए HTTP API✅———
WebSocket UART कंसोल✅———
स्क्रिप्टेबल UART होस्ट ब्रिज✅——✅
बेयर-मेटल ELF अपलोड (कोई OS नहीं)✅———
एक-कमांड कर्नेल डाउनलोड + SHA256✅———
JIT-बनाम-इंटरप्रेटर अंतर जाँचकर्ता✅———
GDB डीबगिंग—✅✅✅
बड़ा उपकरण पारिस्थितिकी तंत्र (PCIe, virtio)—✅——
मल्टी-नोड सिमुलेशन———✅
व्यापक ISA कवरेज (RVV, क्रिप्टो, आदि)——✅—