project: Deob change ScriptOpcodes transformer

This commit is contained in:
Owain van Brakel
2021-11-03 08:11:50 +01:00
parent 63309c2683
commit 467ecb421c

View File

@@ -17,11 +17,7 @@ import net.runelite.asm.attributes.code.instructions.GetStatic;
import net.runelite.asm.attributes.code.instructions.ILoad; import net.runelite.asm.attributes.code.instructions.ILoad;
import net.runelite.asm.attributes.code.instructions.IfICmpEq; import net.runelite.asm.attributes.code.instructions.IfICmpEq;
import net.runelite.asm.attributes.code.instructions.IfICmpNe; import net.runelite.asm.attributes.code.instructions.IfICmpNe;
import net.runelite.asm.attributes.code.instructions.LDC;
import net.runelite.asm.attributes.code.instructions.PutStatic;
import net.runelite.asm.attributes.code.instructions.VReturn;
import net.runelite.asm.pool.Class; import net.runelite.asm.pool.Class;
import net.runelite.asm.signature.Signature;
import net.runelite.deob.Transformer; import net.runelite.deob.Transformer;
import org.objectweb.asm.Opcodes; import org.objectweb.asm.Opcodes;
import static org.objectweb.asm.Opcodes.ACC_FINAL; import static org.objectweb.asm.Opcodes.ACC_FINAL;
@@ -149,20 +145,6 @@ public class ScriptOpcodesTransformer implements Transformer // robots in disgui
scriptOpcodes.getFields().clear(); scriptOpcodes.getFields().clear();
} }
Method clinit = scriptOpcodes.findMethod("<clinit>");
if (clinit == null)
{
clinit = new Method(scriptOpcodes, "<clinit>", new Signature("()V"));
clinit.setStatic(true);
Code code = new Code(clinit);
code.setMaxStack(1);
clinit.setCode(code);
scriptOpcodes.addMethod(clinit);
}
Code code = clinit.getCode();
Instructions ins = code.getInstructions();
ClassFile finalScriptOpcodes = scriptOpcodes; ClassFile finalScriptOpcodes = scriptOpcodes;
OPCODE_MAP.entrySet().stream().sorted(Comparator.comparingInt(Map.Entry::getKey)).forEach((entry) -> OPCODE_MAP.entrySet().stream().sorted(Comparator.comparingInt(Map.Entry::getKey)).forEach((entry) ->
{ {
@@ -173,13 +155,6 @@ public class ScriptOpcodesTransformer implements Transformer // robots in disgui
field.setAccessFlags(ACC_PUBLIC | ACC_STATIC | ACC_FINAL); field.setAccessFlags(ACC_PUBLIC | ACC_STATIC | ACC_FINAL);
field.setValue(opcode); field.setValue(opcode);
finalScriptOpcodes.addField(field); finalScriptOpcodes.addField(field);
LDC ldc = new LDC(ins, opcode);
PutStatic put = new PutStatic(ins, field);
ins.addInstruction(0, ldc);
ins.addInstruction(1, put);
}); });
ins.addInstruction(new VReturn(ins));
} }
} }