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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
snapchange — KVM का उपयोग करके मेमोरी स्नैपशॉट की हल्की फ़ज़िंग | Kitploit
उपकरण/GitHubGitHub/awslabs/snapchange
गतिशील विश्लेषण (सैंडबॉक्सिंग)भेद्यता विश्लेषणगतिशील कोड विश्लेषण (DAST)डीबगर्ससुरक्षा वर्चुअलाइजेशनफज़िंग
GitHubawslabs/snapchange

snapchange

KVM का उपयोग करके मेमोरी स्नैपशॉट की हल्की फ़ज़िंग

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

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें

Snapchange

KVM का उपयोग करके मेमोरी स्नैपशॉट की हल्की-फुल्की फ़ज़िंग

Snapchange कच्चे मेमोरी डंप और रजिस्टर स्थिति को KVM वर्चुअल मशीन (VM) में लोड करने की क्षमता प्रदान करता है। निष्पादन के किसी बिंदु पर, इस VM को KVM द्वारा पाए गए गंदे पृष्ठों (dirty pages) या किसी फ़ज़र द्वारा मैन्युअल रूप से गंदे किए गए पृष्ठों को रीसेट करके अपनी प्रारंभिक स्थिति में रीसेट किया जा सकता है।

Quick Links:

  • Cookbook fuzz, trace, coverage, minimize, तथा project कमांड लाइन उपयोगिताओं के उदाहरण प्रदान करता है
  • QEMU के साथ स्नैपशॉट लेना
  • आर्किटेक्चर
  • फ़ज़र लाइफ़साइकल

Tutorials

  • Tutorial 1 - बुनियादी उपयोग
  • Tutorial 2 - ASAN के साथ
