Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
custom-bytecode-analyzer — JSON नियमों के माध्यम से अनुकूलन योग्य Java बाइटकोड विश्लेषक | Kitploit
उपकरण/GitHubGitHub/fergarrui/custom-bytecode-analyzer
स्थैतिक विश्लेषणभेद्यता विश्लेषणकोड विश्लेषणबाइनरी विश्लेषण
GitHubfergarrui/custom-bytecode-analyzer

custom-bytecode-analyzer

JSON नियमों के माध्यम से अनुकूलन योग्य Java बाइटकोड विश्लेषक

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

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

सभी देखें →

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

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

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

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

custom-bytecode-analyzer

Java बाइटकोड विश्लेषक जो JSON नियमों के माध्यम से अनुकूलन योग्य है। यह एक कमांड-लाइन उपकरण है जो एक या अधिक Jar या War फ़ाइलों वाले पथ को प्राप्त करता है, प्रदान किए गए नियमों का उपयोग करके उनका विश्लेषण करता है और परिणामों के साथ HTML रिपोर्ट उत्पन्न करता है।

Build Status

उपयोग

usage: java -jar cba-cli.jar [OPTIONS] -a DIRECTORY_TO_ANALYZE
 -a,--analyze <pathToAnalyze>    Path of the directory to run the
                                 analysis.
-c,--checks <checks...>          Space separated list of custom checks
								 that are going to be run in the analysis.
 -f,--custom-file <customFile>   Specify a file in JSON format to run
                                 custom rules. Read more in
                                 https://github.com/fergarrui/custom-bytecode-analyzer.
 -h,--help                       Print this message.
 -i,--items-report <maxItems>    Max number of items per report. If the
                                 number of issues found exceeds this
                                 value, the report will be split into
                                 different files. Useful if expecting too
                                 many issues in the report. Default: 50.
 -o,--output <outputDir>         Directory to save the report. Warning -
                                 if there are already saved reports in
                                 this directory they will be overwritten.
                                 Default is "report".
 -v,--verbose-debug              Increase verbosity to debug mode.
 -vv,--verbose-trace             Increase verbosity to trace mode - makes it slower, use it only when you need.

कस्टम JSON नियम

नियम फ़ाइल को -f,--custom-file तर्क का उपयोग करके निर्दिष्ट किया जा सकता है। फ़ाइल JSON प्रारूप में है और इसमें निम्नलिखित संरचना है:

  • rules : array(rule)
    • name : string
    • fields : array(field)
      • visibility : (public|protected|private)
      • type : string
      • valueRegex : string (java regular expression) - केवल तब समर्थित है जब फ़ील्ड final हो
      • nameRegex : string (java regular expression)
      • report : boolean (डिफ़ॉल्ट: true)
    • interfaces : array(string)
    • superClass : string
    • annotations : array(annotation)
      • type : string
      • report : boolean (डिफ़ॉल्ट: true)
    • methods : array(method)
      • name : string
      • visibility : (public|protected|private)
      • parameters : array(parameter)
        • type : string
        • report : boolean (डिफ़ॉल्ट: true)
        • annotations : array(annotation)
          • type : string
          • report : boolean (डिफ़ॉल्ट: true)
      • variables : array(variable)
        • type : string
        • nameRegex : string (java regular expression)
        • annotations : array(annotation)
          • type : string
          • report : boolean (डिफ़ॉल्ट: true)
        • report (डिफ़ॉल्ट: true)
      • annotations : array(annotation)
        • type : string
        • report : boolean (डिफ़ॉल्ट: true)
      • report : boolean (डिफ़ॉल्ट: true)
    • invocations : array(invocation)
      • owner : string
      • method : method
        • name : string
        • visibility : (public|protected|private)
      • from : method
        • name : string
        • visibility : (public|protected|private)
      • notFrom : method
        • name : string
        • visibility : (public|protected|private)
      • report : boolean (डिफ़ॉल्ट: true)

आप Java कोड में संरचना देखने के लिए net.nandgr.cba.custom.model.Rules.java भी देख सकते हैं।

उदाहरण

निर्देशिका examples में पहले से कई नियम मौजूद हैं। वैसे भी, नीचे प्रत्येक नियम के लिए उदाहरण सूचीबद्ध हैं।

कस्टम डिसीरियलाइज़ेशन ढूँढें

यदि हमें कस्टम डिसीरियलाइज़ेशन वाली कक्षाओं को खोजने की आवश्यकता है, तो हम इसे काफी आसानी से कर सकते हैं। एक क्लास private void readObject(ObjectInputStream in) लागू करके कस्टम डिसीरियलाइज़ेशन को परिभाषित करती है। इसलिए हमें केवल उन सभी कक्षाओं को खोजने की आवश्यकता है जहाँ वह विधि परिभाषित है। एक नियम को इस प्रकार परिभाषित करना पर्याप्त होगा:

