[FIX] Поддержка в ConfigGenerator List<byte[]>

This commit is contained in:
Zaxar163 2019-10-19 06:53:13 +02:00
parent 386a110eb1
commit 8ba00d106e
No known key found for this signature in database
GPG key ID: 1FE4F2E1F053831B
2 changed files with 23 additions and 1 deletions

View file

@ -1,6 +1,7 @@
package pro.gravit.launchserver.asm;
import java.util.Base64;
import java.util.List;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.Opcodes;
@ -12,6 +13,7 @@
import org.objectweb.asm.tree.LdcInsnNode;
import org.objectweb.asm.tree.MethodInsnNode;
import org.objectweb.asm.tree.MethodNode;
import org.objectweb.asm.tree.TypeInsnNode;
import org.objectweb.asm.tree.VarInsnNode;
public class ConfigGenerator {
@ -56,6 +58,23 @@ public void setByteArrayField(String name, byte[] value)
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, configclass.name, name, stringDesc));
}
public void setByteArrayListField(String name, List<byte[]> b)
{
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
constructor.instructions.add(new TypeInsnNode(Opcodes.NEW, "java/util/ArrayList"));
constructor.instructions.add(new InsnNode(Opcodes.DUP));
constructor.instructions.add(new MethodInsnNode(Opcodes.INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V"));
for (byte[] value : b) {
constructor.instructions.add(new InsnNode(Opcodes.DUP));
constructor.instructions.add(new MethodInsnNode(Opcodes.INVOKESTATIC, "java/util/Base64", "getDecoder", "()Ljava/util/Base64$Decoder;", false));
constructor.instructions.add(NodeUtils.getSafeStringInsnList(Base64.getEncoder().encodeToString(value)));
constructor.instructions.add(new MethodInsnNode(Opcodes.INVOKESTATIC, "java/util/Base64$Decoder", "decode", base64DecDesc, false));
constructor.instructions.add(new MethodInsnNode(Opcodes.INVOKEINTERFACE, "java/util/List", "add", "(Ljava/lang/Object;)Z", false));
constructor.instructions.add(new InsnNode(Opcodes.POP));
}
constructor.instructions.add(new FieldInsnNode(Opcodes.PUTFIELD, configclass.name, name, "Ljava/util/List;"));
}
public void setIntegerField(String name, int value)
{
constructor.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));

View file

@ -1,5 +1,7 @@
package pro.gravit.launcher;
import java.nio.charset.StandardCharsets;
public class SecureAutogenConfig {
public byte[][] certificates;
@ -38,7 +40,8 @@ public SecureAutogenConfig() {
"OATWgSKH0qTkleE/v7k+USs0a+KV8wmC5wwliqH+uLO++yIP/9bjDctyLulQX5Ee\n" +
"+EhD7tb1R/yyWY4uhkzlsr3N2Kl34aQAEBMn8Z1mHsyyu1FcbEaNLU8jcS3pHPVM\n" +
"gQRn3m1iDnQlFciAMxW0pW6mW/4xKYzhXk5BTSolnqMVylxHgWXuBwdDDQQVnQ==\n" +
"-----END CERTIFICATE-----").getBytes()
"-----END CERTIFICATE-----").getBytes(StandardCharsets.US_ASCII)
// ? Какая из них, но выбрать надо однозачно
};
}
}