Skip to content

Commit

Permalink
split MethodDebugInfoCleanTransformer into smaller transformers
Browse files Browse the repository at this point in the history
  • Loading branch information
EpicPlayerA10 committed Sep 24, 2024
1 parent c1e6357 commit 0aa82f1
Show file tree
Hide file tree
Showing 10 changed files with 75 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public ComposedGeneralCleanTransformer() {
AnnotationCleanTransformer::new,
ClassDebugInfoCleanTransformer::new,
LineNumberCleanTransformer::new,
MethodDebugInfoCleanTransformer::new,
LocalVariableNamesCleanTransformer::new,
NopCleanTransformer::new,
StackOperationResolveTransformer::new,
TryCatchRepairTransformer::new,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import uwu.narumi.deobfuscator.api.transformer.ComposedTransformer;
import uwu.narumi.deobfuscator.core.other.impl.clean.ClassDebugInfoCleanTransformer;
import uwu.narumi.deobfuscator.core.other.impl.clean.MethodDebugInfoCleanTransformer;
import uwu.narumi.deobfuscator.core.other.impl.clean.LocalVariableNamesCleanTransformer;
import uwu.narumi.deobfuscator.core.other.impl.clean.SignatureCleanTransformer;
import uwu.narumi.deobfuscator.core.other.impl.clean.UnknownAttributeCleanTransformer;
import uwu.narumi.deobfuscator.core.other.impl.universal.AccessRepairTransformer;
Expand All @@ -18,7 +18,7 @@ public ComposedGeneralRepairTransformer() {
TryCatchRepairTransformer::new,
UnknownAttributeCleanTransformer::new,
SignatureCleanTransformer::new,
MethodDebugInfoCleanTransformer::new,
LocalVariableNamesCleanTransformer::new,
ClassDebugInfoCleanTransformer::new
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import uwu.narumi.deobfuscator.api.transformer.Transformer;

/**
* Remove invalid methods. WARNING: If some transformer will produce invalid bytecode in methods, this transformer will remove them.
* Remove invalid methods. WARNING: If some transformer produces invalid bytecode in methods, this transformer will remove them.
*/
public class InvalidMethodCleanTransformer extends Transformer {

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package uwu.narumi.deobfuscator.core.other.impl.clean;

import uwu.narumi.deobfuscator.api.asm.ClassWrapper;
import uwu.narumi.deobfuscator.api.context.Context;
import uwu.narumi.deobfuscator.api.transformer.Transformer;

/**
* Removes local variable names.
*/
public class LocalVariableNamesCleanTransformer extends Transformer {

@Override
protected void transform(ClassWrapper scope, Context context) throws Exception {
context.classes(scope).stream()
.flatMap(classWrapper -> classWrapper.methods().stream())
.forEach(methodNode -> {
methodNode.localVariables = null;
this.markChange();
});
}
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,13 @@
package uwu.narumi.deobfuscator.core.other.impl.clean;

import uwu.narumi.deobfuscator.api.asm.ClassWrapper;
import uwu.narumi.deobfuscator.api.context.Context;
import uwu.narumi.deobfuscator.api.transformer.Transformer;

public class MethodDebugInfoCleanTransformer extends Transformer {


@Override
protected void transform(ClassWrapper scope, Context context) throws Exception {
context.classes(scope).stream()
.flatMap(classWrapper -> classWrapper.methods().stream())
.forEach(
methodNode -> {
methodNode.parameters = null;
methodNode.localVariables = null;
methodNode.exceptions = null;
this.markChange();
});
import uwu.narumi.deobfuscator.api.transformer.ComposedTransformer;

public class MethodDebugInfoCleanTransformer extends ComposedTransformer {
public MethodDebugInfoCleanTransformer() {
super(
LocalVariableNamesCleanTransformer::new,
ParametersInfoCleanTransformer::new,
ThrowsExceptionCleanTransformer::new
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package uwu.narumi.deobfuscator.core.other.impl.clean;

import uwu.narumi.deobfuscator.api.asm.ClassWrapper;
import uwu.narumi.deobfuscator.api.context.Context;
import uwu.narumi.deobfuscator.api.transformer.Transformer;

/**
* Removes parameter info from methods
*/
public class ParametersInfoCleanTransformer extends Transformer {
@Override
protected void transform(ClassWrapper scope, Context context) throws Exception {
context.classes(scope).stream()
.flatMap(classWrapper -> classWrapper.methods().stream())
.forEach(methodNode -> {
methodNode.parameters = null;
this.markChange();
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public PeepholeCleanTransformer() {
UnUsedLabelCleanTransformer::new,
UselessGotosCleanTransformer::new,

// Pop ununsed local variables stores
// Pop unused local variables stores
PopUnUsedLocalVariablesTransformer::new,
// Remove useless POP instructions. This also cleans up garbage var stores from the PopUnUsedLocalVariablesTransformer
UselessPopCleanTransformer::new
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package uwu.narumi.deobfuscator.core.other.impl.clean;

import uwu.narumi.deobfuscator.api.asm.ClassWrapper;
import uwu.narumi.deobfuscator.api.context.Context;
import uwu.narumi.deobfuscator.api.transformer.Transformer;

/**
* Removes "throws Exception" from methods.
*/
public class ThrowsExceptionCleanTransformer extends Transformer {
@Override
protected void transform(ClassWrapper scope, Context context) throws Exception {
context.classes(scope).stream()
.flatMap(classWrapper -> classWrapper.methods().stream())
.forEach(methodNode -> {
methodNode.exceptions = null;
this.markChange();
});
}
}

This file was deleted.

0 comments on commit 0aa82f1

Please sign in to comment.