Class writing, call graph, eclipse project

This commit is contained in:
Adam
2015-04-25 12:47:06 -04:00
parent 4dc6bfc949
commit a9f953b46a
72 changed files with 903 additions and 18 deletions

View File

@@ -2,12 +2,17 @@ package info.sigterm.deob;
import info.sigterm.deob.execution.Execution;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;
public class Deob
{
@@ -30,8 +35,27 @@ public class Deob
group.buildClassGraph();
group.buildInstructionGraph();
group.buildCallGraph();
execute(group);
//checkCallGraph(group);
//execute(group);
JarOutputStream jout = new JarOutputStream(new FileOutputStream("d:/rs/07/adamout.jar"), new Manifest());
for (ClassFile cf : group.getClasses())
{
JarEntry entry = new JarEntry(cf.getName() + ".class");
jout.putNextEntry(entry);
ByteArrayOutputStream bout = new ByteArrayOutputStream();
cf.write(new DataOutputStream(bout));
jout.write(bout.toByteArray());
jout.closeEntry();
}
jout.close();
}
private static void execute(ClassGroup group) throws IOException
@@ -42,4 +66,18 @@ public class Deob
Execution e = new Execution(group);
e.run(cf, method);
}
private static void checkCallGraph(ClassGroup group)
{
for (ClassFile cf : group.getClasses())
{
for (Method m : cf.getMethods().getMethods())
{
if (m.callsFrom.isEmpty())
{
System.out.println(cf.getName() + " " + m.getName());
}
}
}
}
}