Skip to content

Commit f53968d

Browse files
committed
feat(obf): added counters
1 parent de804b5 commit f53968d

11 files changed

Lines changed: 119 additions & 20 deletions

File tree

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/Skidfuscator.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ public void run() {
270270
*
271271
* Here though shall puteth all your transformers. Enjoy!
272272
*/
273-
_loadTransformer();
273+
final List<Transformer> transformers = _loadTransformer();
274274

275275
LOGGER.log("Finished loading transformers...");
276276

@@ -299,7 +299,14 @@ public void run() {
299299
postTransform();
300300
finalTransform();
301301
LOGGER.log("Finished executing transformers...");
302-
System.out.println(ansi().cursorUpLine().append("└───────────────────────────────────────────────────────────────────┘").newline().newline());
302+
System.out.println(ansi().cursorUpLine().append("└───────────────────────────────────────────────────────────────────┘").newline());
303+
System.out.println("┌────────────────────────────[ Results ]────────────────────────────┐");
304+
305+
for (Transformer transformer : transformers) {
306+
System.out.println("│ " + pad(transformer.getResult(), 130) + "│");
307+
}
308+
System.out.println("└───────────────────────────────────────────────────────────────────┘\n\n");
309+
303310

304311
for (ProtectionProvider protectionProvider : protectionProviders) {
305312
if (!protectionProvider.shouldWarn())
@@ -607,18 +614,19 @@ protected void _importClasspath() {
607614
LOGGER.log("Finished importing classpath!");
608615
}
609616

610-
protected void _loadTransformer() {
617+
protected List<Transformer> _loadTransformer() {
611618
final List<Transformer> transformers = this.getTransformers();
612619
try (final ProgressWrapper wrapper = ProgressUtil.progressCheck(
613620
transformers.size(),
614621
"Loaded " + transformers.size() + " transformers!"
615622
)) {
616-
for (Transformer o : this.getTransformers()) {
623+
for (Transformer o : transformers) {
617624
EventBus.register(o);
618625
wrapper.tick();
619626
}
620627
}
621628

629+
return transformers;
622630
}
623631

624632
public List<Transformer> getTransformers() {

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/AbstractTransformer.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,22 @@
33
import dev.skidfuscator.obfuscator.Skidfuscator;
44
import dev.skidfuscator.config.DefaultTransformerConfig;
55
import dev.skidfuscator.obfuscator.event.EventBus;
6+
import dev.skidfuscator.obfuscator.util.ConsoleColors;
67
import dev.skidfuscator.obfuscator.util.MiscUtil;
78

89
import java.util.Collections;
910
import java.util.List;
1011

12+
import static org.fusesource.jansi.Ansi.ansi;
13+
1114
public abstract class AbstractTransformer implements Transformer {
1215
protected final Skidfuscator skidfuscator;
1316
protected final String name;
1417
private final DefaultTransformerConfig config;
1518
private final List<Transformer> children;
19+
private int success;
20+
private int skipped;
21+
private int failed;
1622

1723
public AbstractTransformer(Skidfuscator skidfuscator, String name) {
1824
this(skidfuscator, name, Collections.emptyList());
@@ -50,4 +56,38 @@ public String getName() {
5056
public List<Transformer> getChildren() {
5157
return children;
5258
}
59+
60+
public void success() {
61+
this.success++;
62+
}
63+
64+
public void fail() {
65+
this.failed++;
66+
}
67+
68+
public void skip() {
69+
this.skipped++;
70+
}
71+
72+
public int getSuccess() {
73+
return success;
74+
}
75+
76+
public int getSkipped() {
77+
return skipped;
78+
}
79+
80+
public int getFailed() {
81+
return failed;
82+
}
83+
84+
@Override
85+
public String getResult() {
86+
return "Executed " + ConsoleColors.CYAN + this.getName() + ConsoleColors.RESET
87+
+ " ["
88+
+ ConsoleColors.WHITE_BOLD + "Success: " + ConsoleColors.GREEN + success + ConsoleColors.RESET
89+
+ ConsoleColors.WHITE_BOLD + " Skipped: " + ConsoleColors.YELLOW + skipped + ConsoleColors.RESET
90+
+ ConsoleColors.WHITE_BOLD + " Failed: " + ConsoleColors.RED + failed + ConsoleColors.RESET
91+
+ "]";
92+
}
5393
}

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/Transformer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,9 @@ public interface Transformer extends Listener {
2626
* Registers the listener
2727
*/
2828
void register();
29+
30+
/**
31+
* @return Formatted ANSI string of the result of thr transformer
32+
*/
33+
String getResult();
2934
}

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/impl/SwitchTransformer.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,22 @@ public SwitchTransformer(Skidfuscator skidfuscator, List<Transformer> children)
4141
void handle(final RunMethodTransformEvent event) {
4242
final SkidMethodNode methodNode = event.getMethodNode();
4343

44-
if (methodNode.isAbstract() || methodNode.isInit())
44+
if (methodNode.isAbstract() || methodNode.isInit()) {
45+
this.skip();
4546
return;
47+
}
4648

47-
if (methodNode.node.instructions.size() > 10000)
49+
if (methodNode.node.instructions.size() > 10000) {
50+
this.fail();
4851
return;
52+
}
4953

5054
final ControlFlowGraph cfg = methodNode.getCfg();
5155

52-
if (cfg == null)
56+
if (cfg == null) {
57+
this.fail();
5358
return;
59+
}
5460

5561
cfg.vertices()
5662
.stream()
@@ -99,5 +105,6 @@ public Expr get(final BasicBlock vertex) {
99105
}
100106
}));
101107
});
108+
this.success();
102109
}
103110
}

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/impl/flow/BasicRangeTransformer.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,17 @@ public BasicRangeTransformer(Skidfuscator skidfuscator, List<Transformer> childr
7878
void handle(final RunMethodTransformEvent event) {
7979
final SkidMethodNode methodNode = event.getMethodNode();
8080

81-
if (methodNode.isAbstract() || methodNode.isInit())
81+
if (methodNode.isAbstract() || methodNode.isInit()) {
82+
this.skip();
8283
return;
84+
}
8385

8486
final ControlFlowGraph cfg = methodNode.getCfg();
8587

86-
if (cfg == null)
88+
if (cfg == null) {
89+
this.fail();
8790
return;
91+
}
8892

8993
for (BasicBlock entry : new HashSet<>(cfg.vertices())) {
9094
if (entry.size() == 0)
@@ -219,5 +223,7 @@ void handle(final RunMethodTransformEvent event) {
219223
new ConstantExpr(entry.getDisplayName() +" : var expect: " + var_const.getConstant())));
220224
*/
221225
}
226+
227+
this.success();
222228
}
223229
}

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/impl/flow/condition/BasicConditionTransformer.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,17 @@ public BasicConditionTransformer(Skidfuscator skidfuscator, List<Transformer> ch
4141
void handle(final RunMethodTransformEvent event) {
4242
final SkidMethodNode methodNode = event.getMethodNode();
4343

44-
if (methodNode.isAbstract() || methodNode.isInit())
44+
if (methodNode.isAbstract() || methodNode.isInit()) {
45+
this.skip();
4546
return;
47+
}
4648

4749
final SkidControlFlowGraph cfg = methodNode.getCfg();
4850

49-
if (cfg == null)
51+
if (cfg == null) {
52+
this.fail();
5053
return;
54+
}
5155

5256
for (BasicBlock parent : new HashSet<>(cfg.vertices())) {
5357
if (parent.size() == 0)
@@ -126,5 +130,7 @@ void handle(final RunMethodTransformEvent event) {
126130

127131
event.tick();
128132
}
133+
134+
this.success();
129135
}
130136
}

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/impl/flow/driver/DriverTransformer.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,10 @@ void handle(final RunMethodTransformEvent event) {
5555
&& methodNode.owner.node.innerClasses
5656
.stream().anyMatch(e -> e.name.equals(methodNode.owner.node.name)));
5757

58-
if (exempt)
58+
if (exempt) {
59+
this.skip();
5960
return;
61+
}
6062

6163
final MethodOpaquePredicate methodPredicate = methodNode.getPredicate();
6264
methodPredicate.setGetter(new PredicateFlowGetter() {
@@ -158,6 +160,8 @@ public Expr get(BasicBlock vertex) {
158160
);
159161
}
160162
});
163+
164+
this.success();
161165
}
162166

