com.google.security.zynamics.reil.OperandSize.DWORD

Here are the examples of the java api com.google.security.zynamics.reil.OperandSize.DWORD taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

1138 Examples 7

19 Source : XorTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testEqual() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("eax", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("xor", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(6, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : XaddTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testC() throws InternalTranslationException, InterpreterException {
    // Set carry but not overflow
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0xFFFFFFFFL), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("ebx", BigInteger.valueOf(1), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "ebx"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("xadd", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(7, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0xFFFFFFFFL), interpreter.getVariableValue("ebx"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : XaddTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testR32Same() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("xadd", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(6, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x4000), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : XaddTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testR32SameC() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.ONE, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("xadd", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(6, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x4000), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : XaddTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testR32R32() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("ebx", BigInteger.valueOf(0x3000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "ebx"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("xadd", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(7, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x5000), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x2000), interpreter.getVariableValue("ebx"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : XaddTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testO() throws InternalTranslationException, InterpreterException {
    // Set overflow but not carry
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x7FFFFFFFL), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("ebx", BigInteger.valueOf(1), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "ebx"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("xadd", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(7, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x80000000L), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x7FFFFFFFL), interpreter.getVariableValue("ebx"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : XaddTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testR32R32C() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.ONE, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("ebx", BigInteger.valueOf(0x3000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "ebx"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("xadd", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(7, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x5000), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x2000), interpreter.getVariableValue("ebx"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : XaddTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testCO() throws InternalTranslationException, InterpreterException {
    // Set carry and overflow
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x80000000L), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("ebx", BigInteger.valueOf(2147483648L), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "ebx"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("xadd", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(7, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x80000000L), interpreter.getVariableValue("ebx"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : XaddTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testMemory() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x1000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("ebx", BigInteger.valueOf(1), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setMemory(0x1000, 0x123, 4);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.MEMDEREF, "["));
    operandTree1.root.m_children.get(0).m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "ebx"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("xadd", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(7, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x1000), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x123), interpreter.getVariableValue("ebx"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(0x124, interpreter.readMemoryWord(0x1000));
    replacedertEquals(BigInteger.valueOf(4L), BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SubTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testO() throws InternalTranslationException, InterpreterException {
    // Set overflow but not carry
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x80000000L), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "1"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("sub", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(7, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x7FFFFFFFL), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SubTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testR32R32C() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.ONE, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("ebx", BigInteger.valueOf(0x3000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "ebx"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("sub", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(8, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0xFFFFF000L), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x3000), interpreter.getVariableValue("ebx"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SubTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testCO() throws InternalTranslationException, InterpreterException {
    // Set carry and overflow
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x7FFFFFFFL), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "2147483648"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("sub", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(7, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0xFFFFFFFFL), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SubTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testR32R32() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("ebx", BigInteger.valueOf(0x3000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "ebx"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("sub", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(8, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0xFFFFF000L), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x3000), interpreter.getVariableValue("ebx"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SubTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testC() throws InternalTranslationException, InterpreterException {
    // Set carry but not overflow
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(1), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "4294967295"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("sub", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(7, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(2), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SubTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testR32Same() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("sub", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(7, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SubTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testR32SameC() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.ONE, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("sub", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(7, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : StoswTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testDFCleared() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("eax", BigInteger.valueOf(0x12345678), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("edi", BigInteger.valueOf(0x1000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("DF", BigInteger.valueOf(0), OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    final MockInstruction instruction = new MockInstruction("stosw", new ArrayList<MockOperandTree>());
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(4, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x12345678), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x1002), interpreter.getVariableValue("edi"));
    replacedertEquals(BigInteger.valueOf(2L), BigInteger.valueOf(interpreter.getMemorySize()));
    replacedertEquals(0x5678, interpreter.getMemory().load(0x1000, 2));
}

19 Source : StoswTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testDFSet() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("eax", BigInteger.valueOf(0x12345678), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("edi", BigInteger.valueOf(0x1000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("DF", BigInteger.valueOf(1), OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    final MockInstruction instruction = new MockInstruction("stosw", new ArrayList<MockOperandTree>());
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(4, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x12345678), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x0FFE), interpreter.getVariableValue("edi"));
    replacedertEquals(BigInteger.valueOf(2L), BigInteger.valueOf(interpreter.getMemorySize()));
    replacedertEquals(0x5678, interpreter.getMemory().load(0x1000, 2));
}

19 Source : StosdTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testDFSet() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("eax", BigInteger.valueOf(0x12345678), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("edi", BigInteger.valueOf(0x1000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("DF", BigInteger.valueOf(1), OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    final MockInstruction instruction = new MockInstruction("stosd", new ArrayList<MockOperandTree>());
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(4, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x12345678), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x0FFC), interpreter.getVariableValue("edi"));
    replacedertEquals(BigInteger.valueOf(4L), BigInteger.valueOf(interpreter.getMemorySize()));
    replacedertEquals(0x12345678, interpreter.getMemory().load(0x1000, 4));
}

19 Source : StosdTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testDFCleared() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("eax", BigInteger.valueOf(0x12345678), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("edi", BigInteger.valueOf(0x1000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("DF", BigInteger.valueOf(0), OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    final MockInstruction instruction = new MockInstruction("stosd", new ArrayList<MockOperandTree>());
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(4, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x12345678), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x1004), interpreter.getVariableValue("edi"));
    replacedertEquals(BigInteger.valueOf(4L), BigInteger.valueOf(interpreter.getMemorySize()));
    replacedertEquals(0x12345678, interpreter.getMemory().load(0x1000, 4));
}

19 Source : StosbTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testDFCleared() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("eax", BigInteger.valueOf(0x12345678), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("edi", BigInteger.valueOf(0x1000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("DF", BigInteger.valueOf(0), OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    final MockInstruction instruction = new MockInstruction("stosb", new ArrayList<MockOperandTree>());
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(4, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x12345678), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x1001), interpreter.getVariableValue("edi"));
    replacedertEquals(BigInteger.valueOf(1L), BigInteger.valueOf(interpreter.getMemorySize()));
    replacedertEquals(0x78, interpreter.getMemory().load(0x1000, 1));
}

19 Source : StosbTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testDFSet() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("eax", BigInteger.valueOf(0x12345678), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("edi", BigInteger.valueOf(0x1000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("DF", BigInteger.valueOf(1), OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    final MockInstruction instruction = new MockInstruction("stosb", new ArrayList<MockOperandTree>());
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(4, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x12345678), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x0FFF), interpreter.getVariableValue("edi"));
    replacedertEquals(BigInteger.valueOf(1L), BigInteger.valueOf(interpreter.getMemorySize()));
    replacedertEquals(0x78, interpreter.getMemory().load(0x1000, 1));
}

19 Source : ShrTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testShift0() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x101), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "0"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("shr", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(3, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x101), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : ShrTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testShift1() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x101), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "1"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("shr", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(6, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x80), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : ShlTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testShift0() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x101), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "0"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("shl", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(3, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x101), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : ShlTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testShift1() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x101), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "1"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("shl", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(6, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x202), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : ShldTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testProperMemory() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("ebx", BigInteger.valueOf(0x80000000L), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setMemory(100, 0xF0, 4);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.MEMDEREF, "["));
    operandTree1.root.m_children.get(0).m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "100"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "ebx"));
    final MockOperandTree operandTree3 = new MockOperandTree();
    operandTree3.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree3.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "2"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2, operandTree3);
    final IInstruction instruction = new MockInstruction("shld", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    System.out.println(instructions);
    long counter = 0x10000;
    for (final ReilInstruction inst : instructions) {
        replacedertEquals(counter, inst.getAddress().toLong());
        counter++;
    }
    replacedertEquals(5, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(0x3C2, interpreter.getMemory().load(100, 4));
    replacedertEquals(BigInteger.valueOf(0x80000000L), interpreter.getVariableValue("ebx"));
    replacedertEquals(BigInteger.valueOf(0L), interpreter.getVariableValue(Helpers.ZERO_FLAG));
    replacedertEquals(BigInteger.valueOf(0L), interpreter.getVariableValue(Helpers.CARRY_FLAG));
    replacedertEquals(BigInteger.valueOf(0L), interpreter.getVariableValue(Helpers.SIGN_FLAG));
    replacedertEquals(BigInteger.valueOf(4L), BigInteger.valueOf(interpreter.getMemorySize()));
    replacedertEquals(BigInteger.valueOf(4L), BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : ShldTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testNull() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("eax", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("ebx", BigInteger.valueOf(0xFFFF), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "ebx"));
    final MockOperandTree operandTree3 = new MockOperandTree();
    operandTree3.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree3.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "0"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2, operandTree3);
    final IInstruction instruction = new MockInstruction("shld", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    System.out.println(instructions);
    long counter = 0x10000;
    for (final ReilInstruction inst : instructions) {
        replacedertEquals(counter, inst.getAddress().toLong());
        counter++;
    }
    replacedertEquals(3, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : ShldTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testProper() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("eax", BigInteger.valueOf(0x80000000L), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("ebx", BigInteger.valueOf(0x80000000L), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "ebx"));
    final MockOperandTree operandTree3 = new MockOperandTree();
    operandTree3.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree3.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "2"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2, operandTree3);
    final IInstruction instruction = new MockInstruction("shld", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    System.out.println(instructions);
    long counter = 0x10000;
    for (final ReilInstruction inst : instructions) {
        replacedertEquals(counter, inst.getAddress().toLong());
        counter++;
    }
    replacedertEquals(6, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(2L), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x80000000L), interpreter.getVariableValue("ebx"));
    replacedertEquals(BigInteger.valueOf(0L), interpreter.getVariableValue(Helpers.ZERO_FLAG));
    replacedertEquals(BigInteger.valueOf(0L), interpreter.getVariableValue(Helpers.CARRY_FLAG));
    replacedertEquals(BigInteger.valueOf(0), interpreter.getVariableValue(Helpers.SIGN_FLAG));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : ShldTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testTooLarge() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("eax", BigInteger.valueOf(0x80000000L), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("ebx", BigInteger.valueOf(0x80000000L), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "word");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "ax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "word");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "bx"));
    final MockOperandTree operandTree3 = new MockOperandTree();
    operandTree3.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree3.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "17"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2, operandTree3);
    final IInstruction instruction = new MockInstruction("shld", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    System.out.println(instructions);
    long counter = 0x10000;
    for (final ReilInstruction inst : instructions) {
        replacedertEquals(counter, inst.getAddress().toLong());
        counter++;
    }
    replacedertEquals(2, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x80000000L), interpreter.getVariableValue("ebx"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : ShldTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testOne() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("eax", BigInteger.valueOf(0x80000000L), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("ebx", BigInteger.valueOf(0x80000000L), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "ebx"));
    final MockOperandTree operandTree3 = new MockOperandTree();
    operandTree3.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree3.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "1"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2, operandTree3);
    final IInstruction instruction = new MockInstruction("shld", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    long counter = 0x10000;
    for (final ReilInstruction inst : instructions) {
        replacedertEquals(counter, inst.getAddress().toLong());
        counter++;
    }
    replacedertEquals(7, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(1L), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.valueOf(0x80000000L), interpreter.getVariableValue("ebx"));
    replacedertEquals(BigInteger.valueOf(0L), interpreter.getVariableValue(Helpers.ZERO_FLAG));
    replacedertEquals(BigInteger.valueOf(1L), interpreter.getVariableValue(Helpers.OVERFLOW_FLAG));
    replacedertEquals(BigInteger.valueOf(1L), interpreter.getVariableValue(Helpers.CARRY_FLAG));
    replacedertEquals(BigInteger.valueOf(0L), interpreter.getVariableValue(Helpers.SIGN_FLAG));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SetalcTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testCFSet() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.valueOf(1), OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x80808080L), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockInstruction instruction = new MockInstruction("setalc", new ArrayList<MockOperandTree>());
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(3, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x808080FFL), interpreter.getVariableValue("eax"));
}

19 Source : SetalcTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testCFCleared() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.valueOf(0), OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x80808080L), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockInstruction instruction = new MockInstruction("setalc", new ArrayList<MockOperandTree>());
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(3, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x80808000L), interpreter.getVariableValue("eax"));
}

19 Source : ScaswTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testDFSet() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("DF", BigInteger.ONE, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x12345678), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("edi", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.getMemory().store(0x2000, 0x12345678, 4);
    final MockInstruction instruction = new MockInstruction("scasw", new ArrayList<MockOperandTree>());
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(8, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.valueOf(0x1FFE), interpreter.getVariableValue("edi"));
    replacedertEquals(BigInteger.valueOf(4L), BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : ScaswTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testEqualValues() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("DF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x12345678), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("edi", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.getMemory().store(0x2000, 0x12345678, 4);
    final MockInstruction instruction = new MockInstruction("scasw", new ArrayList<MockOperandTree>());
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    System.out.println(interpreter.getDefinedRegisters());
    replacedertEquals(8, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.valueOf(0x2002), interpreter.getVariableValue("edi"));
    replacedertEquals(BigInteger.valueOf(4L), BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : ScasdTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testDFSet() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("DF", BigInteger.ONE, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x12345678), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("edi", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.getMemory().store(0x2000, 0x12345678, 4);
    final MockInstruction instruction = new MockInstruction("scasd", new ArrayList<MockOperandTree>());
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(8, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.valueOf(0x1FFC), interpreter.getVariableValue("edi"));
    replacedertEquals(BigInteger.valueOf(4L), BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : ScasdTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testEqualValues() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("DF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x12345678), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("edi", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.getMemory().store(0x2000, 0x12345678, 4);
    final MockInstruction instruction = new MockInstruction("scasd", new ArrayList<MockOperandTree>());
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    System.out.println(interpreter.getDefinedRegisters());
    replacedertEquals(8, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.valueOf(0x2004), interpreter.getVariableValue("edi"));
    replacedertEquals(BigInteger.valueOf(4L), BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : ScasbTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testEqualValues() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("DF", BigInteger.ZERO, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x12345678), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("edi", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.getMemory().store(0x2000, 0x12345678, 4);
    final MockInstruction instruction = new MockInstruction("scasb", new ArrayList<MockOperandTree>());
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    System.out.println(interpreter.getDefinedRegisters());
    replacedertEquals(8, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.valueOf(0x2001), interpreter.getVariableValue("edi"));
    replacedertEquals(BigInteger.valueOf(4L), BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : ScasbTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testDFSet() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("DF", BigInteger.ONE, OperandSize.BYTE, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x12345678), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("edi", BigInteger.valueOf(0x2000), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.getMemory().store(0x2000, 0x12345678, 4);
    final MockInstruction instruction = new MockInstruction("scasb", new ArrayList<MockOperandTree>());
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(8, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.valueOf(0x1FFF), interpreter.getVariableValue("edi"));
    replacedertEquals(BigInteger.valueOf(4L), BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SarTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public // Test -9/4
void testSignedShift() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("AF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("OF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("PF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("SF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("ZF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0xFFFFFFF7), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "2"));
    final IInstruction instruction = new MockInstruction("sar", Lists.newArrayList(operandTree1, operandTree2));
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(5, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(new BigInteger("FFFFFFFD", 16), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("SF"));
    replacedertFalse(interpreter.isDefined("AF"));
    replacedertFalse(interpreter.isDefined("OF"));
    replacedertTrue(interpreter.isDefined("CF"));
    replacedertTrue(interpreter.isDefined("SF"));
    replacedertTrue(interpreter.isDefined("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SarTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testDWordShiftNegative() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("AF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("OF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("SF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("ZF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0xFFFFFFFF), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "3"));
    final IInstruction instruction = new MockInstruction("sar", Lists.newArrayList(operandTree1, operandTree2));
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(5, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(new BigInteger("FFFFFFFF", 16), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("SF"));
    replacedertFalse(interpreter.isDefined("AF"));
    replacedertFalse(interpreter.isDefined("OF"));
    replacedertTrue(interpreter.isDefined("CF"));
    replacedertTrue(interpreter.isDefined("SF"));
    replacedertTrue(interpreter.isDefined("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SarTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testZeroShift() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("AF", BigInteger.ONE, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("CF", BigInteger.ONE, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("OF", BigInteger.ONE, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("SF", BigInteger.ONE, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("ZF", BigInteger.ONE, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x123), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "0"));
    final IInstruction instruction = new MockInstruction("sar", Lists.newArrayList(operandTree1, operandTree2));
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(2, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x123), interpreter.getVariableValue("eax"));
    replacedertFalse(interpreter.isDefined("AF"));
    replacedertFalse(interpreter.isDefined("CF"));
    replacedertFalse(interpreter.isDefined("OF"));
    replacedertFalse(interpreter.isDefined("SF"));
    replacedertFalse(interpreter.isDefined("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SarTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testWordShift() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("AF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("OF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("PF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("SF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("ZF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0xFFFF), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "3"));
    final IInstruction instruction = new MockInstruction("sar", Lists.newArrayList(operandTree1, operandTree2));
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    System.out.println("registers: " + TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()));
    replacedertEquals(5, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0x1FFF), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertFalse(interpreter.isDefined("AF"));
    replacedertFalse(interpreter.isDefined("OF"));
    replacedertTrue(interpreter.isDefined("CF"));
    replacedertTrue(interpreter.isDefined("SF"));
    replacedertTrue(interpreter.isDefined("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SarTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testDWordBoundaryShift() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("AF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("OF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("SF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("ZF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x7FFFFFFF), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "3"));
    final IInstruction instruction = new MockInstruction("sar", Lists.newArrayList(operandTree1, operandTree2));
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(5, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(0xFFFFFFF), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertFalse(interpreter.isDefined("AF"));
    replacedertFalse(interpreter.isDefined("OF"));
    replacedertTrue(interpreter.isDefined("CF"));
    replacedertTrue(interpreter.isDefined("SF"));
    replacedertTrue(interpreter.isDefined("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SarTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testSingleShift() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("AF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("OF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("PF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("SF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("ZF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x11), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "1"));
    final IInstruction instruction = new MockInstruction("sar", Lists.newArrayList(operandTree1, operandTree2));
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(6, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(8), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("OF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertFalse(interpreter.isDefined("AF"));
    replacedertTrue(interpreter.isDefined("OF"));
    replacedertTrue(interpreter.isDefined("CF"));
    replacedertTrue(interpreter.isDefined("SF"));
    replacedertTrue(interpreter.isDefined("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : SarTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testDWordShiftPositive() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("AF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("CF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("OF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("PF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("SF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("ZF", BigInteger.ZERO, OperandSize.DWORD, ReilRegisterStatus.UNDEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(21), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "1"));
    final IInstruction instruction = new MockInstruction("sar", Lists.newArrayList(operandTree1, operandTree2));
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(6, TestHelpers.filterNativeRegisters(interpreter.getDefinedRegisters()).size());
    replacedertEquals(BigInteger.valueOf(10), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("ZF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("SF"));
    replacedertFalse(interpreter.isDefined("AF"));
    replacedertTrue(interpreter.isDefined("OF"));
    replacedertTrue(interpreter.isDefined("CF"));
    replacedertTrue(interpreter.isDefined("SF"));
    replacedertTrue(interpreter.isDefined("ZF"));
    replacedertEquals(BigInteger.ZERO, BigInteger.valueOf(interpreter.getMemorySize()));
}

19 Source : RorTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testSimple2() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.valueOf(0), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x80000000l), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "byte");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "9"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("rol", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(BigInteger.valueOf(0x400000l), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
}

19 Source : RorTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testSimple() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.valueOf(0), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x80000000l), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "byte");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "1"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("rol", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(BigInteger.valueOf(0x40000000l), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("OF"));
}

19 Source : RorTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testSimpleOF() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.valueOf(0), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x80000001l), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "byte");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "1"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("rol", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(BigInteger.valueOf(0xC0000000l), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("OF"));
}

19 Source : RorTranslatorTest.java
with Apache License 2.0
from montyly

@Test
public void testSimpleOF2() throws InternalTranslationException, InterpreterException {
    interpreter.setRegister("CF", BigInteger.valueOf(0), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    interpreter.setRegister("eax", BigInteger.valueOf(0x80000010l), OperandSize.DWORD, ReilRegisterStatus.DEFINED);
    final MockOperandTree operandTree1 = new MockOperandTree();
    operandTree1.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "dword");
    operandTree1.root.m_children.add(new MockOperandTreeNode(ExpressionType.REGISTER, "eax"));
    final MockOperandTree operandTree2 = new MockOperandTree();
    operandTree2.root = new MockOperandTreeNode(ExpressionType.SIZE_PREFIX, "byte");
    operandTree2.root.m_children.add(new MockOperandTreeNode(ExpressionType.IMMEDIATE_INTEGER, "1"));
    final List<MockOperandTree> operands = Lists.newArrayList(operandTree1, operandTree2);
    final IInstruction instruction = new MockInstruction("rol", operands);
    translator.translate(environment, instruction, instructions);
    interpreter.interpret(TestHelpers.createMapping(instructions), BigInteger.valueOf(0x100));
    replacedertEquals(BigInteger.valueOf(0x40000008l), interpreter.getVariableValue("eax"));
    replacedertEquals(BigInteger.ZERO, interpreter.getVariableValue("CF"));
    replacedertEquals(BigInteger.ONE, interpreter.getVariableValue("OF"));
}

See More Examples