public static void saveAsJar(ArrayList<ClassNode> nodeList, String fileName) {
try {
JarOutputStream out = new JarOutputStream(new FileOutputStream(fileName));
for (ClassNode cn : nodeList) {
ClassWriter cw = new ClassWriter(0);
cn.accept(cw);
out.putNextEntry(new ZipEntry(cn.name + ".class"));
out.write(cw.toByteArray());
out.closeEntry();
}
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
ASM Save ArrayList ClassNode as Zip File
Started by Konloch · Oct 11, 2014
Looks sexy, I'll have to take a better look at this later.
Is there any documentation on it?
konloch wrote:
Bibl wrote:
Looks sexy, I'll have to take a better look at this later.
Is there any documentation on it?
not really its not even done but when I need stuff I just add
Bibl wrote:
konloch wrote:
Bibl wrote:
Looks sexy, I'll have to take a better look at this later.
Is there any documentation on it?
not really its not even done but when I need stuff I just add
Interesting project non-the-less, favorited it for later.
What tools does it feature atm?
load jars from file or url
JarDownloader dl = new JarDownloader(new JarInfo(new File("jar.jar")));
boolean worked = dl.parse();
Map<String, ClassNode> nodes = dl.getContents();
JarDumper dumper = new JarDumper(contents);
dumper.dump(new File("out.jar"));
Add Analysers, store class, field and method data into HookMaps
A lot of filters
Refactorer refactorer = new Refactorer(hookMap, contents);
refactorer.run();
changes whole jars class, method and field names based on mapping data.
InstructionPrinter.consolePrint(methodName);
pretty prints
InstructionSearcher searcher = new InstructionSearcher(m.instructions, pattern);
boolean match = searcher.search();
List<AbstractInsnNode[]> matchedInsns = searched.getMatches();
find opcode/instruction patterns in code.
load jars from file or url
JarDownloader dl = new JarDownloader(new JarInfo(new File("jar.jar")));
boolean worked = dl.parse();
Map<String, ClassNode> nodes = dl.getContents();
JarDumper dumper = new JarDumper(contents);
dumper.dump(new File("out.jar"));
Add Analysers, store class, field and method data into HookMaps
A lot of filters
Refactorer refactorer = new Refactorer(hookMap, contents);
refactorer.run();
changes whole jars class, method and field names based on mapping data.
InstructionPrinter.consolePrint(methodName);
pretty prints
InstructionSearcher searcher = new InstructionSearcher(m.instructions, pattern);
boolean match = searcher.search();
List<AbstractInsnNode[]> matchedInsns = searched.getMatches();
find opcode/instruction patterns in code.
Sexy as fuck, I might start contributing to this once I'm done with Bytecode Viewer.
Nice, mine differs slightly:
public static void dumpJar(List<ClassNode> classes, Manifest manifest, String absolutePath) {
try (JarOutputStream jos = new JarOutputStream(new FileOutputStream(new File(absolutePath)), manifest)) {
for (ClassNode cn : classes) {
ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS);
jos.putNextEntry(new JarEntry(cn.name + ".class"));
cn.accept(writer);
jos.write(writer.toByteArray());
}
} catch (IOException e) {
e.printStackTrace();
}
}
Gotta have a manifest to make it runnable xD
Nice, mine differs slightly:
public static void dumpJar(List<ClassNode> classes, Manifest manifest, String absolutePath) {
try (JarOutputStream jos = new JarOutputStream(new FileOutputStream(new File(absolutePath)), manifest)) {
for (ClassNode cn : classes) {
ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS);
jos.putNextEntry(new JarEntry(cn.name + ".class"));
cn.accept(writer);
jos.write(writer.toByteArray());
}
} catch (IOException e) {
e.printStackTrace();
}
}
Gotta have a manifest to make it runnable xD
Very true! Haha
Log in to post a reply.