Я использую 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 (), но он хранится внутри моего агента.