I dont know if this works or is correct but it runs?

This commit is contained in:
Adam
2015-08-01 21:35:02 -04:00
parent 7ce6cca104
commit 516fa7805f
10 changed files with 223 additions and 27 deletions

View File

@@ -1,6 +1,11 @@
package info.sigterm.deob.attributes.code.instruction.types;
import info.sigterm.deob.attributes.code.Instruction;
import java.util.List;
public interface JumpingInstruction
{
public void buildJumpGraph();
List<Instruction> getJumps();
}

View File

@@ -9,6 +9,8 @@ import info.sigterm.deob.execution.Frame;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
public class Goto extends Instruction implements JumpingInstruction
{
@@ -71,4 +73,10 @@ public class Goto extends Instruction implements JumpingInstruction
if (to == oldi)
to = newi;
}
@Override
public List<Instruction> getJumps()
{
return Arrays.asList(to);
}
}

View File

@@ -9,6 +9,8 @@ import info.sigterm.deob.execution.Frame;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
public class GotoW extends Instruction implements JumpingInstruction
{
@@ -61,4 +63,10 @@ public class GotoW extends Instruction implements JumpingInstruction
if (to == oldi)
to = newi;
}
@Override
public List<Instruction> getJumps()
{
return Arrays.asList(to);
}
}

View File

@@ -13,6 +13,8 @@ import info.sigterm.deob.execution.StackContext;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
public class If extends Instruction implements JumpingInstruction, ComparisonInstruction
{
@@ -71,8 +73,9 @@ public class If extends Instruction implements JumpingInstruction, ComparisonIns
to = newi;
}
public Instruction getTo()
@Override
public List<Instruction> getJumps()
{
return to;
return Arrays.asList(to);
}
}

View File

@@ -13,6 +13,8 @@ import info.sigterm.deob.execution.StackContext;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
public class If0 extends Instruction implements JumpingInstruction, ComparisonInstruction
{
@@ -70,8 +72,9 @@ public class If0 extends Instruction implements JumpingInstruction, ComparisonIn
to = newi;
}
public Instruction getTo()
@Override
public List<Instruction> getJumps()
{
return to;
return Arrays.asList(to);
}
}

View File

@@ -13,6 +13,7 @@ import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class LookupSwitch extends Instruction implements JumpingInstruction
@@ -132,4 +133,14 @@ public class LookupSwitch extends Instruction implements JumpingInstruction
if (branchi.get(i) == oldi)
branchi.set(i, newi);
}
@Override
public List<Instruction> getJumps()
{
List<Instruction> list = new ArrayList<>();
for (Instruction i : branchi)
list.add(i);
list.add(defi);
return list;
}
}

View File

@@ -129,4 +129,14 @@ public class TableSwitch extends Instruction implements JumpingInstruction
if (branchi.get(i) == oldi)
branchi.set(i, newi);
}
@Override
public List<Instruction> getJumps()
{
List<Instruction> list = new ArrayList<>();
for (Instruction i : branchi)
list.add(i);
list.add(defi);
return list;
}
}