Skip to content

Commit fd27d70

Browse files
committed
qol: improve UI and add better logging
1 parent 0169a74 commit fd27d70

13 files changed

Lines changed: 79 additions & 19 deletions

File tree

dev.skidfuscator.client.standalone/src/main/java/dev/skidfuscator/obfuscator/util/LogoUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public static void printLogo() {
6161
" │ " + topMemory + " │",
6262
" └───────────────────────────────────────────┘",
6363
"",
64-
" Author: Ghast Version: 2.0.10 Today: "
64+
" Author: Ghast Version: 2.0.11 Today: "
6565
+ DateFormat.getDateTimeInstance().format(new Date(Instant.now().toEpochMilli())),
6666
""
6767
};

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

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import dev.skidfuscator.obfuscator.dependency.matcher.DependencyMatcher;
1414
import dev.skidfuscator.obfuscator.directory.SkiddedDirectory;
1515
import dev.skidfuscator.obfuscator.event.EventBus;
16+
import dev.skidfuscator.obfuscator.event.impl.TransformEvent;
1617
import dev.skidfuscator.obfuscator.event.impl.transform.ClassTransformEvent;
1718
import dev.skidfuscator.obfuscator.event.impl.transform.GroupTransformEvent;
1819
import dev.skidfuscator.obfuscator.event.impl.transform.MethodTransformEvent;
@@ -52,6 +53,7 @@
5253
import dev.skidfuscator.obfuscator.transform.impl.string.StringEncryptionType;
5354
import dev.skidfuscator.obfuscator.transform.impl.string.StringTransformer;
5455
import dev.skidfuscator.obfuscator.transform.impl.string.StringTransformerV2;
56+
import dev.skidfuscator.obfuscator.util.ConsoleColors;
5557
import dev.skidfuscator.obfuscator.util.MapleJarUtil;
5658
import dev.skidfuscator.obfuscator.util.MiscUtil;
5759
import dev.skidfuscator.obfuscator.util.ProgressUtil;
@@ -850,12 +852,14 @@ interface Caller {
850852
}
851853

