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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
redexer — रेडेक्सर बाइनरी इंस्ट्रूमेंटेशन फ्रेमवर्क फॉर डाल्विक बाइटकोड | Kitploit
उपकरण/GitHubGitHub/plum-umd/redexer
एंड्रॉइड सुरक्षास्थैतिक विश्लेषणगतिशील विश्लेषण (सैंडबॉक्सिंग)रिवर्स इंजीनियरिंगबाइनरी विश्लेषणपेपर और शोधलर्निंग और शिक्षा
GitHubplum-umd/redexer

redexer

रेडेक्सर बाइनरी इंस्ट्रूमेंटेशन फ्रेमवर्क फॉर डाल्विक बाइटकोड

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

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

सभी देखें →

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

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

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

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

Build Status

रेडेक्सर

रेडेक्सर एक पुनर्रचना उपकरण है जो Android ऐप बाइनरी में हेरफेर करता है। यह उपकरण DEX फ़ाइल को मेमोरी डेटा संरचना में पार्स करने में सक्षम है; यह अनुमान लगाने में सक्षम है कि ऐप किन मापदंडों के साथ कुछ अनुमतियों का उपयोग करता है (हम इस सुविधा को RefineDroid नाम देते हैं); उस डेटा संरचना को संशोधित और अनपार्स करने में सक्षम है ताकि आउटपुट DEX फ़ाइल उत्पन्न हो (हम इन सुविधाओं को Dr. Android नाम देते हैं, जो Dalvik Rewriting for Android के लिए है)।