{
	"rules": [{
		"name": "Custom deserialization",
		"methods": [{
			"name": "readObject",
			"visibility": "private",
			"parameters" : [{
         "type" : "java.io.ObjectInputStream"
      }]
		}]
	}]
}

यह private दृश्यता, readObject नाम और java.io.ObjectOutputStream प्रकार के पैरामीटर वाली विधियों की रिपोर्ट करेगा। पैरामीटर एक सरणी हैं, यदि एक से अधिक निर्दिष्ट हैं, तो रिपोर्ट किए जाने के लिए सभी का मेल होना चाहिए। चूँकि हमारे पास केवल एक नियम है, इसलिए नामक एक रिपोर्ट: custom-deserialization-0.html बनाई जाएगी।

कस्टम सीरियलाइज़ेशन और डिसीरियलाइज़ेशन ढूँढें

इस मामले में, दो विधियों वाला एक नियम परिभाषित किया जाना चाहिए। डिसीरियलाइज़ेशन के लिए पिछले उदाहरण के समान, और private void writeObject(ObjectOutputStream out) से मिलान करने के लिए एक नया। जैसा कि ऊपर JSON संरचना में दिखाया गया है, गुण rules.rule.methods विधियों की एक सरणी है, इसलिए इस तरह एक नियम लिखा जा सकता है:

{
  "rules": [{
    "name": "Custom serialization and deserialization",
    "methods": [{
      "name": "readObject",
      "visibility": "private",
      "parameters" : [{
       "type" : "java.io.ObjectInputStream"
      }]
    },{
      "name": "writeObject",
      "report": "false",
      "visibility": "private",
      "parameters" : [{
        "type" : "java.io.ObjectOutputStream"
      }]
    }]
  }]
}

गुण report को false पर सेट किया गया था ताकि एक ही नियम के लिए दो बार रिपोर्ट करने से बचा जा सके। हम दूसरी विधि का उपयोग केवल एक शर्त के रूप में कर रहे हैं, लेकिन केवल readObject विधियों की रिपोर्ट करना इस नियम के उद्देश्य के लिए पर्याप्त होना चाहिए।

सभी विधि परिभाषाएँ ढूँढें

यदि कोई गुण परिभाषित नहीं है, तो यह हमेशा true के रूप में मेल खाएगा। उदाहरण के लिए, यह नियम सभी विधि परिभाषाएँ लौटाएगा:

{
	"rules": [{
		"name": "Method definitions",
		"methods": [{
		}]
	}]
}

String.equals विधि आह्वान ढूँढें

विधि आह्वान भी पाए जा सकते हैं। इस मामले में JSON होगा:

{
	"rules": [{
		"name": "String equals",
		"invocations": [{
			"owner": "java.lang.String",
			"method": {
				"name": "equals"
			}
		}]
	}]
}

गुण owner विधि वाले वर्ग को निर्दिष्ट करता है।

रिफ्लेक्शन विधि invoke

पिछले की तुलना में थोड़ा अधिक उपयोगी एक और विधि आह्वान उदाहरण:

{
	"rules": [{
		"name": "Method invocation by reflection",
		"invocations": [{
			"owner": "java.lang.reflect.Method",
			"method": {
				"name": "invoke"
			}
		}]
	}]
}

String इंस्टेंशिएशन ढूँढें

यह किसी भी विधि आह्वान के समान है, लेकिन इस मामले में विधि का नाम <init> होना चाहिए।

{
  "rules": [{
    "name" : "String instantiation",
    "invocations" : [{
        "owner" : "java.lang.String",
        "method" : {
          "name" : "<init>"
        }
    }]
  }]
}

यह नियम निम्नलिखित की घटनाओं को ढूंढेगा:

[...]
String s = new String("foo");
[...]

डिसीरियलाइज़ेशन उपयोग

इस उदाहरण में, हम डिसीरियलाइज़ेशन उपयोगों को ढूंढना चाहते हैं (पिछले उदाहरणों की तरह सीरियलाइज़ेशन व्यवहार को परिभाषित करने वाली कक्षाएं नहीं)। डिसीरियलाइज़ेशन तब होता है जब ObjectInputStream.readObject() को आमंत्रित किया जाता है। उदाहरण के लिए इस कोड स्निपेट में:

ObjectInputStream in = new ObjectInputStream(fileInputStream);
Object o = in.readObject();
टूल डाउनलोड करें