852854
private void run(final String phaseName, final Caller caller) {
855+
final List<String> issues = new ArrayList<>();
853856
final SkidTransformEvent event = caller.callBase();
854857
EventBus.call(event);
858+
issues.addAll(event.getIssues());
855859

856860
try (ProgressWrapper progressBar = ProgressUtil.progressCheck(
857861
hierarchy.getClasses().size(),
858-
pad("Running phase [" + phaseName + "] on " + hierarchy.getClasses().size() + " classes", 63) + "│",
862+
pad("Running phase [" + phaseName + "] on " + hierarchy.getClasses().size() + " classes", 62) + "│",
859863
"│ "
860864
)){
861865
for (ClassNode ccls : hierarchy.getClasses()) {
@@ -866,8 +870,9 @@ private void run(final String phaseName, final Caller caller) {
866870
continue;
867871
}
868872

873+
final TransformEvent classEvent = caller.callClass(classNode);
869874
EventBus.call(
870-
caller.callClass(classNode),
875+
classEvent,
871876
el -> {
872877
final Class<?> listener = el.getListener().getClass();
873878
return !Transformer.class.isAssignableFrom(listener)
@@ -877,13 +882,15 @@ private void run(final String phaseName, final Caller caller) {
877882
);
878883
}
879884
);
885+
issues.addAll(classEvent.getIssues());
880886
progressBar.tick();
881887
}
882888
}
883889

890+
884891
try (ProgressWrapper progressBar = ProgressUtil.progressCheck(
885892
hierarchy.getGroups().size(),
886-
pad("Running phase [" + phaseName + "] on " + hierarchy.getGroups().size() + " method groups", 63) + "│",
893+
pad("Running phase [" + phaseName + "] on " + hierarchy.getGroups().size() + " method groups", 62) + "│",
887894
"│ "
888895
)){
889896
for (SkidGroup group : hierarchy.getGroups()) {
@@ -892,8 +899,9 @@ private void run(final String phaseName, final Caller caller) {
892899
continue;
893900
}
894901

902+
final TransformEvent groupEvent = caller.callGroup(group);
895903
EventBus.call(
896-
caller.callGroup(group),
904+
groupEvent,
897905
el -> {
898906
final Class<?> listenerClazz = el.getListener().getClass();
899907
return !Transformer.class.isAssignableFrom(listenerClazz)
@@ -911,6 +919,7 @@ private void run(final String phaseName, final Caller caller) {
911919
);
912920
}
913921
);
922+
issues.addAll(groupEvent.getIssues());
914923
progressBar.tick();
915924
}
916925
}
@@ -919,7 +928,7 @@ private void run(final String phaseName, final Caller caller) {
919928

920929
try (ProgressWrapper progressBar = ProgressUtil.progressCheck(
921930
size,
922-
pad("Running phase [" + phaseName + "] on " + size + " methods", 63) + "│",
931+
pad("Running phase [" + phaseName + "] on " + size + " methods", 62) + "│",
923932
"│ "
924933
)){
925934
for (ClassNode ccls : hierarchy.getClasses()) {
@@ -949,8 +958,9 @@ private void run(final String phaseName, final Caller caller) {
949958
continue;
950959
}
951960

961+
final TransformEvent methodEvent = caller.callMethod(methodNode);
952962
EventBus.call(
953-
caller.callMethod(methodNode),
963+
methodEvent,
954964
el -> {
955965
final Class<?> listenerClazz = el.getListener().getClass();
956966
return !Transformer.class.isAssignableFrom(listenerClazz)
@@ -960,11 +970,27 @@ private void run(final String phaseName, final Caller caller) {
960970
);
961971
}
962972
);
973+
issues.addAll(methodEvent.getIssues());
963974
methodNode.getCfg().recomputeEdges();
964975
progressBar.tick();
965976
}
966977
}
967978
}
979+
980+
System.out.println(ansi().cursorUpLine()
981+
.append("│ ")
982+
.append(pad(String.format(
983+
"Found " + ConsoleColors.RED + "%d " + ConsoleColors.RESET + "issues | " + " Modified " + ConsoleColors.YELLOW + "%d" + ConsoleColors.RESET,
984+
issues.size(), event.getChanged()
985+
), 87))
986+
.append("│"));
987+
issues.forEach(e -> System.out.println("│ --> " + pad(e, 61) + "│"));
988+
989+
if (!phaseName.equals("Finalize")) {
990+
System.out.println("│───────────────────────────────────────────────────────────────────│\n");
991+
} else {
992+
System.out.println("");
993+
}
968994
}
969995

