Skip to content

Commit 8545254

Browse files
committed
feat(obf): console improvements
1 parent 7c25310 commit 8545254

File tree

21 files changed

+420
-171
lines changed

21 files changed

+420
-171
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,5 @@ dev.skidfuscator.obfuscator/src/test/resources/test.jar.compressed
9292
dev.skidfuscator.obfuscator/src/test/resources/test.jar.compressed.json
9393

9494
dev.skidfuscator.obfuscator/src/test/resources/test.jar.compressed.skid
95+
96+
skidfuscator.log

dev.skidfuscator.client.standalone/src/main/java/dev/skidfuscator/obfuscator/SkidfuscatorMain.java

+1
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public static void main(String[] args) {
6060
false,
6161
false,
6262
false,
63+
false,
6364
false
6465
);
6566

dev.skidfuscator.client.standalone/src/main/java/dev/skidfuscator/obfuscator/command/ObfuscateCommand.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,19 @@ public class ObfuscateCommand implements Callable<Integer> {
7474
)
7575
private boolean fuckit;
7676

77+
@CommandLine.Option(
78+
names = {"-dbg", "--debug"},
79+
description = "Do not use!"
80+
)
81+
private boolean debug;
82+
7783
@CommandLine.Option(
7884
names = {"-notrack", "--notrack"},
7985
description = "If you do not wish to be part of analytics!"
8086
)
8187
private boolean notrack;
8288

