Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<version>1.0.0</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<version.asm>9.5</version.asm>
<version.asm>9.8</version.asm>
<version.dude>1.10.2</version.dude>
</properties>
<build>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.javadeobfuscator.deobfuscator.transformers.normalizer;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.javadeobfuscator.deobfuscator.config.TransformerConfig;
import com.javadeobfuscator.deobfuscator.transformers.Transformer;

abstract public class AbstractAsciiKeepingNormalizer<T extends AbstractNormalizer.Config> extends AbstractNormalizer<T>{
protected static boolean containsAscii(String name) {
for (int i = 0; i < name.length(); i++) {
if (name.charAt(i) < 0x80) {
return true;
}
}
return false;
}


public static abstract class Config extends AbstractNormalizer.Config {
@JsonProperty(value = "keep-ascii-names")
private boolean keepAsciiNames;

public Config(Class<? extends Transformer<?>> implementation) {
super(implementation);
}

public boolean isKeepAsciiNames() {
return keepAsciiNames;
}

public void setKeepAsciiNames(boolean keepAsciiNames) {
this.keepAsciiNames = keepAsciiNames;
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,24 @@
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;

@TransformerConfig.ConfigOptions(configClass = AbstractNormalizer.Config.class)
public abstract class AbstractNormalizer<T extends AbstractNormalizer.Config> extends Transformer<T> {
@Override
public final boolean transform() throws Throwable {
CustomRemapper remapper = new CustomRemapper();

if (getConfig().getMappingInput() != null && getConfig().getMappingInput().exists()) {
remapper.loadMapping(getConfig().getMappingInput());
}

remap(remapper);

if (getConfig().getMappingOutput() != null) {
remapper.saveMapping(getConfig().getMappingOutput());
}

Map<String, ClassNode> updated = new HashMap<>();
Set<String> removed = new HashSet<>();

Expand All @@ -61,19 +70,30 @@ public final boolean transform() throws Throwable {
public abstract void remap(CustomRemapper remapper);

public static abstract class Config extends TransformerConfig {
@JsonProperty(value = "mapping-file")
private File mappingFile;
@JsonProperty(value = "mapping-input")
private File mappingInput;

@JsonProperty(value = "mapping-output")
private File mappingOutput;

public Config(Class<? extends Transformer<?>> implementation) {
super(implementation);
}

public File getMappingFile() {
return mappingFile;
public File getMappingInput() {
return mappingInput;
}

public void setMappingInput(File mappingInput) {
this.mappingInput = mappingInput;
}

public File getMappingOutput() {
return mappingOutput;
}

public void setMappingFile(File mappingFile) {
this.mappingFile = mappingFile;
public void setMappingOutput(File mappingOutput) {
this.mappingOutput = mappingOutput;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,21 @@
import java.util.concurrent.atomic.AtomicInteger;

@TransformerConfig.ConfigOptions(configClass = ClassNormalizer.Config.class)
public class ClassNormalizer extends AbstractNormalizer<ClassNormalizer.Config> {
public class ClassNormalizer extends AbstractAsciiKeepingNormalizer<ClassNormalizer.Config> {
@Override
public void remap(CustomRemapper remapper) {
AtomicInteger id = new AtomicInteger(0);
classNodes().forEach(classNode -> {


if (remapper.mappingExists(classNode.name)) {
return;
}

if (getConfig().isKeepAsciiNames()
&& containsAscii(classNode.name.substring(classNode.name.lastIndexOf('/') + 1))) {
return;
}

String newName = "Class";

if(classNode.name.contains("/")){
Expand All @@ -42,7 +51,7 @@ public void remap(CustomRemapper remapper) {
});
}

public static class Config extends AbstractNormalizer.Config {
public static class Config extends AbstractAsciiKeepingNormalizer.Config {
public Config() {
super(ClassNormalizer.class);
}
Expand Down
Loading