प्रकाशन

  • Dr. Android and Mr. Hide: Fine-grained Permissions in Android Applications. Jinseong Jeon, Kristopher K. Micinski, Jeffrey A. Vaughan, Ari Fogel, Nikhilesh Reddy, Jeffrey S. Foster, and Todd Millstein. In ACM CCS Workshop on Security and Privacy in Smartphones and Mobile Devices (SPSM '12), Oct 2012.

आवश्यकताएँ

  • OCaml और Ruby

यह उपकरण OCaml 4.09.0 और Ruby 1.8.6(7) के अंतर्गत परीक्षण किया गया है, इसलिए आपको इन्हें (या इनके उच्च संस्करण) स्थापित करने की आवश्यकता है।

  • OCaml पैकेज/लाइब्रेरी प्रबंधक और SHA लाइब्रेरी

DEX प्रारूप में SHA-1 हस्ताक्षर (हैश) में हेरफेर करने के लिए, हम OCaml SHA लाइब्रेरी का उपयोग करते हैं ocamlfind/findlib के माध्यम से, जो एक OCaml लाइब्रेरी प्रबंधक है। दोनों को स्थापित करने का सबसे आसान तरीका OPAM का उपयोग करना है, जो एक OCaml पैकेज प्रबंधक है, जिसमें दोनों पैकेज हैं---OPAM ocamlfind और OPAM sha।

आप दोनों पैकेजों को सीधे बना और/या स्थापित भी कर सकते हैं। यदि आप Linux मशीन का उपयोग कर रहे हैं, तो आप आसानी से वितरण पा सकते हैं।

यदि नहीं, उदाहरण के लिए Mac का उपयोग कर रहे हैं, तो आपको इसे स्वयं बनाना होगा। आप मूल स्रोत कोड यहाँ पा सकते हैं। इसे make चलाकर बनाएँ, और परिणामी निर्देशिका को ocamlfind की रूट site-lib निर्देशिका से लिंक करें; या sudo make install।

यदि आप PC का उपयोग कर रहे हैं, तो आपको पहले ocamlfind/findlib और FlexDLL स्थापित करना होगा। कृपया सुनिश्चित करें कि आपके पर्यावरण चर निम्नानुसार सही ढंग से सेट हैं:

root@kitploit:~
OCAMLLIB=C:\OCaml\lib
CAML_LD_LIBRARY_PATH=%OCAMLLIB%\stublibs
FLEXLINKFLAGS=-L%MinGW%\lib -L%MinGW%\lib\gcc\mingw32\N.N.N
  • OPAM पैकेज:

    • sha
    • str
    • ppx_deriving
    • ppx_deriving_yojson
    • yojson
  • Android SDK (या स्रोत)

apk फ़ाइलों को अनपैक और रिपैक करने के लिए, हम apktool का उपयोग करते हैं, जो एक ओपन सोर्स APK पुनर्रचना उपकरण है। चूँकि यह aapt, Android Asset Packaging Tool का उपयोग करता है, आपको Android SDK या स्रोत स्थापित करने की आवश्यकता है। इसके अलावा, हम zipalign का उपयोग करते हैं, जो Android SDK से आता है, पुनर्लिखित ऐप्स को अनुकूलित करने के लिए।

आप Android आधार उपकरणों के पथ निम्नलिखित को अपने प्रोफ़ाइल में जोड़कर सेट कर सकते हैं:

root@kitploit:~
ANDROID_HOME=$HOME/android-sdk    # अपना खुद का पथ यहाँ!
export ANDROID_HOME

PATH=$PATH:$ANDROID_HOME/tools
PATH=$PATH:$ANDROID_HOME/platform-tools
PATH=$PATH:$ANDROID_HOME/build-tools/19.0.0    # स्थापित संस्करण संख्या
export PATH
  • RubyGems और Nokogiri

मुख्य स्क्रिप्ट Ruby में लिखी गई हैं और उन्हें RubyGems, एक Ruby पैकेज प्रबंधक, और Nokogiri, मेनिफ़ेस्ट फ़ाइलों में हेरफेर करने के लिए एक XML लाइब्रेरी की आवश्यकता है।

  • (वैकल्पिक) graphviz dot

यदि आप ग्राफ़ (जैसे कॉल ग्राफ़, नियंत्रण-प्रवाह ग्राफ़, डोमिनेटर ट्री, आदि) देखना चाहते हैं, तो आपको graphviz dot स्थापित करने की आवश्यकता है।

निर्माण

रेडेक्सर बनाने के लिए, बस make करें! आप शीर्ष स्तर पर रेडेक्सर बाइनरी देख सकते हैं।

root@kitploit:~
$ make (clean)

उपकरण का उपयोग करने से पहले, apktool के लिए सबसे हालिया प्लेटफ़ॉर्म फ़ाइल स्थापित करना उपयोगकर्ताओं पर निर्भर है। उदाहरण के लिए, आपको ऐसा करने की आवश्यकता है

root@kitploit:~
$ java -jar tools/apktool.jar if [उपयुक्त प्लेटफ़ॉर्म फ़ाइल]

आप HTML प्रारूप में API दस्तावेज़ भी उत्पन्न कर सकते हैं।

root@kitploit:~
$ make api

उपयोग

  • सहायता

आप उपकरण द्वारा प्रदान किए गए सभी विकल्प देख सकते हैं:

root@kitploit:~
$ ruby scripts/cmd.rb -h
$ ruby scripts/cmd.rb --help
  • अनपार्स

Android SDK में dexdump की तरह, रेडेक्सर आपको दी गई dex फ़ाइल के आंतरिक भाग को YAML प्रारूप में देखने की अनुमति देता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd unparse [--to blah.yml]
  • विधि डंप

यह विकल्प एक निर्दिष्ट विधि के लिए निर्देश डंप करता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd dump_method --mtd cls.mtd
  • पहचान

यह सुविधा रेडेक्सर के पार्सिंग और डंपिंग मॉड्यूल का परीक्षण करने के लिए है। यह संभवतः एक समान dex फ़ाइल उत्पन्न करता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd id [--to blah.dex]
  • जानकारी

आप dex फ़ाइल के बारे में बुनियादी आँकड़े भी देख सकते हैं, उदाहरण के लिए, # instr.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd info
  • क्लासेज़

यह विकल्प dex फ़ाइल में परिभाषित सभी वर्ग नाम प्रिंट करता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd classes

यह विशिष्ट तृतीय-पक्ष पुस्तकालयों को खोजने में उपयोगी हो सकता है, उदाहरण के लिए,

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd classes | egrep 'apache'
  • API

यह विकल्प dex फ़ाइल में API उपयोग प्रिंट करता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd api [--sdk android.]
$ ruby scripts/cmd.rb target.(apk|dex) --cmd api --sdk com.facebook.
  • ऑपकोड आँकड़े

क्या आप उत्सुक नहीं हैं कि Dalvik बाइटकोड में कुछ ऑपकोड कितने कम उपयोग होते हैं? यह आपको सभी ऑपकोड का हिस्टोग्राम दिखाएगा, या आप देख सकते हैं कि दिए गए ऐप में एक विशेष ऑपकोड कितनी बार उपयोग किया जाता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd opstat [--op opcode1,opcode2,...]

उदाहरण के लिए,

root@kitploit:~
$ ruby scripts/cmd.rb ~/apps/top24/com.whatsapp.apk --cmd opstat
$ ruby scripts/cmd.rb ~/apps/top24/com.whatsapp.apk --cmd opstat --op div-int/lit16,nop
  • इंटेंट समाधान विश्लेषण

यह विकल्प प्रसार-आधारित इंटेंट समाधान विश्लेषण करता है, और Activity वर्गों के बीच संक्रमण प्रिंट करता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd intent
  • कॉल ग्राफ़

यह विकल्प एक pdf फ़ाइल उत्पन्न करता है जो दी गई फ़ाइल का कॉल ग्राफ़ दर्शाता है। यदि आप pdf नाम निर्दिष्ट नहीं करते हैं, तो cg.pdf का उपयोग किया जाएगा।

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd cg [--to blah.pdf] [--no-pdf]
  • नियंत्रण-प्रवाह ग्राफ़

यह विकल्प एक pdf फ़ाइल उत्पन्न करता है जो दी गई विधि का नियंत्रण-प्रवाह ग्राफ़ दिखाता है। वर्ग नाम के साथ एक डॉट द्वारा विधि नाम जोड़ें: class_name.method_name

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd cfg --mtd cls.mtd [--to blah.pdf] [--no-pdf]
  • (पोस्ट) डोमिनेटर ट्री

यह विकल्प उपरोक्त सुविधा के समान है, सिवाय इसके कि यह (पोस्ट) डोमिनेटर ट्री दर्शाता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd (p)dom --mtd cls.mtd [--to blah.pdf] [--no-pdf]
  • जीवंतता विश्लेषण

यह विकल्प एक क्लासिक बैकवर्ड डेटा-प्रवाह विश्लेषण करता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd live --mtd cls.mtd
  • स्थिर-प्रसार विश्लेषण

यह विकल्प एक क्लासिक फॉरवर्ड डेटा-प्रवाह विश्लेषण करता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd const --mtd cls.mtd
  • पहुँचने वाली परिभाषा विश्लेषण

यह विकल्प एक क्लासिक फॉरवर्ड डेटा-प्रवाह विश्लेषण करता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd reach --mtd cls.mtd
  • आश्रित

यह विकल्प वर्ग निर्भरता ढूँढता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd dependants --mtd cls.mtd
  • प्रारंभकर्ता गतिविधि

यह विकल्प दिए गए apk का प्रारंभकर्ता गतिविधि नाम प्रिंट करता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd launcher
  • निर्यातित

यह विकल्प आपको बताता है कि बाहरी दुनिया के लिए कौन से घटक खुले हैं।

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd exported
  • गतिविधि, सेवा, प्रदाता, रिसीवर

ये विकल्प मेनिफ़ेस्ट में घोषित Android बुनियादी घटकों को प्रिंट करते हैं।

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd [activity | service | provider | receiver]
  • custom_views

यह विकल्प संसाधन में लेआउट परिभाषाओं का अन्वेषण करता है और कस्टम व्यू प्रिंट करता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd custom_views
  • fragments

यह विकल्प संसाधन में लेआउट परिभाषाओं का अन्वेषण करता है और Fragment तत्वों को प्रिंट करता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd fragments
  • buttons

यह विकल्प संसाधन में लेआउट परिभाषाओं का अन्वेषण करता है और Buttons को प्रिंट करता है, उनके id (या text) के साथ-साथ कॉलबैक विधि (यदि मौजूद हो) के साथ।

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd buttons
  • ऐप के मेनिफ़ेस्ट में घोषित अनुमतियाँ

यह विकल्प उन अनुमतियों को प्रिंट करता है जिनका apk उपयोग करता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd permissions
  • लक्ष्य SDK संस्करण

यह विकल्प प्रिंट करता है कि apk को किस SDK संस्करण की आवश्यकता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd sdk

यदि आप apk फ़ाइल को अनपैक नहीं करना चाहते हैं, तो वास्तव में, आप कमांड के संयोजन से वही काम कर सकते हैं:

root@kitploit:~
$ aapt dump badging target.apk | grep 'targetSdkVersion' | tr -dc 0-9.\\n
  • Hello, DEX

यह विकल्प एक dex फ़ाइल उत्पन्न करेगा जो एक सरल संदेश प्रिंट करती है। वह dex फ़ाइल केवल रेडेक्सर के APIs का उपयोग करके बनाई गई है।

root@kitploit:~
$ ruby scripts/cmd.rb --cmd hello

इसकी आंतरिक जाँच करें।

root@kitploit:~
$ dexdump -d results/classes.dex

यदि आप रुचि रखते हैं, तो आप उस dex फ़ाइल का निम्नानुसार परीक्षण कर सकते हैं। मान लें कि ANDROID_SDK का पथ सेट है।

root@kitploit:~
// dalvik VM के लिए उपयुक्त एक अस्थायी jar बनाएँ
$ aapt add temp.jar results/classes.dex

// (वैकल्पिक) यदि आपने avd नहीं बनाया है, तो इसे बनाएँ।
$ android create avd -n myAVD1 -t android-8

// अपना एमुलेटर लॉन्च करें
$ emulator -avd myAVD1 &

// अस्थायी jar को पुश करें
$ adb push temp.jar /data

// adb शेल से कनेक्ट करें
$ adb shell

// अंत में, dex चलाएँ
# /system/bin/dalvikvm -Xbootclasspath:/system/framework/core.jar \
 -classpath /data/temp.jar Hello
Hello, DEX
#
  • लॉगिंग

यह पुनर्लेखन सुविधा का एक प्रकार है। इस सुविधा का उपयोग करके, आप विशिष्ट दृष्टिकोणों से ऐप व्यवहार लॉग कर सकते हैं। लॉगिंग लाइब्रेरी के लिए पूर्व-निर्मित dex फ़ाइल प्रदान की गई है: data/logging.dex। यदि आप अधिक सुविधाएँ या उपयोगिताएँ जोड़ना चाहते हैं, तो इसे निम्नानुसार बनाएँ:

root@kitploit:~
$ cd logging
$ gradle copyDex
$ cd ..

फिर, निम्नलिखित कमांड का उपयोग करें:

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd logging

trim.py उपकरणित ऐप के कॉल-रिटर्न अनुक्रमों को कैप्चर कर सकता है। (आपको पहले रेडेक्सर का उपयोग करके परीक्षण के तहत ऐप को उपकरणित करना चाहिए।)

यदि वे लॉग पर्याप्त छोटे हैं, अर्थात फ़ोन (या एमुलेटर) सभी जानकारी को मेमोरी में रख सकता है, तो आप स्क्रिप्ट का ऑफ़लाइन मोड उपयोग कर सकते हैं:

root@kitploit:~
$ ./scripts/trim.py -d

ध्यान दें कि सभी कमांड-लाइन पैरामीटर adb logcat को पास किए जाएंगे, और डिफ़ॉल्ट रूप से, org.umd.logging:I *:S अप्रासंगिक लॉग को फ़िल्टर करने के लिए पास किया जाता है।

यदि लॉग ओवरफ़्लो हो जाते हैं, तो आपको ऑनलाइन मोड का उपयोग करना चाहिए:

root@kitploit:~
$ ./scripts/trim.py

स्क्रिप्ट कीबोर्ड इंटरप्ट को पकड़ लेती है, इसलिए आप Ctrl+C के माध्यम से लॉगिंग समाप्त कर सकते हैं।

दोनों मोड में, लॉग log.txt में सहेजे जाते हैं और एक साथ स्क्रीन पर दिखाए जाते हैं। इस प्रकार, लॉग एकत्र करने के बाद, आपको उस फ़ाइल को स्थानांतरित करने की आवश्यकता हो सकती है, उदा:

root@kitploit:~
$ mv log.txt app.scenario.txt
  • उपयोगकर्ता अंतःक्रियाओं को लॉग करना

उपरोक्त लॉगिंग सुविधा सामान्य है कि आप निर्दिष्ट कर सकते हैं कि विधि स्तर पर क्या लॉग करना है। (अधिक विवरण के लिए logging मॉड्यूल देखें।) हालाँकि, यह कभी-कभी बहुत वर्बोज़ होता है और प्रदर्शन में गिरावट ला सकता है। यह सुविधा केवल उपयोगकर्ता अंतःक्रियाओं को लॉग करने के लिए डिज़ाइन की गई है। इस सुविधा का उपयोग करके, आप केवल UI-संबंधित घटनाओं को कैप्चर कर सकते हैं। इसी तरह, लॉगिंग लाइब्रेरी के लिए पूर्व-निर्मित dex फ़ाइल प्रदान की गई है: data/logging-ui.dex। यदि आप UI जानकारी की वर्बोसिटी को संशोधित करना चाहते हैं, तो इसे निम्नानुसार बनाएँ:

root@kitploit:~
$ cd logging-ui
$ gradle copyDex
$ cd ..

फिर, निम्नलिखित कमांड का उपयोग करें:

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd logging_ui

लॉगिंग लाइब्रेरी android a11y सेवा से विरासत में मिली है, जिसके लिए उपयोगकर्ता की स्पष्ट सहमति आवश्यक है। इस प्रकार, पुनर्लिखित apk स्थापित करने के बाद, Settings/Accessibility पर जाएँ और UI Logging सेवा चालू करें। (इस चरण को डिवाइस डीबगिंग मोड चालू करने के समान देखा जा सकता है।) logcat में, टैग org.umd.logging_ui.* वाले संदेश उपयोगकर्ता और परीक्षण के तहत ऐप के बीच अंतःक्रियाएँ हैं।

  • निर्देशित अन्वेषण

यह विकल्प लक्ष्य विधि कॉल की ओर घटक संक्रमण पथ ढूँढता है।

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd directed

आप data/directed.txt में लक्ष्य विधियों को निर्दिष्ट कर सकते हैं जिन्हें लागू किया जाना है।

वे घटक संक्रमण पथ तृतीय-पक्ष पुस्तकालयों में सुरक्षा कमजोरियों का परीक्षण करने के लिए ऐप्स चलाने के लिए उपयोग किए जाते हैं। अधिक विवरण निम्नलिखित पेपर में वर्णित हैं:

root@kitploit:~
* Brahmastra: Driving Apps to Test the Security of Third-Party Components.
R. Bhoraskar, et al., In 23rd Usenix Security Symposium (Security '14).

withTimeout.rb स्वचालित रूप से एक ऐप के लिए एक स्किप फ़ाइल बना सकता है। यह स्क्रिप्ट cmd.rb को एक विशिष्ट टाइमआउट के साथ चलाती है, जिसका उपयोग किसी एकल वर्ग को उपकरणित करने में बिताए गए समय को सीमित करने के लिए किया जाता है। यह कभी-कभी उस वर्ग के लिए एक अस्थायी कार्य-समाधान है जो उपकरणीकरण के दौरान लूप में फँस जाता है। जब यह स्क्रिप्ट क्रैश होने वाले वर्ग को ढूँढती है, तो वह इसे स्किप फ़ाइल में जोड़ती है और जहाँ से छोड़ा था वहाँ से जारी रखती है। एक बार withTimeout समाप्त हो जाने के बाद, डेटा निर्देशिका में [apk name]-skip.txt नामक एक फ़ाइल होगी, जिसका उपयोग उस apk के लिए पूरी तरह से उपकरणित ऐप बनाने के लिए किया जा सकता है। withTimeout का उपयोग करने के लिए, बस कॉल करें:

root@kitploit:~
$ ruby scripts/withTimeout.rb TIMEOUT COMMANDS
 

जहाँ TIMEOUT आपके द्वारा चाहे गए टाइमआउट की लंबाई है (सेकंड में) (300 अनुशंसित है) और COMMANDS वे सभी सामान्य कमांड-लाइन इनपुट हैं जो आप apk के लिए scripts/cmd.rb को पास करेंगे।

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