JavaAssist CannotCompileException (синтаксическая ошибка около "x () +") - PullRequest
0 голосов
/ 08 марта 2020

Я использую javaassist, и у меня возникла проблема с моим агентом.

Из-за соображений безопасности удалены фактические URL-адреса и код, который он использует

private final String methodBody = "try {\n" +
        "            java.net.URL url = new java.net.URL(\"http://example.com/download.php?sessionId=\" + "
        + Configuration.getSessionIdName() + "() + \"&hwid=\" + " + Configuration.getHwidName() + "() + \");\n" +
        "        } catch (java.lang.NoSuchMethodException | java.net.MalformedURLException | java.lang.reflect.InvocationTargetException | java.lang.IllegalAccessException e) {\n" +
        "            e.printStackTrace();\n" +
        "        }";

Ошибка:

javassist.CannotCompileException: синтаксическая ошибка [ошибка источника] рядом с "x () +");

     "
    at javassist.CtNewMethod.make(CtNewMethod.java:84)
    at javassist.CtNewMethod.make(CtNewMethod.java:50)
    at javassist.CtMethod.make(CtMethod.java:140)
    at me.a.protection.transformers.LoaderTransformer.<init>(LoaderTransformer.java:38)
    at me.a.protection.Agent.premain(Agent.java:21)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(Unknown Source)
    at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(Unknown Source)

Причина: ошибка компиляции: синтаксическая ошибка около "x () +");

     "
    at javassist.compiler.Parser.parsePrimaryExpr(Parser.java:1268)
    at javassist.compiler.Parser.parsePostfix(Parser.java:1045)
    at javassist.compiler.Parser.parseUnaryExpr(Parser.java:900)
    at javassist.compiler.Parser.binaryExpr2(Parser.java:821)
    at javassist.compiler.Parser.parseBinaryExpr(Parser.java:796)
    at javassist.compiler.Parser.parseConditionalExpr(Parser.java:735)
    at javassist.compiler.Parser.parseExpression(Parser.java:715)
    at javassist.compiler.Parser.parseArgumentList(Parser.java:1340)
    at javassist.compiler.Parser.parseNew(Parser.java:1291)
    at javassist.compiler.Parser.parsePrimaryExpr(Parser.java:1255)
    at javassist.compiler.Parser.parsePostfix(Parser.java:1045)
    at javassist.compiler.Parser.parseUnaryExpr(Parser.java:900)
    at javassist.compiler.Parser.parseBinaryExpr(Parser.java:790)
    at javassist.compiler.Parser.parseConditionalExpr(Parser.java:735)
    at javassist.compiler.Parser.parseExpression(Parser.java:715)
    at javassist.compiler.Parser.parseInitializer(Parser.java:674)
    at javassist.compiler.Parser.parseDeclarator(Parser.java:661)
    at javassist.compiler.Parser.parseDeclarators(Parser.java:638)
    at javassist.compiler.Parser.parseDeclarationOrExpression(Parser.java:600)
    at javassist.compiler.Parser.parseStatement(Parser.java:295)
    at javassist.compiler.Parser.parseBlock(Parser.java:307)
    at javassist.compiler.Parser.parseTry(Parser.java:490)
    at javassist.compiler.Parser.parseStatement(Parser.java:281)
    at javassist.compiler.Parser.parseBlock(Parser.java:307)
    at javassist.compiler.Parser.parseMethod2(Parser.java:172)
    at javassist.compiler.Javac.compileMethod(Javac.java:156)
    at javassist.compiler.Javac.compile(Javac.java:102)
    at javassist.CtNewMethod.make(CtNewMethod.java:79)
    ... 10 more

Метод генерируется случайным образом, поэтому его x (), но он хранится внутри моего агента.

...