mirror of
https://github.com/GravitLauncher/Launcher
synced 2025-04-19 14:33:04 +03:00
Update JAConfigurator.java
This commit is contained in:
parent
434fc8af05
commit
3599f16ae3
1 changed files with 62 additions and 41 deletions
|
@ -15,6 +15,7 @@
|
||||||
import org.objectweb.asm.Type;
|
import org.objectweb.asm.Type;
|
||||||
|
|
||||||
import pro.gravit.launcher.AutogenConfig;
|
import pro.gravit.launcher.AutogenConfig;
|
||||||
|
import pro.gravit.launcher.Launcher;
|
||||||
import pro.gravit.launcher.LauncherConfig;
|
import pro.gravit.launcher.LauncherConfig;
|
||||||
import pro.gravit.launcher.modules.Module;
|
import pro.gravit.launcher.modules.Module;
|
||||||
import pro.gravit.launcher.modules.ModulesManager;
|
import pro.gravit.launcher.modules.ModulesManager;
|
||||||
|
@ -23,9 +24,11 @@
|
||||||
|
|
||||||
public class JAConfigurator {
|
public class JAConfigurator {
|
||||||
private static final String modulesManagerName = Type.getInternalName(ModulesManager.class);
|
private static final String modulesManagerName = Type.getInternalName(ModulesManager.class);
|
||||||
|
private static final String launcherName = Type.getInternalName(Launcher.class);
|
||||||
|
private static final String modulesManagerDesc = Type.getDescriptor(ModulesManager.class);
|
||||||
private static final String registerModDesc = Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(Module.class));
|
private static final String registerModDesc = Type.getMethodDescriptor(Type.VOID_TYPE, Type.getType(Module.class));
|
||||||
private static final String autoGenConfigName = Type.getInternalName(AutogenConfig.class);
|
private static final String autoGenConfigName = Type.getInternalName(AutogenConfig.class);
|
||||||
private static final String stringName = Type.getInternalName(String.class);
|
private static final String stringDesc = Type.getDescriptor(String.class);
|
||||||
private final ClassNode configclass;
|
private final ClassNode configclass;
|
||||||
private final MethodNode constructor;
|
private final MethodNode constructor;
|
||||||
private final MethodNode initModuleMethod;
|
private final MethodNode initModuleMethod;
|
||||||
|
@ -39,9 +42,10 @@ public JAConfigurator(ClassNode configclass) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addModuleClass(String fullName) {
|
public void addModuleClass(String fullName) {
|
||||||
initModuleMethod.instructions.insert(new MethodInsnNode(Opcodes.INVOKEINTERFACE, modulesManagerName, "registerModule", registerModDesc));
|
initModuleMethod.instructions.add(new FieldInsnNode(Opcodes.GETSTATIC, launcherName, "modulesManager", modulesManagerDesc));
|
||||||
initModuleMethod.instructions.insert(new MethodInsnNode(Opcodes.INVOKESPECIAL, fullName.replace('.', '/'), "<init>", "()V"));
|
initModuleMethod.instructions.add(new TypeInsnNode(Opcodes.NEW, fullName.replace('.', '/')));
|
||||||
initModuleMethod.instructions.insert(new TypeInsnNode(Opcodes.NEW, fullName.replace('.', '/')));
|
initModuleMethod.instructions.add(new MethodInsnNode(Opcodes.INVOKESPECIAL, fullName.replace('.', '/'), "<init>", "()V"));
|
||||||
|
initModuleMethod.instructions.add(new MethodInsnNode(Opcodes.INVOKEINTERFACE, modulesManagerName, "registerModule", registerModDesc));
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] getBytecode(ClassMetadataReader reader) {
|
public byte[] getBytecode(ClassMetadataReader reader) {
|
||||||
|
@ -55,29 +59,33 @@ public String getZipEntryPath() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAddress(String address) {
|
public void setAddress(String address) {
|
||||||
|
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
|
||||||
constructor.instructions.add(new LdcInsnNode(address));
|
constructor.instructions.add(new LdcInsnNode(address));
|
||||||
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "address", stringName));
|
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "address", stringDesc));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setProjectName(String name) {
|
public void setProjectName(String name) {
|
||||||
|
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
|
||||||
constructor.instructions.add(new LdcInsnNode(name));
|
constructor.instructions.add(new LdcInsnNode(name));
|
||||||
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "projectname", stringName));
|
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "projectname", stringDesc));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSecretKey(String key) {
|
public void setSecretKey(String key) {
|
||||||
|
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
|
||||||
constructor.instructions.add(new LdcInsnNode(key));
|
constructor.instructions.add(new LdcInsnNode(key));
|
||||||
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "secretKeyClient", stringName));
|
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "secretKeyClient", stringDesc));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOemUnlockKey(String key) {
|
public void setOemUnlockKey(String key) {
|
||||||
|
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
|
||||||
constructor.instructions.add(new LdcInsnNode(key));
|
constructor.instructions.add(new LdcInsnNode(key));
|
||||||
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "oemUnlockKey", stringName));
|
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "oemUnlockKey", stringDesc));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGuardType(String key) {
|
public void setGuardType(String key) {
|
||||||
|
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
|
||||||
constructor.instructions.add(new LdcInsnNode(key));
|
constructor.instructions.add(new LdcInsnNode(key));
|
||||||
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "guardType", stringName));
|
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "guardType", stringDesc));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void push(final int value) {
|
public void push(final int value) {
|
||||||
|
@ -92,6 +100,7 @@ else if (value >= Short.MIN_VALUE && value <= Short.MAX_VALUE)
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEnv(LauncherConfig.LauncherEnvironment env) {
|
public void setEnv(LauncherConfig.LauncherEnvironment env) {
|
||||||
|
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
|
||||||
int i = 2;
|
int i = 2;
|
||||||
|
|
||||||
switch (env) {
|
switch (env) {
|
||||||
|
@ -113,30 +122,42 @@ public void setEnv(LauncherConfig.LauncherEnvironment env) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setClientPort(int port) {
|
public void setClientPort(int port) {
|
||||||
|
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
|
||||||
push(port);
|
push(port);
|
||||||
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "clientPort", Type.INT_TYPE.getInternalName()));
|
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "clientPort", Type.INT_TYPE.getInternalName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setWarningMissArchJava(boolean b) {
|
public void setWarningMissArchJava(boolean b) {
|
||||||
|
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
|
||||||
constructor.instructions.add(new InsnNode(b ? Opcodes.ICONST_1 : Opcodes.ICONST_0));
|
constructor.instructions.add(new InsnNode(b ? Opcodes.ICONST_1 : Opcodes.ICONST_0));
|
||||||
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "isWarningMissArchJava", Type.BOOLEAN_TYPE.getInternalName()));
|
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "isWarningMissArchJava", Type.BOOLEAN_TYPE.getInternalName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGuardLicense(String name, String key, String encryptKey) {
|
public void setGuardLicense(String name, String key, String encryptKey) {
|
||||||
|
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
|
||||||
constructor.instructions.add(new LdcInsnNode(name));
|
constructor.instructions.add(new LdcInsnNode(name));
|
||||||
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "guardLicenseName", stringName));
|
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "guardLicenseName", stringDesc));
|
||||||
|
|
||||||
|
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
|
||||||
constructor.instructions.add(new LdcInsnNode(key));
|
constructor.instructions.add(new LdcInsnNode(key));
|
||||||
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "guardLicenseKey", stringName));
|
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "guardLicenseKey", stringDesc));
|
||||||
|
|
||||||
|
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
|
||||||
constructor.instructions.add(new LdcInsnNode(encryptKey));
|
constructor.instructions.add(new LdcInsnNode(encryptKey));
|
||||||
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "guardLicenseEncryptKey", stringName));
|
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "guardLicenseEncryptKey", stringDesc));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void nullGuardLicense() {
|
public void nullGuardLicense() {
|
||||||
|
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
|
||||||
constructor.instructions.add(new InsnNode(Opcodes.ACONST_NULL));
|
constructor.instructions.add(new InsnNode(Opcodes.ACONST_NULL));
|
||||||
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "guardLicenseName", stringName));
|
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "guardLicenseName", stringDesc));
|
||||||
|
|
||||||
|
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
|
||||||
constructor.instructions.add(new InsnNode(Opcodes.ACONST_NULL));
|
constructor.instructions.add(new InsnNode(Opcodes.ACONST_NULL));
|
||||||
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "guardLicenseKey", stringName));
|
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "guardLicenseKey", stringDesc));
|
||||||
|
|
||||||
|
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
|
||||||
constructor.instructions.add(new InsnNode(Opcodes.ACONST_NULL));
|
constructor.instructions.add(new InsnNode(Opcodes.ACONST_NULL));
|
||||||
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "guardLicenseEncryptKey", stringName));
|
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, autoGenConfigName, "guardLicenseEncryptKey", stringDesc));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue