hook LicensingFacade
This commit is contained in:
@@ -30,6 +30,12 @@ public class AgentMain {
|
||||
.on(ElementMatchers.named("getUserOptionsFile"))))
|
||||
.asTerminalTransformation()
|
||||
|
||||
.type(ElementMatchers.named("com.intellij.ui.LicensingFacade"))
|
||||
.transform((builder, typeDescription, classLoader, javaModule, protectionDomain) ->
|
||||
builder.visit(Advice.to(LicensingFacadeAdvice.class)
|
||||
.on(ElementMatchers.named("getLicenseExpirationDate"))))
|
||||
.asTerminalTransformation()
|
||||
|
||||
.installOn(inst);
|
||||
|
||||
agentBuilder.installOn(inst);
|
||||
@@ -37,10 +43,10 @@ public class AgentMain {
|
||||
|
||||
static AgentBuilder newAgentBuilder() {
|
||||
return new AgentBuilder.Default()
|
||||
.with(AgentBuilder.RedefinitionStrategy.RETRANSFORMATION)
|
||||
.with(AgentBuilder.InitializationStrategy.NoOp.INSTANCE)
|
||||
.with(AgentBuilder.TypeStrategy.Default.REDEFINE)
|
||||
.ignore(ElementMatchers.nameStartsWith("net.bytebuddy."));
|
||||
.ignore(ElementMatchers.none())
|
||||
.with(AgentBuilder.RedefinitionStrategy.REDEFINITION)
|
||||
.with(AgentBuilder.Listener.StreamWriting.toSystemError().withErrorsOnly())
|
||||
.with(AgentBuilder.Listener.StreamWriting.toSystemOut().withTransformationsOnly());
|
||||
}
|
||||
|
||||
|
||||
|
@@ -0,0 +1,22 @@
|
||||
package com.novitechie.jetbra;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
public class LicensingFacadeAdvice {
|
||||
|
||||
@Advice.OnMethodExit
|
||||
public static void intercept(@Advice.Return(readOnly = false) Date expirationDate) {
|
||||
RuntimeException e = new RuntimeException();
|
||||
for (StackTraceElement stackTraceElement : e.getStackTrace()) {
|
||||
if (stackTraceElement.getFileName() == null){
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.add(Calendar.DAY_OF_MONTH, 50);
|
||||
expirationDate = calendar.getTime();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user