89+
8390
@Override
8491
public Integer call() {
8592
/* Total number of processors or cores available to the JVM */
@@ -134,7 +141,7 @@ public Integer call() {
134141
" │ " + topMemory + " │",
135142
" └───────────────────────────────────────────┘",
136143
"",
137-
" Author: Ghast Version: 2.0.6 Today: "
144+
" Author: Ghast Version: 2.0.7 Today: "
138145
+ DateFormat.getDateTimeInstance().format(new Date(Instant.now().toEpochMilli())),
139146
""
140147
};
@@ -200,6 +207,7 @@ public Integer call() {
200207
.jmod(MiscUtil.getJavaVersion() > 8)
201208
.fuckit(fuckit)
202209
.config(config)
210+
.debug(debug)
203211
.renamer(false)
204212
.analytics(!notrack)
205213
.build();

dev.skidfuscator.commons/src/main/java/dev/skidfuscator/jghost/GhostHelper.java

+35-36
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
import dev.skidfuscator.jghost.tree.GhostClassNode;
77
import dev.skidfuscator.jghost.tree.GhostContents;
88
import dev.skidfuscator.jghost.tree.GhostLibrary;
9+
import dev.skidfuscator.logger.Logger;
910
import dev.skidfuscator.obfuscator.SkidfuscatorSession;
1011
import lombok.experimental.UtilityClass;
11-
import org.apache.log4j.Logger;
1212
import org.mapleir.app.service.ApplicationClassSource;
1313
import org.mapleir.asm.ClassHelper;
1414
import org.mapleir.asm.ClassNode;
@@ -24,29 +24,28 @@
2424

2525
@UtilityClass
2626
public class GhostHelper {
27-
private final Logger LOGGER = Logger.getLogger(GhostHelper.class);
28-
public ApplicationClassSource getLibraryClassSource(final SkidfuscatorSession session, final File file) {
29-
return getLibraryClassSource(session, file, false);
27+
public ApplicationClassSource getLibraryClassSource(final SkidfuscatorSession session, final Logger logger, final File file) {
28+
return getLibraryClassSource(session, logger, file, false);
3029
}
3130

32-
public ApplicationClassSource getJvm(final SkidfuscatorSession session, final File file) {
33-
return getLibraryClassSource(session, file, true);
31+
public ApplicationClassSource getJvm(final SkidfuscatorSession session, final Logger logger, final File file) {
32+
return getLibraryClassSource(session, logger, file, true);
3433
}
3534

36-
public ApplicationClassSource getJvm(final boolean fuckit, final File file) {
37-
return getLibraryClassSource(fuckit, file, true);
35+
public ApplicationClassSource getJvm(final Logger logger, final boolean fuckit, final File file) {
36+
return getLibraryClassSource(logger, fuckit, file, true);
3837
}
3938

40-
public ApplicationClassSource getJvm(final boolean fuckit, final File file, final File mappings) {
41-
return getLibraryClassSource(fuckit, file, mappings, true);
39+
public ApplicationClassSource getJvm(final Logger logger, final boolean fuckit, final File file, final File mappings) {
40+
return getLibraryClassSource(logger, fuckit, file, mappings, true);
4241
}
4342

44-
public GhostLibrary getLibrary(final File lib, boolean jre) {
45-
return getLibrary(lib, null, jre);
43+
public GhostLibrary getLibrary(final Logger logger, final File lib, boolean jre) {
44+
return getLibrary(logger, lib, null, jre);
4645
}
4746

48-
public GhostLibrary getLibrary(final File lib, final File folder, boolean jre) {
49-
LOGGER.info("[+] " + lib.getAbsolutePath());
47+
public GhostLibrary getLibrary(final Logger logger, final File lib, final File folder, boolean jre) {
48+
logger.post("[+] " + lib.getAbsolutePath());
5049

5150
final StringBuilder outputPath = new StringBuilder();
5251
if (folder != null) {
@@ -67,36 +66,36 @@ public GhostLibrary getLibrary(final File lib, final File folder, boolean jre) {
6766
final GhostLibrary library;
6867

6968
if (!output.exists()) {
70-
LOGGER.info("[?] Could not find mappings for " + lib.getAbsolutePath() + "... Creating...");
69+
logger.post("[?] Could not find mappings for " + lib.getAbsolutePath() + "... Creating...");
7170
output.getParentFile().mkdirs();
7271
output.getParentFile().mkdir();
73-
library = GhostHelper.createFromLibraryFile(lib);
74-
GhostHelper.saveLibraryFile(library, output);
75-
LOGGER.info("[✓] Creating mappings for " + lib.getAbsolutePath() + "!");
72+
library = GhostHelper.createFromLibraryFile(logger, lib);
73+
GhostHelper.saveLibraryFile(logger, library, output);
74+
logger.post("[✓] Creating mappings for " + lib.getAbsolutePath() + "!");
7675
} else {
77-
library = GhostHelper.readFromLibraryFile(output);
76+
library = GhostHelper.readFromLibraryFile(logger, output);
7877
}
7978

8079
return library;
8180
}
8281

83-
public ApplicationClassSource getLibraryClassSource(final SkidfuscatorSession session, final File lib, boolean jvm) {
84-
return importFile(session.isFuckIt(), getLibrary(lib, jvm));
82+
public ApplicationClassSource getLibraryClassSource(final SkidfuscatorSession session, final Logger logger, final File lib, boolean jvm) {
83+
return importFile(logger, session.isFuckIt(), getLibrary(logger, lib, jvm));
8584
}
8685

87-
public ApplicationClassSource getLibraryClassSource(final boolean fuckIt, final File lib, boolean jvm) {
88-
return importFile(fuckIt, getLibrary(lib, jvm));
86+
public ApplicationClassSource getLibraryClassSource(final Logger logger, final boolean fuckIt, final File lib, boolean jvm) {
87+
return importFile(logger, fuckIt, getLibrary(logger, lib, jvm));
8988
}
9089

91-
public ApplicationClassSource getLibraryClassSource(final SkidfuscatorSession session, final File lib, final File mappings, final boolean jvm) {
92-
return importFile(session.isFuckIt(), getLibrary(lib, mappings, jvm));
90+
public ApplicationClassSource getLibraryClassSource(final SkidfuscatorSession session, final Logger logger, final File lib, final File mappings, final boolean jvm) {
91+
return importFile(logger, session.isFuckIt(), getLibrary(logger, lib, mappings, jvm));
9392
}
9493

95-
public ApplicationClassSource getLibraryClassSource(final boolean fuckit, final File lib, final File mappings, final boolean jvm) {
96-
return importFile(fuckit, getLibrary(lib, mappings, jvm));
94+
public ApplicationClassSource getLibraryClassSource(final Logger logger, final boolean fuckit, final File lib, final File mappings, final boolean jvm) {
95+
return importFile(logger, fuckit, getLibrary(logger, lib, mappings, jvm));
9796
}
9897

99-
public ApplicationClassSource importFile(final boolean fuckit, final GhostLibrary library) {
98+
public ApplicationClassSource importFile(final Logger logger, final boolean fuckit, final GhostLibrary library) {
10099
/* Create a new library class source with superior to default priority */
101100
final ApplicationClassSource libraryClassSource = new ApplicationClassSource(
102101
"libraries",
@@ -107,12 +106,12 @@ public ApplicationClassSource importFile(final boolean fuckit, final GhostLibrar
107106
.stream()
108107
.map(e -> ClassHelper.create(e.read())).collect(Collectors.toList())
109108
);
110-
LOGGER.info("[✓] Imported " + library.getContents().getClasses().size() + " library classes...");
109+
logger.post("[✓] Imported " + library.getContents().getClasses().size() + " library classes...");
111110

112111
return libraryClassSource;
113112
}
114113

115-
public GhostLibrary readFromLibraryFile(final File file) {
114+
public GhostLibrary readFromLibraryFile(final Logger logger, final File file) {
116115
try {
117116
final FileReader fileReader = new FileReader(file);
118117
final GhostLibrary library = Ghost
@@ -121,12 +120,12 @@ public GhostLibrary readFromLibraryFile(final File file) {
121120
fileReader.close();
122121
return library;
123122
} catch (IOException e) {
124-
LOGGER.error("Failed to download library cache", e);
123+
logger.error("Failed to download library cache", e);
125124
return null;
126125
}
127126
}
128127

129-
public GhostLibrary createFromLibraryFile(final File file) {
128+
public GhostLibrary createFromLibraryFile(final Logger logger, final File file) {
130129
final JarInfo jarInfo = new JarInfo(file);
131130
final AbstractJarDownloader<ClassNode> downloader = file.getName().endsWith(".jmod")
132131
? new SingleJmodDownloader<>(jarInfo)
@@ -135,7 +134,7 @@ public GhostLibrary createFromLibraryFile(final File file) {
135134
try {
136135
downloader.download();
137136
} catch (IOException e) {
138-
LOGGER.error("Failed to download library", e);
137+
logger.error("Failed to download library", e);
139138
return null;
140139
}
141140

@@ -149,7 +148,7 @@ public GhostLibrary createFromLibraryFile(final File file) {
149148
ghostLibrary.setSha1(byteSource.hash(Hashing.sha1()).toString());
150149
ghostLibrary.setSha256(byteSource.hash(Hashing.sha256()).toString());
151150
} catch (Throwable e) {
152-
LOGGER.error("Failed to hash library", e);
151+
logger.error("Failed to hash library", e);
153152
return null;
154153
}
155154

@@ -161,14 +160,14 @@ public GhostLibrary createFromLibraryFile(final File file) {
161160
return ghostLibrary;
162161
}
163162

164-
public void saveLibraryFile(final GhostLibrary library, final File file) {
163+
public void saveLibraryFile(final Logger logger, final GhostLibrary library, final File file) {
165164
try {
166165
final FileWriter fileWriter = new FileWriter(file);
167166
final BufferedWriter writer = new BufferedWriter(fileWriter);
168167
writer.write(Ghost.gson().toJson(library, GhostLibrary.class));
169168
writer.close();
170169
} catch (IOException e) {
171-
LOGGER.error("Failed to download library cache", e);
170+
logger.error("Failed to download library cache", e);
172171
return;
173172
}
174173
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package dev.skidfuscator.logger;
2+
3+
public interface Logger {
4+
void log(String text);
5+
6+
void post(String text);
7+
8+
void warn(String text);
9+
10+
void debug(String text);
11+
12+
void style(String text);
13+
14+
void error(String text, Throwable e);
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package dev.skidfuscator.logger;
2+
3+
public interface TimedLogger extends Logger {
4+
void setDebug(boolean debug);
5+
}

dev.skidfuscator.commons/src/main/java/dev/skidfuscator/obfuscator/SkidfuscatorSession.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class SkidfuscatorSession {
2626

2727
private boolean lowCon;
2828
private boolean dex;
29-
29+
private boolean debug = false;
3030

3131
/**
3232
*
@@ -111,4 +111,8 @@ public boolean isAnalytics() {
111111
public boolean isDex() {
112112
return dex;
113113
}
114+
115+
public boolean isDebug() {
116+
return debug;
117+
}
114118
}

0 commit comments

Comments
 (0)