
ELF, PE, Mach-O, और Raw बाइनरी में x86, ARM, MIPS, और RISC-V आर्किटेक्चर पर ROP गैजेट्स खोजें। स्वचालित ROP चेन जनरेशन और इंटरएक्टिव कंसोल मोड का समर्थन करता है।
यह उपकरण आपको अपने बाइनरी में गैजेट खोजने देता है ताकि आपके ROP शोषण को सुगम बनाया जा सके। ROPgadget x86, x64, ARM, ARM64, PowerPC, SPARC, MIPS, RISC-V 64, और RISC-V Compressed आर्किटेक्चर पर ELF/PE/Mach-O/Raw प्रारूपों का समर्थन करता है।
सबसे आसान तरीका PyPi से ROPgadget स्थापित करना है:
$ sudo apt install python3-pip
$ sudo -H python3 -m pip install ROPgadget
$ ROPgadget --help
वैकल्पिक रूप से आप ROPgadget को स्रोत से स्थापित कर सकते हैं। आपको पहले Capstone स्थापित करना होगा।
nix मशीन पर Capstone की स्थापना के लिए:
$ sudo apt install python3-pip
$ sudo -H python3 -m pip install capstone
Capstone मल्टी-प्लेटफ़ॉर्म (windows, ios, android, cygwin...) का समर्थन करता है। क्रॉस-कम्पाइलेशन के लिए, कृपया https://github.com/capstone-engine/capstone/blob/master/COMPILE.TXT फ़ाइल देखें।
Capstone स्थापित होने के बाद, ROPgadget को एक स्टैंडअलोन उपकरण के रूप में उपयोग किया जा सकता है:
$ python3 ROPgadget.py --help
या Python site-packages लाइब्रेरी में स्थापित किया जा सकता है, और $PATH से निष्पादित किया जा सकता है।
$ sudo -H python3 setup.py install
$ ROPgadget --help
usage: ROPgadget.py [-h] [-v] [-c] [--binary <binary>] [--opcode <opcodes>]
[--string <string>] [--memstr <string>] [--depth <nbyte>]
[--only <key>] [--filter <key>] [--range <start-end>]
[--badbytes <byte>] [--rawArch <arch>] [--rawMode <mode>]
[--rawEndian <endian>] [--re <re>] [--offset <hexaddr>]
[--ropchain] [--thumb] [--console] [--norop] [--nojop]
[--callPreceded] [--nosys] [--multibr] [--all] [--noinstr]
[--dump] [--silent] [--align ALIGN] [--mipsrop <rtype>]
विवरण:
ROPgadget आपको किसी बाइनरी पर गैजेट खोजने देता है। यह कई फ़ाइल प्रारूपों और
आर्किटेक्चर का समर्थन करता है और खोज इंजन के लिए Capstone डिसअसेंबलर का उपयोग करता है।
समर्थित प्रारूप:
- ELF
- PE
- Mach-O
- Raw
समर्थित आर्किटेक्चर:
- x86
- x86-64
- ARM
- ARM64
- MIPS
- PowerPC
- Sparc
- RISC-V 64
- RISC-V Compressed
वैकल्पिक तर्क:
-h, --help यह सहायता संदेश दिखाएँ और बाहर निकलें
-v, --version ROPgadget का संस्करण प्रदर्शित करें
-c, --checkUpdate जाँचें कि कोई नया संस्करण उपलब्ध है या नहीं
--binary <binary> विश्लेषण करने के लिए एक बाइनरी फ़ाइल नाम निर्दिष्ट करें
--opcode <opcodes> निष्पादन योग्य खंड में opcode खोजें
--string <string> पढ़ने योग्य खंड में स्ट्रिंग खोजें
--memstr <string> सभी पढ़ने योग्य खंड में प्रत्येक बाइट खोजें
--depth <nbyte> खोज इंजन के लिए गहराई (डिफ़ॉल्ट 10)
--only <key> केवल विशिष्ट निर्देश दिखाएँ
--filter <key> विशिष्ट मनेमोनिक्स को दबाएँ
--range <start-end> दो पतों के बीच खोजें (0x...-0x...)
--badbytes <byte> गैजेट के पते में विशिष्ट बाइट्स को अस्वीकार करें
--rawArch <arch> एक कच्ची फ़ाइल के लिए आर्किटेक्चर निर्दिष्ट करें
x86|arm|arm64|sparc|mips|ppc|riscv
--rawMode <mode> एक कच्ची फ़ाइल के लिए मोड निर्दिष्ट करें 32|64|arm|thumb
--rawEndian <endian> एक कच्ची फ़ाइल के लिए एंडियननेस निर्दिष्ट करें little|big
--re <re> रेगुलर एक्सप्रेशन
--offset <hexaddr> गैजेट पतों के लिए एक ऑफसेट निर्दिष्ट करें
--ropchain ROP श्रृंखला पीढ़ी सक्षम करें
--thumb खोज इंजन के लिए थंब मोड का उपयोग करें (केवल ARM)
--console खोज इंजन के लिए एक इंटरैक्टिव कंसोल का उपयोग करें
--norop ROP खोज इंजन अक्षम करें
--nojop JOP खोज इंजन अक्षम करें
--callPreceded केवल उन गैजेट दिखाएँ जो कॉल-पूर्ववर्ती हैं
--nosys SYS खोज इंजन अक्षम करें
--multibr एकाधिक शाखा गैजेट सक्षम करें
--all डुप्लिकेट गैजेट हटाना अक्षम करें
--noinstr गैजेट निर्देश कंसोल मुद्रण अक्षम करें
--dump गैजेट बाइट्स आउटपुट करें
--silent विश्लेषण के दौरान गैजेट मुद्रण अक्षम करें
--align ALIGN गैजेट पतों को संरेखित करें (बाइट्स में)
--mipsrop <rtype> MIPS उपयोगी गैजेट खोजकर्ता
stackfinder|system|tails|lia0|registers
उदाहरण:
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --ropchain
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --depth 3
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --string "main"
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --string "m..n"
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --opcode c9c3
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --only "mov|ret"
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --only "mov|pop|xor|ret"
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --filter "xchg|add|sub|cmov.*"
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --norop --nosys
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --range 0x08041000-0x08042000
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --string main --range 0x080c9aaa-0x080c9aba
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --memstr "/bin/sh"
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --console
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-x86 --badbytes "00|01-1f|7f|42"
ROPgadget.py --binary ./test-suite-binaries/Linux_lib64.so --offset 0xdeadbeef00000000
ROPgadget.py --binary ./test-suite-binaries/elf-ARMv7-ls --depth 5
ROPgadget.py --binary ./test-suite-binaries/elf-ARM64-bash --depth 5
ROPgadget.py --binary ./test-suite-binaries/raw-x86.raw --rawArch=x86 --rawMode=32
ROPgadget.py --binary ./test-suite-binaries/elf-Linux-RISCV_64 --depth 8
कृपया बग रिपोर्ट करें, पुल रिक्वेस्ट सबमिट करें, आदि GitHub पर https://github.com/JonathanSalwan/ROPgadget पर करें।
LICENSE_BSD.txt और सभी स्रोत फ़ाइलों पर लाइसेंस हेडर देखें।