LibTIFF
  • Tutorial 3 - कस्टम म्यूटेटर के साथ FFmpeg
  • Tutorial 4 - सिसकॉल फ़ज़र
  • Tutorial 5 - Redqueen
  • Aspirations

    • KVM का उपयोग करके भौतिक मेमोरी और रजिस्टर स्थिति स्नैपशॉट को रीप्ले करना
    • कई कोरों पर समानांतर निष्पादन
    • गेस्ट VM को इंट्रोस्पेक्शन सुविधाओं का एक सेट प्रदान करना
    • ब्रेकपॉइंट कवरेज के माध्यम से रीयल-टाइम कवरेज स्थिति
    • फ़ज़र घटकों के रीयल-टाइम प्रदर्शन मेट्रिक्स
    • सिंगल-स्टेप डीबग ट्रेसिंग, टेस्टकेस मिनिमाइज़ेशन, और टेस्टकेस कवरेज जैसी फ़ज़िंग उपयोगिताएँ प्रदान करना
    • कस्टम म्यूटेशन और जनरेशन रणनीतियों की अनुमति देने के लिए इनपुट एब्स्ट्रैक्शन

    Example:

    फ़ज़र टेम्पलेट से एक टारगेट फ़ज़र बनाएँ

    root@kitploit:~
    $ cp -r -L fuzzer_template your_new_fuzzer
    

    अपने टारगेट का स्नैपशॉट लेने के लिए your_new_fuzzer/create_snapshot.sh को संशोधित करें

    गेस्ट VM में म्यूटेटेड डेटा इंजेक्ट करने के लिए src/fuzzer.rs अपडेट करें

    root@kitploit:~
    #[derive(Default)]
    pub struct TemplateFuzzer;
    
    impl Fuzzer for TemplateFuzzer {
        // The type of Input being fuzzed. Used to know how to generate and mutate useful inputs.
        type Input = Vec<u8>;
        // The starting address of the snapshot
        const START_ADDRESS: u64 = 0x402363;
        // The maximum length of mutated input to generate
        const MAX_INPUT_LENGTH: usize = 100;
    
        fn set_input(&mut self, input: &Self::Input, fuzzvm: &mut FuzzVm<Self>) -> Result<()> {
            // Write the mutated input into the data buffer in the guest VM
            fuzzvm.write_bytes_dirty(VirtAddr(0x402004), CR3, &input)?;
            Ok(())
        }
    
        fn reset_breakpoints(&self) -> Option<&[BreakpointLookup]> {
            Some(&[
                // Reset when the VM hits example1!main+0x123
                BreakpointLookup::SymbolOffset("example1!main", 0x123)
            ])
        }
    }
    

    16 कोर के साथ फ़ज़िंग शुरू करें

    root@kitploit:~
    $ cargo run -r -- fuzz -c 16
    

    Implementation

    इस README के लिए शब्दों का त्वरित उपयोग:

    • Hypervisor: स्नैपशॉट को KVM में निष्पादित करने वाला टारगेट-अज्ञेय (target agnostic) कोड
    • Fuzzer: किसी टारगेट-विशिष्ट फ़ज़ केस के लिए गेस्ट को संशोधित और मॉनिटर करने हेतु उपयोग किया जाने वाला टारगेट-विशिष्ट कोड

    हाइपरवाइज़र प्रत्येक अनुरोधित कोर के लिए भौतिक मेमोरी फ़ाइल को मैप करके शुरू होता है। इस प्रकार, प्रत्येक कोर के पास मेमोरी की अपनी अद्वितीय प्रति होती है। फिर हाइपरवाइज़र KVM गेस्ट बनाता है और गेस्ट को यह बैकिंग मेमोरी देता है। इस गेस्ट की रजिस्टर स्थिति दी गई रजिस्टर स्थिति के साथ प्रारंभ की जाती है और गेस्ट का निष्पादन प्रारंभ किया जाता है। हाइपरवाइज़र तब तक प्रतीक्षा करता है जब तक गेस्ट बाहर नहीं निकलता। प्रत्येक निकास (exit) हाइपरवाइज़र द्वारा संभाला जाता है और कुछ को टारगेट-विशिष्ट म्यूटेशन, संशोधन, या इंट्रोस्पेक्शन के लिए फ़ज़र को पास किया जाता है। यदि निकास का हैंडलर संकेत देता है कि गेस्ट को रीसेट किया जाना चाहिए, तो हाइपरवाइज़र रन लूप से बाहर निकलता है और गेस्ट को मूल स्नैपशॉट स्थिति में रीसेट करता है तथा रन लूप को फिर से शुरू करता है।

    गेस्ट की कवरेज कवरेज ब्रेकपॉइंट्स का उपयोग करके उत्पन्न की जाती है। ब्रेकपॉइंट किए जाने वाले पतों की सूची वाली एक अलग फ़ाइल हाइपरवाइज़र को दी जा सकती है। यदि इनमें से कोई भी पता हिट होता है, तो पता कवरेज डेटाबेस में जोड़ दिया जाएगा और उस पते के लिए निर्देश पुनर्स्थापित कर दिया जाएगा। इस प्रकार, ब्रेकपॉइंट दोबारा ट्रिगर नहीं होगा।

    Project directory

    Snapchange कॉन्फ़िगरेशन के लिए टारगेट-विशिष्ट प्रोजेक्ट निर्देशिकाओं का लाभ उठाता है। यह निर्देशिका वह जगह है जहाँ इनपुट और आउटपुट फ़ाइलें तथा निर्देशिकाएँ रखी जाती हैं। निम्नलिखित फ़ाइल एक्सटेंशन/निर्देशिकाएँ इनपुट के रूप में उपयोग की जाती हैं:

    • .physmem - वह फ़ाइल जिसमें कच्ची, भौतिक मेमोरी फ़ाइल होती है
    • रजिस्टर फ़ाइल (निम्न में से एक)
      • .regs - रजिस्टर स्थिति युक्त JSON रजिस्टर फ़ाइल
      • .qemuregs - qemu से info registers का आउटपुट

    प्रोजेक्ट निर्देशिका में फ़ाइलों और उनके उपयोगों की पूरी सूची यहाँ पाई जा सकती है

    Debugging Trace

    डीबगिंग सिंगल-स्टेप ट्रेस का पूरा उदाहरण यहाँ पाया जा सकता है।

    root@kitploit:~
    ITERATION 604 0x00007ffff7ecb0d5 0x11115000 | libc-2.31.so!__GI___getpid+0x5 (0x7ffff7ecb0d5)              
        syscall 
        [0f, 05]
    ITERATION 605 0xffffffff83a00000 0x11115000 | entry_SYSCALL_64+0x0 (0xffffffff83a00000)                    
        swapgs 
        [0f, 01, f8]
    ITERATION 606 0xffffffff83a00003 0x11115000 | entry_SYSCALL_64+0x3 (0xffffffff83a00003)                    
        mov qword ptr gs:[0xa014], rsp 
        [None:0x0+0xa014=0xa014]] 
        RSP:0x7fffffffeb78 -> example1!main+0x19 (0x55555555514e)-> 0xff8458b48f44589
        [65, 48, 89, 24, 25, 14, a0, 00, 00]
    ITERATION 607 0xffffffff83a0000c 0x11115000 | entry_SYSCALL_64+0xc (0xffffffff83a0000c)                    
        nop 
        [66, 90]
    ITERATION 608 0xffffffff83a0000e 0x11115000 | entry_SYSCALL_64+0xe (0xffffffff83a0000e)                    
        mov rsp, cr3 
        RSP:0x7fffffffeb78 -> example1!main+0x19 (0x55555555514e) -> 0xff8458b48f44589
        CR3:0x11115000
        [0f, 20, dc]
    

    Snapshots

    VirtualBox या QEMU के माध्यम से स्नैपशॉट प्राप्त करने की जानकारी नीचे दी गई है:

    • VirtualBox
    • QEMU

    उदाहरणों में एक make_example.sh (जैसे example 1) स्क्रिप्ट शामिल है जो शुरू से पूर्ण स्नैपशॉट बनाती है। इन उदाहरणों का उपयोग पुनरुत्पादनीय स्नैपशॉट के लिए अन्य टारगेट्स के टेम्पलेट के रूप में किया जा सकता है।

    Documentation and clippy

    root@kitploit:~
    make all
    cargo doc --open
    

    Where to begin reading?

    HACKING सिस्टम को समझना शुरू करने के लिए कोड बेस में कुछ उच्च-स्तरीय स्थान प्रदान करता है।

    Security

    अधिक जानकारी के लिए CONTRIBUTING देखें।

    License

    यह प्रोजेक्ट Apache-2.0 License के अंतर्गत लाइसेंस प्राप्त है।

    टूल डाउनलोड करें