Most other instructions except for function calls and locking

This commit is contained in:
Adam
2014-12-04 16:05:41 -05:00
parent 98b4025a81
commit ea556bef32
18 changed files with 465 additions and 19 deletions

View File

@@ -0,0 +1,26 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class AALoad extends Instruction
{
public AALoad(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
int index = (int) stack.pop();
Object[] array = (Object[]) stack.pop();
stack.push(array[index]);
}
}

View File

@@ -0,0 +1,27 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class AAStore extends Instruction
{
public AAStore(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
Object value = stack.pop();
int index = (int) stack.pop();
Object[] array = (Object[]) stack.pop();
array[index] = value;
}
}

View File

@@ -0,0 +1,23 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import java.io.IOException;
public class ArrayLength extends Instruction
{
public ArrayLength(Instructions instructions, InstructionType type, int pc) throws IOException
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Object[] array = (Object[]) frame.getStack().pop();
frame.getStack().push(array.length);
}
}

View File

@@ -0,0 +1,26 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class BALoad extends Instruction
{
public BALoad(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
int index = (int) stack.pop();
boolean[] array = (boolean[]) stack.pop();
stack.push(array[index]);
}
}

View File

@@ -0,0 +1,27 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class BAStore extends Instruction
{
public BAStore(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
boolean value = (boolean) stack.pop();
int index = (int) stack.pop();
boolean[] array = (boolean[]) stack.pop();
array[index] = value;
}
}

View File

@@ -0,0 +1,26 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class CALoad extends Instruction
{
public CALoad(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
int index = (int) stack.pop();
char[] array = (char[]) stack.pop();
stack.push(array[index]);
}
}

View File

@@ -0,0 +1,27 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class CAStore extends Instruction
{
public CAStore(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
char value = (char) stack.pop();
int index = (int) stack.pop();
char[] array = (char[]) stack.pop();
array[index] = value;
}
}

View File

@@ -0,0 +1,26 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class DALoad extends Instruction
{
public DALoad(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
int index = (int) stack.pop();
double[] array = (double[]) stack.pop();
stack.push(array[index]);
}
}

View File

@@ -0,0 +1,27 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class DAStore extends Instruction
{
public DAStore(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
double value = (double) stack.pop();
int index = (int) stack.pop();
double[] array = (double[]) stack.pop();
array[index] = value;
}
}

View File

@@ -0,0 +1,26 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class FALoad extends Instruction
{
public FALoad(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
int index = (int) stack.pop();
float[] array = (float[]) stack.pop();
stack.push(array[index]);
}
}

View File

@@ -0,0 +1,27 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class FAStore extends Instruction
{
public FAStore(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
float value = (float) stack.pop();
int index = (int) stack.pop();
float[] array = (float[]) stack.pop();
array[index] = value;
}
}

View File

@@ -0,0 +1,26 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class IALoad extends Instruction
{
public IALoad(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
int index = (int) stack.pop();
int[] array = (int[]) stack.pop();
stack.push(array[index]);
}
}

View File

@@ -0,0 +1,27 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class IAStore extends Instruction
{
public IAStore(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
int value = (int) stack.pop();
int index = (int) stack.pop();
int[] array = (int[]) stack.pop();
array[index] = value;
}
}

View File

@@ -0,0 +1,26 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class LALoad extends Instruction
{
public LALoad(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
int index = (int) stack.pop();
long[] array = (long[]) stack.pop();
stack.push(array[index]);
}
}

View File

@@ -0,0 +1,27 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class LAStore extends Instruction
{
public LAStore(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
long value = (long) stack.pop();
int index = (int) stack.pop();
long[] array = (long[]) stack.pop();
array[index] = value;
}
}

View File

@@ -0,0 +1,26 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class SALoad extends Instruction
{
public SALoad(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
int index = (int) stack.pop();
short[] array = (short[]) stack.pop();
stack.push(array[index]);
}
}

View File

@@ -0,0 +1,27 @@
package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.execution.Frame;
import info.sigterm.deob.execution.Stack;
public class SAStore extends Instruction
{
public SAStore(Instructions instructions, InstructionType type, int pc)
{
super(instructions, type, pc);
}
@Override
public void execute(Frame frame)
{
Stack stack = frame.getStack();
short value = (short) stack.pop();
int index = (int) stack.pop();
short[] array = (short[]) stack.pop();
array[index] = value;
}
}