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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
apiscope — एक API हुकिंग फ्रेमवर्क जो विंडोज अनुप्रयोगों को इंटरसेप्ट और मॉनिटर करने के लिए है | Kitploit
उपकरण/GitHubGitHub/kaisonox/apiscope
गतिशील विश्लेषण (सैंडबॉक्सिंग)गतिशील कोड विश्लेषण (DAST)रिवर्स इंजीनियरिंगएपीआई सुरक्षा परीक्षणडीबगर्समालवेयर विश्लेषणबाइनरी विश्लेषण
GitHubkaisonox/apiscope

apiscope

एक API हुकिंग फ्रेमवर्क जो विंडोज अनुप्रयोगों को इंटरसेप्ट और मॉनिटर करने के लिए है

रिपॉजिटरी देखें
20482 महीने पहलेअभी तक समीक्षित नहीं

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

सभी देखें →

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

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

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

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

ApiScope

Build CodeQL

ApiScope एक Windows x64 अनुसंधान उपकरण है जो किसी नए या चल रहे प्रक्रिया में चयनित API कॉल को ट्रेस करने के लिए है। यह Windows डिबगर API के माध्यम से DLL लोड ईवेंट का अनुसरण करता है और प्रत्येक ईवेंट से पहले डिबगी जारी रहने से पहले हुक स्थापित करता है।