970996
private static String getBaseName(String fn) {

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/creator/SkidFlowGraphDumper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1608,7 +1608,7 @@ private void dumpRange(ExceptionRange<BasicBlock> er) {
16081608
int rangeIdx = -1, orderIdx;
16091609
do {
16101610
if (++rangeIdx == range.size()) {
1611-
System.err.println("[warn] range is absent: " + m);
1611+
//System.err.println("[warn] range is absent: " + m);
16121612
return;
16131613
}
16141614
BasicBlock b = range.get(rangeIdx);

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/event/impl/TransformEvent.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,14 @@
22

33
import dev.skidfuscator.obfuscator.Skidfuscator;
44

5+
import java.util.ArrayList;
6+
import java.util.Collections;
7+
import java.util.List;
8+
import java.util.Set;
9+
510
public abstract class TransformEvent extends Event {
611
private int changed;
12+
private final List<String> issues = new ArrayList<>();
713

814
public TransformEvent(Skidfuscator skidfuscator) {
915
super(skidfuscator);
@@ -12,4 +18,16 @@ public TransformEvent(Skidfuscator skidfuscator) {
1218
public void tick() {
1319
changed++;
1420
}
21+
22+
public int getChanged() {
23+
return changed;
24+
}
25+
26+
public void warn(String issue) {
27+
issues.add(issue);
28+
}
29+
30+
public List<String> getIssues() {
31+
return Collections.unmodifiableList(issues);
32+
}
1533
}

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/exempt/ExclusionHelper.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ public Exclusion renderExclusion(final String pattern) {
5959
else {
6060
if (c == '}') {
6161
final String matcher = padded.toString();
62+
if (matcher.isEmpty()) {
63+
throw new IllegalArgumentException("Empty matcher! What is going on? PATTERN: " + pattern);
64+
}
6265
final String[] split = matcher.contains(" ")
6366
? matcher.split(" ")
6467
: new String[]{matcher};

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/hierarchy/SkidHierarchy.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,10 @@ public void cache() {
212212
return skidfuscator.getClassSource().isApplicationClass(e.getName());
213213
})
214214
.filter(e -> !skidfuscator.getExemptAnalysis().isExempt(e))
215+
/*.filter(e -> {
216+
System.out.println("Caching " + e.getName());
217+
return true;
218+
})*/
215219
.collect(Collectors.toList());
216220
}
217221

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/phantom/jphantom/PhantomResolvingJarDumper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public int dumpClass(JarOutputStream out, JarClassData classData) throws IOExcep
122122
ClassTree tree = source.getClassTree();
123123
for(MethodNode m : cn.getMethods()) {
124124
if(m.node.instructions.size() > 10000) {
125-
System.out.println("large method: " + m + " @" + m.node.instructions.size());
125+
//System.out.println("large method: " + m + " @" + m.node.instructions.size());
126126
}
127127
}
128128

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/predicate/renderer/IntegerBlockPredicateRenderer.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,12 @@ void handle(final PostMethodTransformEvent event) {
675675
final BasicBlock entryPoint = methodNode.getEntryBlock();
676676
final SkidBlock seedEntry = (SkidBlock) entryPoint;
677677
cfg.recomputeEdges();
678-
cfg.verify();
678+
679+
try {
680+
cfg.verify();
681+
} catch (Exception e) {
682+
event.warn("Failed to verify CFG for method " + methodNode.getName());
683+
}
679684

680685
/*
681686
* ____ __
@@ -867,7 +872,11 @@ void handle(final PostMethodTransformEvent event) {
867872
System.out.println(cfg.toString());
868873
}
869874
cfg.recomputeEdges();
870-
cfg.verify();
875+
try {
876+
cfg.verify();
877+
} catch (Exception e) {
878+
event.warn("Failed to verify post-CFG for method " + methodNode.getName());
879+
}
871880

872881
return;
873882
}

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/skidasm/cfg/SkidControlFlowGraph.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,13 @@ public void verify() {
7979
final File output = new File("skidfuscator-error-" + RandomUtil.randomAlphabeticalString(3) + ".txt");
8080
try {
8181
Files.write(output.toPath(), this.toString().getBytes(StandardCharsets.UTF_8));
82-
Skidfuscator.LOGGER.warn( "-----------------------------------------------------\n"
82+
/*Skidfuscator.LOGGER.warn( "-----------------------------------------------------\n"
8383
+ "/!\\ Skidfuscator failed to verify an obfuscated method!\n"
8484
+ "Please use the following debug information and send it to Ghast#0001\n"
8585
+ "\n"
8686
+ "File " + output.getAbsolutePath()
8787
+ "\n"
88-
);
88+
);*/
8989
} catch (IOException ex) {
9090
Skidfuscator.LOGGER.warn( "-----------------------------------------------------\n"
9191
+ "/!\\ Skidfuscator failed to verify an obfuscated method!\n"

dev.skidfuscator.obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/impl/string/generator/v3/ByteBufferClinitV3EncryptionGenerator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@ public void visitPost(SkidClassNode node) {
5656

5757
));
5858

59-
System.out.println(String.format(
59+
/*System.out.println(String.format(
6060
"Generated buffer with %d chars and %d index in %s",
6161
buffer.length(),
6262
bufferIndex,
6363
node.getName()
64-
));
64+
));*/
6565
}
6666

6767
@Override

0 commit comments

Comments
 (0)