use of net.runelite.asm.attributes.code.Instructions in project runelite by runelite.
the class GetPathTransformer method removeInvoke.
private void removeInvoke(Instruction i) {
Instructions ins = i.getInstructions();
int idx = ins.getInstructions().indexOf(i);
ins.remove(i);
// pop File
ins.getInstructions().add(idx, new Pop(ins));
ins.getInstructions().add(idx + 1, new LDC(ins, ""));
}
use of net.runelite.asm.attributes.code.Instructions in project runelite by runelite.
the class OpcodesTransformer method transform.
@Override
public void transform(ClassGroup group) {
ClassFile runeliteOpcodes = group.findClass(RUNELITE_OPCODES);
if (runeliteOpcodes == null) {
runeliteOpcodes = new ClassFile(group);
runeliteOpcodes.setName(RUNELITE_OPCODES);
runeliteOpcodes.setSuperName(Type.OBJECT.getInternalName());
runeliteOpcodes.setAccess(Opcodes.ACC_PUBLIC);
group.addClass(runeliteOpcodes);
} else {
runeliteOpcodes.getFields().clear();
}
Method clinit = runeliteOpcodes.findMethod("<clinit>");
if (clinit == null) {
clinit = new Method(runeliteOpcodes, "<clinit>", new Signature("()V"));
clinit.setStatic();
Code code = new Code(clinit);
code.setMaxStack(1);
clinit.setCode(code);
runeliteOpcodes.addMethod(clinit);
Instructions instructions = code.getInstructions();
instructions.addInstruction(new VReturn(instructions));
}
}
use of net.runelite.asm.attributes.code.Instructions in project runelite by runelite.
the class ClientErrorTransformer method transform.
private void transform(Method m) {
if (!m.isStatic() || m.getDescriptor().size() != 2 || !m.getDescriptor().getTypeOfArg(0).equals(Type.STRING) || !m.getDescriptor().getTypeOfArg(1).equals(Type.THROWABLE))
return;
Code code = m.getCode();
Instructions ins = code.getInstructions();
/*
Makes it so the old code in this method is logically dead,
letting the mapper map it but making it so it's never executed.
*/
// load throwable
Instruction aload0 = new ALoad(ins, 1);
IfNull ifNull = new IfNull(ins, InstructionType.IFNULL);
ifNull.setTo(ins.createLabelFor(ins.getInstructions().get(0)));
// load throwable
Instruction aload1 = new ALoad(ins, 1);
InvokeVirtual printStackTrace = new InvokeVirtual(ins, new net.runelite.asm.pool.Method(new net.runelite.asm.pool.Class("java/lang/Throwable"), "printStackTrace", new Signature("()V")));
Instruction ret = new VReturn(ins);
ins.addInstruction(0, aload0);
ins.addInstruction(1, ifNull);
ins.addInstruction(2, aload1);
ins.addInstruction(3, printStackTrace);
ins.addInstruction(4, ret);
done = true;
}
use of net.runelite.asm.attributes.code.Instructions in project runelite by runelite.
the class ReflectionTransformer method transform.
private void transform(Method method) {
Code code = method.getCode();
if (code == null) {
return;
}
Instructions ins = code.getInstructions();
for (Instruction i : new ArrayList<>(ins.getInstructions())) {
transformFindClass(i);
transformMethodName(ins, i);
transformGetParameterTypes(ins, i);
transformGetDeclaredField(ins, i);
transformSetInt(ins, i);
transformGetInt(ins, i);
transformInvokeVirtual(ins, i);
}
}
use of net.runelite.asm.attributes.code.Instructions in project runelite by runelite.
the class BufferFinder method findModPow.
// Find encryptRsa in buffer
private boolean findModPow(Code code) {
if (code == null) {
return false;
}
Instructions instructions = code.getInstructions();
for (Instruction i : instructions.getInstructions()) {
if (!(i instanceof InvokeVirtual)) {
continue;
}
InvokeVirtual iv = (InvokeVirtual) i;
net.runelite.asm.pool.Method method = iv.getMethod();
if (method.getName().equals("modPow")) {
return true;
}
}
return false;
}
Aggregations