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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
ropr — एक अत्यंत तेज़™ मल्टीथ्रेडेड ROP गैजेट खोजक। ropper / ropgadget विकल्प (वर्तमान में केवल x86) | Kitploit
उपकरण/GitHubGitHub/ben-lichtman/ropr
शोषणरिवर्स इंजीनियरिंगशेलकोडबाइनरी विश्लेषण
GitHubben-lichtman/ropr

ropr

एक अत्यंत तेज़™ मल्टीथ्रेडेड ROP गैजेट खोजक। ropper / ropgadget विकल्प (वर्तमान में केवल x86)

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

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

सभी देखें →

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

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

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

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

ropr

ropr एक अत्यंत तेज़ मल्टीथ्रेडेड ROP Gadget खोजकर्ता है।

ROP Gadget क्या है?

ROP (Return Oriented Programming) Gadgets कुछ असेंबली निर्देशों के छोटे टुकड़े होते हैं जो आमतौर पर ret निर्देश में समाप्त होते हैं और जो प्रत्येक बाइनरी या लाइब्रेरी में पहले से मौजूद निष्पादन योग्य कोड होते हैं। इन गैजेट्स का उपयोग बाइनरी शोषण और कमजोर निष्पादनयोग्य को उलटने के लिए किया जा सकता है।

जब कई ROP Gadgets के पते एक बफर में लिखे जाते हैं तो हम एक ROP Chain बनाते हैं। यदि कोई हमलावर स्टैक पॉइंटर को इस ROP Chain में ले जा सकता है, तो नियंत्रण पूरी तरह से हमलावर को स्थानांतरित किया जा सकता है।

अधिकांश निष्पादनयोग्य में ट्यूरिंग-पूर्ण ROP Chain लिखने के लिए पर्याप्त गैजेट होते हैं। उनके लिए जिनमें नहीं हैं, कोई हमेशा उसी एड्रेस-स्पेस में स्थित डायनामिक लाइब्रेरीज़ जैसे कि libc का उपयोग कर सकता है, एक बार जब हम उनके पतों को जान लेते हैं।

ROP Gadgets के उपयोग की खूबसूरती यह है कि कहीं भी कोई नया निष्पादन योग्य कोड लिखने की आवश्यकता नहीं है - एक हमलावर केवल प्रोग्राम में पहले से मौजूद कोड का उपयोग करके अपने उद्देश्य को प्राप्त कर सकता है।

मैं ROP Gadget का उपयोग कैसे करूं?

आमतौर पर ROP Gadgets का उपयोग करने के लिए पहली आवश्यकता अपनी ROP Chain लिखने के लिए एक स्थान रखना है - यह कोई भी पठनीय बफर हो सकता है। बस उन गैजेट्स के पते जिनका आप उपयोग करना चाहते हैं, इस बफर में लिखें। यदि बफर बहुत छोटा है, तो लंबी ROP Chain लिखने के लिए पर्याप्त जगह नहीं हो सकती है, इसलिए हमलावर को अपनी ROP Chain को कुशल बनाने के लिए सावधानीपूर्वक तैयार करना चाहिए ताकि वह उपलब्ध स्थान में फिट हो सके।

अगली आवश्यकता स्टैक को नियंत्रित करने में सक्षम होना है - यह स्टैक ओवरफ्लो का रूप ले सकता है - जो ROP Chain को सीधे स्टैक पॉइंटर के नीचे लिखने की अनुमति देता है, या एक "stack pivot" - जो आमतौर पर एक एकल गैजेट होता है जो स्टैक पॉइंटर को शेष ROP Chain पर ले जाता है।

एक बार जब स्टैक पॉइंटर आपकी ROP Chain की शुरुआत में होता है, तब अगला ret निर्देश गैजेट्स को अनुक्रम में निष्पादित करने के लिए ट्रिगर करेगा - प्रत्येक अपने स्वयं के स्टैक फ्रेम पर अगले को अपने रिटर्न एड्रेस के रूप में उपयोग करता है।

ROP Chain में फंक्शन पॉइंटर्स जोड़ना भी संभव है - ध्यान रखें कि फंक्शन आर्गुमेंट्स को ROP Chain के अगले तत्व के बाद आपूर्ति की जाए। यह आमतौर पर एक "pop gadget" के साथ जोड़ा जाता है, जो फंक्शन आर्गुमेंट्स के बाद अगले गैजेट पर सुचारू रूप से संक्रमण करने के लिए आर्गुमेंट्स को स्टैक से हटाता है।

मैं ropr कैसे स्थापित करूं?

  • cargo (रस्ट बिल्ड सिस्टम) की आवश्यकता है

Easy install:

root@kitploit:~
cargo install ropr

एप्लिकेशन ~/.cargo/bin में स्थापित होगा।

From source:

root@kitploit:~
git clone https://github.com/Ben-Lichtman/ropr
cd ropr
cargo build --release

परिणामी बाइनरी target/release/ropr में स्थित होगी।

Alternatively:

root@kitploit:~
git clone https://github.com/Ben-Lichtman/ropr
cd ropr
cargo install --path .

एप्लिकेशन ~/.cargo/bin में स्थापित होगा।

मैं ropr का उपयोग कैसे करूं?

root@kitploit:~
USAGE:
    ropr [OPTIONS] <BINARY>

ARGS:
    <BINARY>    The path of the file to inspect

OPTIONS:
    -b, --base-pivot               Filters for gadgets which alter the base pointer
    -c, --colour <COLOUR>          Forces output to be in colour or plain text (`true` or `false`)
    -h, --help                     Print help information
    -j, --nojop                    Removes "JOP Gadgets" - these may have a controllable branch,
                                   call, etc. instead of a simple `ret` at the end
    -m, --max-instr <MAX_INSTR>    Maximum number of instructions in a gadget [default: 6]
    -n, --noisy                    Includes potentially low-quality gadgets such as prefixes,
                                   conditional branches, and near branches (will find significantly
                                   more gadgets)
    -p, --stack-pivot              Filters for gadgets which alter the stack pointer
    -r, --norop                    Removes normal "ROP Gadgets"
    -R, --regex <REGEX>            Perform a regex search on the returned gadgets for easy filtering
        --range <RANGE>            Search between address ranges (in hexadecial) eg. `0x1234-0x4567`
        --raw <RAW>                Treats the input file as a blob of code (`true` or `false`)
    -s, --nosys                    Removes syscalls and other interrupts
    -V, --version                  Print version information

उदाहरण के लिए, यदि मैं किसी अन्य रजिस्टर से rax को मान से भरने का तरीका ढूंढ रहा था, तो मैं regex ^mov eax, ...; द्वारा फ़िल्टर करना चुन सकता हूं:

root@kitploit:~
❯ ropr /usr/lib/libc.so.6 -R "^mov eax, ...;" > /dev/null

==> Found 197 gadgets in 0.118 seconds

अब मैं सर्वोत्तम गुणवत्ता परिणामों के लिए कमांड लाइन में कुछ फिल्टर जोड़ सकता हूं:

root@kitploit:~
❯ ropr /usr/lib/libc.so.6 -m 2 -j -s -R "^mov eax, ...;"
0x000353e7: mov eax, eax; ret;
0x000788c8: mov eax, ecx; ret;
0x00052252: mov eax, edi; ret;
0x0003ae43: mov eax, edx; ret;
0x000353e6: mov eax, r8d; ret;
0x000788c7: mov eax, r9d; ret;

==> Found 6 gadgets in 0.046 seconds

अब मेरे पास पते 0x00052252 पर एक अच्छा mov गैजेट उम्मीदवार है।

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