शामिल हुक्स:

  • ntdll.dll!NtCreateFile (लक्ष्य पथ रिकॉर्ड करता है)
  • ntdll.dll!NtOpenFile (लक्ष्य पथ रिकॉर्ड करता है)
  • ntdll.dll!NtReadFile
  • ntdll.dll!NtWriteFile
  • ntdll.dll!NtClose
  • ntdll.dll!NtOpenKey (कुंजी पथ रिकॉर्ड करता है)
  • ntdll.dll!NtSetValueKey
  • ntdll.dll!NtQueryValueKey
  • bcrypt.dll!BCryptOpenAlgorithmProvider
  • डेमो

    ApiScope demo

    MP4 वीडियो देखें।

    निर्माण

    आवश्यकताएँ:

    • Windows x64
    • Visual Studio 2019 या उससे नया, C++ वर्कलोड के साथ
    • CMake 3.20 या उससे नया
    • Git, जिसका उपयोग CMake द्वारा पिन किए गए Zydis डिकोडर को लाने के लिए किया जाता है
    root@kitploit:~
    cmake -S . -B build -A x64
    cmake --build build --config Release
    ctest --test-dir build -C Release --output-on-failure
    powershell -ExecutionPolicy Bypass -File .\scripts\validate-apiscope-hooks.ps1 .\build\bin\Release\apiscope-hooks.dll
    powershell -ExecutionPolicy Bypass -File .\scripts\smoke.ps1 -SkipBuild
    

    Zydis v4.1.1 एक पिन किए गए कमिट पर लाया जाता है और केवल apiscope.exe में लिंक किया जाता है। इंजेक्ट की गई apiscope-hooks.dll आयात-मुक्त रहती है।

    उपयोग

    root@kitploit:~
    apiscope.exe [--help | --version | --list-hooks]
    apiscope.exe run -k <module!export|all> [-k <module!export>] [-f text|jsonl] [-o <path>] [-q] -- <program> [args...]
    apiscope.exe attach -p <pid> -k <module!export|all> [-k <module!export>] [-f text|jsonl] [-o <path>] [-q]
    

    हुक नाम हमेशा मॉड्यूल-योग्य होते हैं। मॉड्यूल मिलान केस-असंवेदनशील है; एक्सपोर्ट मिलान केस-संवेदनशील है।

    root@kitploit:~
    .\apiscope.exe run `
      --hook ntdll.dll!NtCreateFile `
      --hook bcrypt.dll!BCryptOpenAlgorithmProvider `
      -- C:\path\app.exe
    
    .\apiscope.exe attach --pid 4242 --hook all
    
    .\apiscope.exe run --hook all --format jsonl --output trace.jsonl --quiet -- app.exe
    

    टर्मिनल ईवेंट पठनीय रहते हैं जबकि --output वैकल्पिक रूप से टेक्स्ट या JSONL को एक फ़ाइल में टी (tee) करता है। --quiet टर्मिनल ईवेंट मिरर को दबा देता है। --color auto|always|never टर्मिनल रंग को नियंत्रित करता है (डिफ़ॉल्ट auto: TTY के लिए चालू, पाइप या NO_COLOR के तहत बंद); रंग कभी भी --output फ़ाइलों में प्रकट नहीं होता। TTY पर ApiScope एक लाइव स्थिति फुटर (ईवेंट, ड्रॉप, दर और प्रति-हुक गणना) भी दिखाता है जो स्थान पर पुनः चित्रित होता है; इसे --status auto|always|never से नियंत्रित करें।

    root@kitploit:~
    [*] ntdll.dll!NtWriteFile ----------
        timestamp      : 2026-06-07T17:44:23.3834340Z
        thread_id      : 3508
        sequence       : 3
        file_handle    : 0x000000000000008C
        length         : 16
        buffer_ascii   : Hello, ApiScope!
        result         : STATUS_SUCCESS (0x00000000)
    

    JSONL ईवेंट में सामान्य मेटाडेटा और हुक-स्थानीय फ़ील्ड होते हैं:

    root@kitploit:~
    {"schema_version":1,"sequence":1,"module":"bcrypt.dll","api":"BCryptOpenAlgorithmProvider","hook":"bcrypt.dll!BCryptOpenAlgorithmProvider","fields":{"flags":0,"result":"STATUS_SUCCESS (0x00000000)"}}
    

    ईवेंट एनवेलप और प्रति-प्रकार फील्ड एनकोडिंग (पॉइंटर्स और स्टेटस 0x हेक्स स्ट्रिंग के रूप में रेंडर होते हैं) के लिए SCHEMA.md देखें।

    सक्रिय हुक को पुनर्स्थापित करने, रिमोट इंस्ट्रुमेंटेशन को मुक्त करने और डिटैच करने के लिए Ctrl+C या Ctrl+Break दबाएँ। लक्ष्य चलता रहता है। प्राकृतिक निकास पर, ApiScope लक्ष्य स्थिति को दशमलव और हेक्साडेसिमल में प्रिंट करता है, उसके बाद stderr पर एक सत्र सारांश (ईवेंट, ड्रॉप और प्रति-हुक गणना) प्रिंट करता है।

    फ़ाइल पथ और हैंडल सहसंबंध

    NtCreateFile, NtOpenFile, और NtOpenKey OBJECT_ATTRIBUTES से लक्ष्य path को हल करते हैं और परिणामी हैंडल की रिपोर्ट करते हैं। ApiScope प्रत्येक सफल ओपन को रिकॉर्ड करता है और उसी हैंडल पर बाद के ऑपरेशन — रीड, राइट, रजिस्ट्री वैल्यू एक्सेस, और मैचिंग NtClose — को हल किए गए path के साथ एनोटेट करता है, ताकि मैन्युअल रूप से हैंडल को ट्रैक किए बिना गतिविधि पठनीय हो। NtClose हैंडल को भी हटा देता है, और सापेक्ष ओपन पहले देखे गए root_directory हैंडल के माध्यम से हल किए जाते हैं।

    root@kitploit:~
    [*] ntdll.dll!NtCreateFile ----------
        sequence          : 2
        path              : test_file.txt
        file_handle       : 0x000000000000008C
        result            : STATUS_SUCCESS (0x00000000)
    
    [*] ntdll.dll!NtReadFile ----------
        sequence       : 3
        file_handle    : 0x000000000000008C
        buffer_ascii   : Hello, ApiScope!
        result         : STATUS_SUCCESS (0x00000000)
        path           : test_file.txt
    

    रीड और राइट ईवेंट पर path हैंडल से सहसंबद्ध होता है, कॉल पर स्वयं नहीं देखा जाता।

    हुक जोड़ना

    प्रत्येक हुक src/apiscope-hooks/hooks/ के तहत एक फ़ाइल है और अपने स्रोत मॉड्यूल, एक्सपोर्ट, हैंडलर, ट्रैम्पोलिन स्लॉट, कॉलिंग कन्वेंशन और हस्ताक्षर को एक साथ घोषित करता है:

    root@kitploit:~
    DEFINE_API_HOOK(
        BCryptOpenAlgorithmProvider,
        "bcrypt.dll",
        "BCryptOpenAlgorithmProvider",
        NTSTATUS,
        WINAPI,
        PVOID* Algorithm,
        const wchar_t* AlgorithmId,
        const wchar_t* Implementation,
        ULONG Flags) {
        TraceEvent event;
        InitializeTraceEvent(&event, "bcrypt.dll", "BCryptOpenAlgorithmProvider");
        AddTraceUInt32(&event, "flags", Flags);
    
        NTSTATUS result = CALL_ORIGINAL(
            BCryptOpenAlgorithmProvider,
            Algorithm,
            AlgorithmId,
            Implementation,
            Flags);
        AddTraceStatus(&event, "result", result);
        EmitTraceEvent(&event);
        return result;
    }
    

    apiscope.exe --list-hooks हुक DLL द्वारा निर्यात किए गए फिक्स्ड-लेआउट डिस्क्रिप्टर को खोजता है। किसी केंद्रीय API सूची या लॉन्चर-साइड ईवेंट स्कीमा की आवश्यकता नहीं है।

    यह कैसे काम करता है

    root@kitploit:~
    sequenceDiagram
        actor User
        participant ApiScope as apiscope.exe
        participant Debugger as Windows debugger API
        participant Target as Target process
        participant Modules as Loaded DLLs
        participant Hooks as apiscope-hooks.dll
        participant Ring as Shared-memory ring
    
        User->>ApiScope: run program or attach PID
        alt run
            ApiScope->>Debugger: CreateProcess(DEBUG_ONLY_THIS_PROCESS)
        else attach
            ApiScope->>Debugger: DebugActiveProcess(PID)
        end
        ApiScope->>Debugger: DebugSetProcessKillOnExit(FALSE)
        Debugger-->>ApiScope: CREATE_PROCESS_DEBUG_EVENT
        ApiScope->>Target: Map import-free hook image
        ApiScope->>Ring: Create and initialize bounded ring
        ApiScope->>Target: Map shared section with NtMapViewOfSection
    
        loop CREATE_PROCESS / LOAD_DLL events
            Debugger-->>ApiScope: Module base and file handle
            ApiScope->>Modules: Register module name and base
            alt ntdll.dll loaded
                ApiScope->>Target: Build unpatched NtReadVirtualMemory bypass
            end
            ApiScope->>Modules: Resolve module.dll!Export and forwarders
            alt export and dependencies are loaded
                ApiScope->>Hooks: Resolve handler and trampoline slot
                ApiScope->>Target: Allocate trampoline and patch export
            else dependency is not loaded yet
                ApiScope->>ApiScope: Keep hook pending
            end
            ApiScope->>Debugger: ContinueDebugEvent
        end
    
        Target->>Hooks: Call patched API
        Hooks->>Target: CALL_ORIGINAL through trampoline
        Hooks->>Ring: Publish bounded TLV event
        opt first event in a pending batch
            Hooks->>Target: Signal reader through unpatched NtSetEvent
        end
        Ring-->>ApiScope: Drain event batches
        ApiScope-->>User: Readable text and optional JSONL
    
        opt UNLOAD_DLL_DEBUG_EVENT
            Debugger-->>ApiScope: Module unloaded
            ApiScope->>Target: Release associated hook state
            ApiScope->>Debugger: ContinueDebugEvent
        end
    
        alt target exits
            Debugger-->>ApiScope: EXIT_PROCESS_DEBUG_EVENT and exit status
            ApiScope->>Ring: Drain queued events
            ApiScope-->>User: Print decimal and hexadecimal exit status
        else Ctrl+C or Ctrl+Break
            User->>ApiScope: Stop tracing
            ApiScope->>Target: DebugBreakProcess
            ApiScope->>Target: Restore hooks and free instrumentation
            ApiScope->>Debugger: DebugActiveProcessStop
            ApiScope-->>User: Target continues running
        end

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

    परियोजना लेआउट

    root@kitploit:~
    cmake/                 Dependency configuration
    docs/                  Event schema and format reference
    scripts/               Validation and runtime smoke tests
    src/apiscope/          CLI, debugger, mapper, patcher, and renderer
    src/apiscope-hooks/    Import-free hook DLL and standalone hooks
    src/include/           Shared contracts
    tests/                 Unit and runtime test targets
    

    सीमाएँ

    • केवल Windows x64; नियंत्रक और लक्ष्य आर्किटेक्चर का मेल होना चाहिए।
    • केवल एक ApiScope सत्र को लक्ष्य को इंस्ट्रुमेंट करना चाहिए।
    • डीबगर को संरक्षित या उच्च-अधिकार वाले लक्ष्यों के लिए उन्नयन की आवश्यकता हो सकती है।
    • असमर्थित ट्रैम्पोलिन रिलोकेशन बंद स्थिति में विफल होता है।
    • ऑर्डिनल एक्सपोर्ट फ़ॉरवर्डर समर्थित नहीं हैं।
    • हैंडल-टू-पथ सहसंबंध ntdll.dll!NtClose पर तब हटा देता है जब वह हुक सक्रिय होता है; इसके बिना, पुन: उपयोग किया गया बंद हैंडल अपना पिछला पथ बनाए रखता है।
    • मैनुअल मैपर आयात-मुक्त हुक इमेज के लिए विशिष्ट है।
    • यदि ApiScope को बलपूर्वक समाप्त किया जाता है, तो DebugSetProcessKillOnExit(FALSE) लक्ष्य को जीवित रखता है, लेकिन हुक और मैप किया गया इंस्ट्रुमेंटेशन तब तक निवासी रहता है जब तक लक्ष्य बाहर नहीं निकलता।
    • प्रक्रिया आंतरिक को इंस्ट्रुमेंट करने से एंडपॉइंट सुरक्षा उत्पाद ट्रिगर हो सकते हैं।

    ApiScope का उपयोग केवल उन प्रणालियों और प्रक्रियाओं पर करें जिनका निरीक्षण करने के लिए आप अधिकृत हैं। SECURITY.md, CONTRIBUTING.md, और ROADMAP.md देखें।

    लाइसेंस

    MIT. तृतीय-पक्ष घटक अपने लाइसेंस बनाए रखते हैं; THIRD_PARTY_NOTICES.md देखें।

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