163167
@Listen
@@ -187,6 +191,7 @@ else if (instruction instanceof FieldInsnNode) {
187191
}
188192
}
189193
} catch (Exception e) {
194+
this.fail();
190195
Skidfuscator.LOGGER.error("Failed to create dispatcher. This WILL cause issues!", e);
191196
return;
192197
}

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/impl/flow/exception/BasicExceptionTransformer.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,10 @@ void handle(final RunMethodTransformEvent event) {
6060
MethodExempt.ABSTRACT,
6161
MethodExempt.INIT,
6262
MethodExempt.NULLCFG
63-
))
63+
)) {
64+
this.skip();
6465
return;
66+
}
6567

6668
final SkidControlFlowGraph cfg = methodNode.getCfg();
6769
final StrengthStrategy strategy;
@@ -190,6 +192,8 @@ void handle(final RunMethodTransformEvent event) {
190192
changed.getAndIncrement();
191193
strategy.reset();
192194
}
195+
196+
this.success();
193197
}
194198

195199
@Override

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@ void handle(final FinalClassTransformEvent event) {
3838

3939
if (classNode.isEnum()
4040
|| classNode.isInterface()
41-
|| classNode.isAnnotation())
41+
|| classNode.isAnnotation()) {
42+
this.skip();
4243
return;
44+
}
4345

4446
final FieldNode mapleNode = new SkidFieldNodeBuilder(skidfuscator, classNode)
4547
.access(Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC)
@@ -106,6 +108,7 @@ void handle(final FinalClassTransformEvent event) {
106108
}
107109

108110
event.tick();
111+
this.success();
109112
}
110113

111114
private static final List<String[]> ahegaos = Arrays.asList(

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/impl/number/NumberTransformer.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,22 @@ void handle(final PostMethodTransformEvent event) {
5151
final SkidMethodNode methodNode = event.getMethodNode();
5252
final Skidfuscator skidfuscator = event.getSkidfuscator();
5353

54-
if (methodNode.isAbstract() || methodNode.isInit())
54+
if (methodNode.isAbstract() || methodNode.isInit()) {
55+
this.skip();
5556
return;
57+
}
5658

57-
if (methodNode.node.instructions.size() > 10000)
59+
if (methodNode.node.instructions.size() > 10000) {
60+
this.fail();
5861
return;
62+
}
5963

6064
final SkidControlFlowGraph cfg = methodNode.getCfg();
6165

62-
if (cfg == null)
66+
if (cfg == null) {
67+
this.fail();
6368
return;
69+
}
6470

6571
for (BasicBlock vertex : new HashSet<>(cfg.vertices())) {
6672
if (vertex.isFlagSet(SkidBlock.FLAG_NO_OPAQUE))
@@ -116,5 +122,7 @@ void handle(final PostMethodTransformEvent event) {
116122
}
117123
}
118124
}
125+
126+
this.success();
119127
}
120128
}

0 commit comments

Comments
 (0)