11package rs .lostcity .deob .bytecode ;
22
33import org .objectweb .asm .tree .ClassNode ;
4+ import org .openrs2 .asm .classpath .ClassPath ;
5+ import org .openrs2 .asm .classpath .Library ;
6+ import org .openrs2 .deob .bytecode .transform .*;
47import rs .lostcity .asm .transform .Transformer ;
58import rs .lostcity .deob .bytecode .transform .*;
69import org .tomlj .TomlArray ;
@@ -22,17 +25,48 @@ public BytecodeDeobfuscator(TomlParseResult profile) {
2225
2326 registerTransformer (new RlMathTransformer ());
2427 registerTransformer (new SortClassesLegacyTransformer ());
28+ registerTransformer (new StringDecryptionTransformer ());
2529
26- // openrs2
30+ // openrs2 (kotlin)
2731 registerTransformer (new BitShiftTransformer ());
32+ registerTransformer (new BitwiseOpTransformer ());
33+ registerTransformer (new CanvasTransformer ());
34+ registerTransformer (new ClassLiteralTransformer ());
35+ registerTransformer (new ConstantArgTransformer ());
36+ registerTransformer (new CopyPropagationTransformer ());
37+ registerTransformer (new CounterTransformer ());
38+ registerTransformer (new EmptyClassTransformer ());
2839 registerTransformer (new ExceptionObfuscationTransformer ());
2940 registerTransformer (new ExceptionTracingTransformer ());
3041 registerTransformer (new FernflowerExceptionTransformer ());
42+ registerTransformer (new FieldOrderTransformer ());
43+ registerTransformer (new FinalClassTransformer ());
44+ registerTransformer (new FinalFieldTransformer ());
45+ registerTransformer (new FinalMethodTransformer ());
46+ registerTransformer (new InvokeSpecialTransformer ());
47+ registerTransformer (new MethodOrderTransformer ());
3148 registerTransformer (new MonitorTransformer ());
49+ registerTransformer (new MultipleAssignmentTransformer ());
3250 registerTransformer (new OpaquePredicateTransformer ());
51+ registerTransformer (new OriginalNameTransformer ());
52+ registerTransformer (new OverrideTransformer ());
53+ registerTransformer (new ResetTransformer ());
3354 registerTransformer (new RedundantGotoTransformer ());
55+ registerTransformer (new UnusedArgTransformer ());
56+ registerTransformer (new UnusedLocalTransformer ());
57+ registerTransformer (new UnusedMethodTransformer ());
3458 registerTransformer (new VisibilityTransformer ());
3559
60+ // openrs2 (ported to java)
61+ registerTransformer (new BitShiftTransformerPort ());
62+ registerTransformer (new ExceptionObfuscationTransformerPort ());
63+ registerTransformer (new ExceptionTracingTransformerPort ());
64+ registerTransformer (new FernflowerExceptionTransformerPort ());
65+ registerTransformer (new MonitorTransformerPort ());
66+ registerTransformer (new OpaquePredicateTransformerPort ());
67+ registerTransformer (new RedundantGotoTransformerPort ());
68+ registerTransformer (new VisibilityTransformerPort ());
69+
3670 // zwyz
3771 registerTransformer (new AnnotationRemoverTransformer ()); // runelite
3872 registerTransformer (new DeleteInvokeDynamicTransformer ()); // runelite
@@ -67,6 +101,18 @@ public void run(List<ClassNode> classes) throws IOException {
67101
68102 Transformer transformer = this .allTransformers .get (name );
69103 if (transformer != null ) {
104+ // openrs2 compat:
105+ Library client = new Library ("client" );
106+ for (ClassNode clazz : classes ) {
107+ client .add (clazz );
108+ }
109+ ClassPath classpath = new ClassPath (
110+ ClassLoader .getPlatformClassLoader (),
111+ List .of (),
112+ List .of (client )
113+ );
114+ transformer .classPath = classpath ;
115+
70116 System .out .println ("Applying " + name + " transformer" );
71117 transformer .transform (classes );
72118 } else {
0 commit comments