Skip to content

Commit 6c55388

Browse files
committed
Unique ahegao name generator
1 parent e59a2cf commit 6c55388

1 file changed

Lines changed: 12 additions & 7 deletions

File tree

  • dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/impl/misc

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/impl/misc/AhegaoTransformer.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import dev.skidfuscator.obfuscator.skidasm.builder.SkidFieldNodeBuilder;
99
import dev.skidfuscator.obfuscator.transform.AbstractTransformer;
1010
import dev.skidfuscator.obfuscator.util.RandomUtil;
11+
import org.apache.http.nio.entity.NFileEntity;
1112
import org.mapleir.asm.FieldNode;
1213
import org.mapleir.ir.TypeUtils;
1314
import org.mapleir.ir.cfg.BasicBlock;
@@ -26,10 +27,12 @@
2627
import java.util.Arrays;
2728
import java.util.List;
2829
import java.util.Stack;
30+
import java.util.concurrent.ThreadLocalRandom;
31+
import java.util.stream.Collectors;
2932

3033
public class AhegaoTransformer extends AbstractTransformer {
3134

32-
private static final String AHEGAO_FIELD_NAME = "nothing_to_see_here";
35+
private static final String DEFAULT_AHEGAO_FIELD_NAME = "nothing_to_see_here";
3336

3437
public AhegaoTransformer(Skidfuscator skidfuscator) {
3538
super(skidfuscator, "Ahegao");
@@ -46,15 +49,17 @@ void handle(final FinalClassTransformEvent event) {
4649
return;
4750
}
4851

49-
if (classNode.getFields().stream()
50-
.anyMatch(field -> field.getName().equals(AHEGAO_FIELD_NAME))) {
51-
this.skip();
52-
return;
53-
}
52+
List<String> fieldNames = classNode.getFields().stream()
53+
.map(FieldNode::getName)
54+
.collect(Collectors.toList());
55+
56+
String ahegaoName = DEFAULT_AHEGAO_FIELD_NAME;
57+
while (fieldNames.contains(ahegaoName))
58+
ahegaoName += (char) ThreadLocalRandom.current().nextInt(Character.MAX_CODE_POINT);
5459

5560
final FieldNode mapleNode = new SkidFieldNodeBuilder(skidfuscator, classNode)
5661
.access(Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC)
57-
.name(AHEGAO_FIELD_NAME)
62+
.name(ahegaoName)
5863
.desc("[Ljava/lang/String;")
5964
.signature(null)
6065
.value(null)

0 commit comments

Comments
 (0)