mirror of
https://github.com/2006-Scape/Parabot.git
synced 2026-07-06 08:39:33 +00:00
[TASK] Reverted class adapter
This commit is contained in:
@@ -20,7 +20,7 @@ public class RedirectClassAdapter extends ClassVisitor implements Opcodes {
|
|||||||
|
|
||||||
private String className;
|
private String className;
|
||||||
|
|
||||||
private static PrintStream str_out, class_out, dec_out;
|
private static PrintStream str_out, class_out;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
redirects.put("java/awt/Toolkit", ToolkitRedirect.class);
|
redirects.put("java/awt/Toolkit", ToolkitRedirect.class);
|
||||||
@@ -32,7 +32,6 @@ public class RedirectClassAdapter extends ClassVisitor implements Opcodes {
|
|||||||
StackTraceElementRedirect.class);
|
StackTraceElementRedirect.class);
|
||||||
redirects.put("java/lang/ProcessBuilder", ProcessBuilderRedirect.class);
|
redirects.put("java/lang/ProcessBuilder", ProcessBuilderRedirect.class);
|
||||||
redirects.put("java/lang/System", SystemRedirect.class);
|
redirects.put("java/lang/System", SystemRedirect.class);
|
||||||
redirects.put("java/io/File", FileRedirect.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public RedirectClassAdapter(ClassVisitor cv) {
|
public RedirectClassAdapter(ClassVisitor cv) {
|
||||||
@@ -40,31 +39,26 @@ public class RedirectClassAdapter extends ClassVisitor implements Opcodes {
|
|||||||
if (str_out == null && Core.shouldDump())
|
if (str_out == null && Core.shouldDump())
|
||||||
try {
|
try {
|
||||||
str_out = new PrintStream(new FileOutputStream(new File(Directories.getWorkspace(),"strings.txt")));
|
str_out = new PrintStream(new FileOutputStream(new File(Directories.getWorkspace(),"strings.txt")));
|
||||||
dec_out = new PrintStream(new FileOutputStream(new File(Directories.getWorkspace(),"decrypted_strings.txt")));
|
} catch (FileNotFoundException e) {
|
||||||
} catch (FileNotFoundException e) {
|
e.printStackTrace();
|
||||||
// TODO Auto-generated catch block
|
}
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(class_out == null && Core.shouldDump())
|
if(class_out == null && Core.shouldDump())
|
||||||
try {
|
try {
|
||||||
class_out = new PrintStream(new FileOutputStream(new File(Directories.getWorkspace(),"classes.txt")));
|
class_out = new PrintStream(new FileOutputStream(new File(Directories.getWorkspace(),"classes.txt")));
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
// TODO Auto-generated catch block
|
e.printStackTrace();
|
||||||
e.printStackTrace();
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visit(int version, int access, String name, String signature,
|
public void visit(int version, int access, String name, String signature,
|
||||||
String superName, String[] interfaces) {
|
String superName, String[] interfaces) {
|
||||||
this.className = name;
|
this.className = name;
|
||||||
super.visit(version, access, name, signature, superName, interfaces);
|
super.visit(version, access, name, signature, superName, interfaces);
|
||||||
if(class_out != null) {
|
if(class_out != null)
|
||||||
class_out.println(className + " References:");
|
class_out.println(className + " References:");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitEnd(){
|
public void visitEnd(){
|
||||||
super.visitEnd();
|
super.visitEnd();
|
||||||
@@ -76,7 +70,7 @@ public class RedirectClassAdapter extends ClassVisitor implements Opcodes {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MethodVisitor visitMethod(int access, String name, String desc,
|
public MethodVisitor visitMethod(int access, String name, String desc,
|
||||||
String signature, String[] exceptions) {
|
String signature, String[] exceptions) {
|
||||||
return new ReflectionMethodVisitor(name, desc, super.visitMethod(
|
return new ReflectionMethodVisitor(name, desc, super.visitMethod(
|
||||||
access, name, desc, signature, exceptions));
|
access, name, desc, signature, exceptions));
|
||||||
}
|
}
|
||||||
@@ -84,45 +78,43 @@ public class RedirectClassAdapter extends ClassVisitor implements Opcodes {
|
|||||||
private class ReflectionMethodVisitor extends MethodVisitor {
|
private class ReflectionMethodVisitor extends MethodVisitor {
|
||||||
|
|
||||||
public ReflectionMethodVisitor(String name, String desc,
|
public ReflectionMethodVisitor(String name, String desc,
|
||||||
MethodVisitor mv) {
|
MethodVisitor mv) {
|
||||||
super(ASM5, mv);
|
super(ASM5, mv);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitLdcInsn(Object o) {
|
public void visitLdcInsn(Object o) {
|
||||||
if (o instanceof String && str_out != null) {
|
if (o instanceof String && str_out != null) {
|
||||||
str_out.println(className + " " + o);
|
str_out.println(className + " " + o);
|
||||||
if (!className.toLowerCase().contains("parabot")) {
|
}
|
||||||
dec_out.println(o + ":");
|
|
||||||
dec_out.println();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
super.visitLdcInsn(o);
|
super.visitLdcInsn(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitMethodInsn(int opcode, String owner, String name,
|
public void visitMethodInsn(int opcode, String owner, String name,
|
||||||
String desc) {
|
String desc) {
|
||||||
if (Core.isSecure()) {
|
if (Core.isSecure()) {
|
||||||
if (redirects.containsKey(owner) && !name.equals("<init>")
|
if (redirects.containsKey(owner) && !name.equals("<init>")
|
||||||
&& !name.equals("<clinit>")) {
|
&& !name.equals("<clinit>")) {
|
||||||
if (opcode != INVOKESTATIC)
|
if (opcode != INVOKESTATIC) {
|
||||||
desc = "(L" + owner + ";" + desc.substring(1);
|
desc = "(L" + owner + ";" + desc.substring(1);
|
||||||
|
}
|
||||||
opcode = INVOKESTATIC;
|
opcode = INVOKESTATIC;
|
||||||
owner = redirects.get(owner).getName()
|
owner = redirects.get(owner).getName()
|
||||||
.replaceAll("\\.", "/");
|
.replaceAll("\\.", "/");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(class_out != null)
|
if(class_out != null) {
|
||||||
class_out.println(owner);
|
class_out.println(owner);
|
||||||
|
}
|
||||||
|
|
||||||
super.visitMethodInsn(opcode, owner, name, desc);
|
super.visitMethodInsn(opcode, owner, name, desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitFieldInsn(int opcode, String owner, String name,
|
public void visitFieldInsn(int opcode, String owner, String name,
|
||||||
String desc){
|
String desc){
|
||||||
if (Core.isSecure() && (opcode == GETSTATIC || opcode == PUTSTATIC)) {
|
if (Core.isSecure() && (opcode == GETSTATIC || opcode == PUTSTATIC)) {
|
||||||
if (redirects.containsKey(owner)) {
|
if (redirects.containsKey(owner)) {
|
||||||
owner = redirects.get(owner).getName()
|
owner = redirects.get(owner).getName()
|
||||||
@@ -133,7 +125,7 @@ public class RedirectClassAdapter extends ClassVisitor implements Opcodes {
|
|||||||
class_out.println(owner);
|
class_out.println(owner);
|
||||||
super.visitFieldInsn(opcode, owner, name, desc);
|
super.visitFieldInsn(opcode, owner, name, desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SecurityException createSecurityException() {
|
public static SecurityException createSecurityException() {
|
||||||
|
|||||||
Reference in New Issue
Block a user