From c92f1aa4ba0c569490d5f2f7533349c66ac9d28c Mon Sep 17 00:00:00 2001 From: Thibaut Gautier Date: Sat, 23 Jul 2022 06:14:15 +0200 Subject: [PATCH] feat(obfuscator): added background analytics to *exclusively* track only the amount of users, nothing else! --- .../obfuscator/SkidfuscatorMain.java | 1 + .../obfuscator/command/ObfuscateCommand.java | 7 ++++ .../obfuscator/SkidfuscatorSession.java | 6 ++++ .../obfuscator/pom.xml | 5 +++ .../skidfuscator/obfuscator/Skidfuscator.java | 32 +++++++++++++++++++ .../impl/string/StringTransformer.java | 4 +-- .../dev/skidfuscator/test/SampleJarTest.java | 1 + 7 files changed, 54 insertions(+), 2 deletions(-) diff --git a/dev.skidfuscator.obfuscator/client/src/main/java/dev/skidfuscator/obfuscator/SkidfuscatorMain.java b/dev.skidfuscator.obfuscator/client/src/main/java/dev/skidfuscator/obfuscator/SkidfuscatorMain.java index 8a548a64..db35a533 100644 --- a/dev.skidfuscator.obfuscator/client/src/main/java/dev/skidfuscator/obfuscator/SkidfuscatorMain.java +++ b/dev.skidfuscator.obfuscator/client/src/main/java/dev/skidfuscator/obfuscator/SkidfuscatorMain.java @@ -52,6 +52,7 @@ public static void main(String[] args) { new File(System.getProperty("java.home"), "lib/rt.jar"), false, false, + false, false ); diff --git a/dev.skidfuscator.obfuscator/client/src/main/java/dev/skidfuscator/obfuscator/command/ObfuscateCommand.java b/dev.skidfuscator.obfuscator/client/src/main/java/dev/skidfuscator/obfuscator/command/ObfuscateCommand.java index 7e600378..6cfe2c54 100644 --- a/dev.skidfuscator.obfuscator/client/src/main/java/dev/skidfuscator/obfuscator/command/ObfuscateCommand.java +++ b/dev.skidfuscator.obfuscator/client/src/main/java/dev/skidfuscator/obfuscator/command/ObfuscateCommand.java @@ -67,6 +67,12 @@ public class ObfuscateCommand implements Callable { ) private boolean fuckit; + @CommandLine.Option( + names = {"-notrack", "--notrack"}, + description = "If you do not wish to be part of analytics!" + ) + private boolean notrack; + @Override public Integer call() { /* Total number of processors or cores available to the JVM */ @@ -157,6 +163,7 @@ public Integer call() { .phantom(phantom) .jmod(MiscUtil.getJavaVersion() > 8) .fuckit(fuckit) + .analytics(!notrack) .build(); final Skidfuscator skidfuscator = new Skidfuscator(skidInstance); diff --git a/dev.skidfuscator.obfuscator/commons/src/main/java/dev/skidfuscator/obfuscator/SkidfuscatorSession.java b/dev.skidfuscator.obfuscator/commons/src/main/java/dev/skidfuscator/obfuscator/SkidfuscatorSession.java index 48fc5de1..b46643f8 100644 --- a/dev.skidfuscator.obfuscator/commons/src/main/java/dev/skidfuscator/obfuscator/SkidfuscatorSession.java +++ b/dev.skidfuscator.obfuscator/commons/src/main/java/dev/skidfuscator/obfuscator/SkidfuscatorSession.java @@ -20,6 +20,8 @@ public class SkidfuscatorSession { private boolean jmod; private boolean fuckit; + private boolean analytics; + /** * * @return the input @@ -84,4 +86,8 @@ public boolean isJmod() { public boolean isFuckIt() { return fuckit; } + + public boolean isAnalytics() { + return analytics; + } } diff --git a/dev.skidfuscator.obfuscator/obfuscator/pom.xml b/dev.skidfuscator.obfuscator/obfuscator/pom.xml index 1518a25e..8a46180f 100644 --- a/dev.skidfuscator.obfuscator/obfuscator/pom.xml +++ b/dev.skidfuscator.obfuscator/obfuscator/pom.xml @@ -37,6 +37,11 @@ progressbar 0.9.3 + + com.github.matomo-org + matomo-java-tracker + v1.7 + com.github.Col-E jphantom diff --git a/dev.skidfuscator.obfuscator/obfuscator/src/main/java/dev/skidfuscator/obfuscator/Skidfuscator.java b/dev.skidfuscator.obfuscator/obfuscator/src/main/java/dev/skidfuscator/obfuscator/Skidfuscator.java index c9b4e8d6..0b163d6f 100644 --- a/dev.skidfuscator.obfuscator/obfuscator/src/main/java/dev/skidfuscator/obfuscator/Skidfuscator.java +++ b/dev.skidfuscator.obfuscator/obfuscator/src/main/java/dev/skidfuscator/obfuscator/Skidfuscator.java @@ -41,6 +41,7 @@ import dev.skidfuscator.obfuscator.transform.impl.number.NumberTransformer; import dev.skidfuscator.obfuscator.transform.impl.string.StringTransformer; import dev.skidfuscator.obfuscator.util.MapleJarUtil; +import dev.skidfuscator.obfuscator.util.MiscUtil; import dev.skidfuscator.obfuscator.util.ProgressUtil; import dev.skidfuscator.obfuscator.util.misc.Counter; import dev.skidfuscator.obfuscator.util.misc.TimedLogger; @@ -58,6 +59,9 @@ import org.mapleir.deob.dataflow.LiveDataFlowAnalysisImpl; import org.mapleir.ir.cfg.ControlFlowGraph; import org.objectweb.asm.Opcodes; +import org.piwik.java.tracking.CustomVariable; +import org.piwik.java.tracking.PiwikRequest; +import org.piwik.java.tracking.PiwikTracker; import org.topdank.byteengineer.commons.data.JarClassData; import org.topdank.byteio.in.AbstractJarDownloader; @@ -65,6 +69,7 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; +import java.net.URL; import java.util.*; import java.util.stream.Collectors; @@ -107,6 +112,33 @@ public Skidfuscator(SkidfuscatorSession session) { public void run() { LOGGER.post("Beginning Skidfuscator Community..."); + if (session.isAnalytics()) { + try { + final PiwikTracker tracker = new PiwikTracker( + "https://analytics.skidfuscator.dev/matomo.php" + ); + + final PiwikRequest request = new PiwikRequest( + 1, + null + ); + + final URL url = new URL("https://app.skidfuscator.dev"); + request.setActionUrl(url); + request.setActionName("skidfuscator/launch"); + + + request.setEventAction("launch"); + request.setEventCategory("skidfuscator/community"); + request.setEventName("Java"); + request.setEventValue(MiscUtil.getJavaVersion()); + + tracker.sendRequestAsync(request); + } catch (Exception e){ + //e.printStackTrace(); + } + } + /* * Initializes a null skid directory. This skid directory is used as a * cache or a temporary directory, most often for silly things such as diff --git a/dev.skidfuscator.obfuscator/obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/impl/string/StringTransformer.java b/dev.skidfuscator.obfuscator/obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/impl/string/StringTransformer.java index db2f426f..d459d21a 100644 --- a/dev.skidfuscator.obfuscator/obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/impl/string/StringTransformer.java +++ b/dev.skidfuscator.obfuscator/obfuscator/src/main/java/dev/skidfuscator/obfuscator/transform/impl/string/StringTransformer.java @@ -52,10 +52,10 @@ void handle(final RunMethodTransformEvent event) { Integer[] keysT = keyMap.get(parentNode); if (keysT == null) { - final int size = RandomUtil.nextInt(128); + final int size = RandomUtil.nextInt(127) + 1; keysT = new Integer[size]; for (int i = 0; i < size; i++) { - keysT[i] = RandomUtil.nextInt(128); + keysT[i] = RandomUtil.nextInt(127) + 1; } keyMap.put(parentNode, keysT); diff --git a/dev.skidfuscator.obfuscator/obfuscator/src/test/java/dev/skidfuscator/test/SampleJarTest.java b/dev.skidfuscator.obfuscator/obfuscator/src/test/java/dev/skidfuscator/test/SampleJarTest.java index 6f5bdc03..682fb4f6 100644 --- a/dev.skidfuscator.obfuscator/obfuscator/src/test/java/dev/skidfuscator/test/SampleJarTest.java +++ b/dev.skidfuscator.obfuscator/obfuscator/src/test/java/dev/skidfuscator/test/SampleJarTest.java @@ -44,6 +44,7 @@ public void test2() throws Exception { .output(output) .runtime(new File(System.getProperty("java.home"), "lib/rt.jar")) .phantom(true) + .analytics(false) .build(); final Skidfuscator skidfuscator = new Skidfuscator(session);