
shouganaiyo-loader is a cross-platform Frida-based Node.js command-line tool that forces Java processes to load a Java/JVMTI agent regardless of whether or not the JVM has disabled the agent attach API.
shouganaiyo-loader एक क्रॉस-प्लेटफ़ॉर्म Frida-आधारित Node.js कमांड-लाइन टूल है जो Java प्रक्रियाओं को Java/JVMTI एजेंट लोड करने के लिए बाध्य करता है, भले ही JVM ने agent attach API को अक्षम कर दिया हो या नहीं।
$ sudo npm install -g shouganaiyo-loader
$ git clone https://github.com/nccgroup/shouganaiyo-loader
$ cd shouganaiyo-loader
$ npm install
$ sudo npm install -g
# shouganaiyo-loader --pid <pid> -t <hotspot|openj9> -a /path/to/agent.jar "args..."
# shouganaiyo-loader --pid <pid> -t <hotspot|openj9> -j instrument "/path/to/agent.jar=args..."
# shouganaiyo-loader --pid <pid> -t <hotspot|openj9> -j "/path/to/(lib)?instrument.(so|dylib|dll)" "/path/to/agent.jar=args..."
# shouganaiyo-loader --pid <pid> -t <hotspot|openj9> -j /path/to/agent.so 'jvmti agent args...'
shouganaiyo-loader Apache License, Version 2.0 के अंतर्गत लाइसेंस प्राप्त है।
shouganaiyo-loader को HotSpot और OpenJ9 दोनों JVMs के लिए Linux, Windows और MacOS पर Java 6-17+ का समर्थन करने के लिए लिखा गया है।
MacOS 11+ में बदलावों के परिणामस्वरूप कोड-हस्ताक्षरित बाइनरी जिनमें Get Task Allow एंटाइटलमेंट नहीं होता, रूट प्रक्रियाओं द्वारा अटैच नहीं की जा सकतीं। चूँकि AdoptOpenJDK JDK11+HotSpot को छोड़कर सभी AdoptOpenJDK/Adoptium Temurin/IBM Semeru रिलीज़ Get Task Allow एंटाइटलमेंट के बिना कोड-हस्ताक्षरित हैं, डिफ़ॉल्ट रूप से उन्हें अटैच नहीं किया जा सकता, और उन्हें टूटा हुआ माना जा सकता है।
इस समस्या को अल्पावधि में ठीक करने के लिए:
किसी भी Java बाइनरी से codesign हस्ताक्षर हटाएँ:
$ codesign --remove-signature /path/to/jdk/Contents/Home/bin/javac
बाइनरी से "mark of the web" हटाएँ:
$ cp /path/to/jdk/Contents/Home/bin/java /path/to/jdk/Contents/Home/bin/java.bak
$ curl -o /path/to/jdk/Contents/Home/bin/java.clean file:///path/to/jdk/Contents/Home/bin/java
$ mv /path/to/jdk/Contents/Home/bin/java.clean /path/to/jdk/Contents/Home/bin/java
| JVM | प्लेटफ़ॉर्म | परीक्षित संस्करण |
|---|
| HotSpot | Linux | 6,8,11,17 |
| HotSpot | MacOS | 8,11,17 |
| HotSpot | Windows | 8,11,17 |
| OpenJ9 (0.29.1) | Linux | 8,11,17 |
| OpenJ9 (0.29.1) | MacOS | 17 |
| OpenJ9 (0.29.1) | Windows | 17 |
| OpenJ9 (0.29.0) | Windows | 8,11 |
| OpenJ9 (0.27.0) | Linux | 8,11 |
| OpenJ9 (0.25.0) | Linux | 16 |
| OpenJ9 (0.24.0) | Linux | 8,11 |