From e4f6aa6d07deaa8b74c76a4a3676379dc8634244 Mon Sep 17 00:00:00 2001
From: 4ra1n <2023503307@qq.com>
Date: Mon, 22 Apr 2024 16:06:59 +0800
Subject: [PATCH 1/5] =?UTF-8?q?=E7=AE=80=E5=8D=95=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 3 +-
.idea/.gitignore | 8 -
.idea/encodings.xml | 7 -
.idea/inspectionProfiles/Project_Default.xml | 5 -
.idea/misc.xml | 13 --
.idea/uiDesigner.xml | 124 -------------
.idea/vcs.xml | 6 -
README.md | 6 +-
check-version.bat | 2 +
dependency-reduced-pom.xml | 36 ----
.../001.png | Bin
.../002.png | Bin
.../003.png | Bin
pom.xml | 134 ++++++++++++--
src/main/java/me/n1ar4/log/Log.java | 49 ++++++
src/main/java/me/n1ar4/log/LogLevel.java | 8 +
src/main/java/me/n1ar4/log/LogManager.java | 13 ++
src/main/java/me/n1ar4/log/LogUtil.java | 26 +++
src/main/java/me/n1ar4/log/Logger.java | 57 ++++++
src/main/java/me/n1ar4/log/LoggingStream.java | 46 +++++
src/main/java/org/vidar/Main.java | 166 ++++++++++++++++++
src/main/java/org/vidar/Obfer.java | 164 -----------------
22 files changed, 487 insertions(+), 386 deletions(-)
delete mode 100644 .idea/.gitignore
delete mode 100644 .idea/encodings.xml
delete mode 100644 .idea/inspectionProfiles/Project_Default.xml
delete mode 100644 .idea/misc.xml
delete mode 100644 .idea/uiDesigner.xml
delete mode 100644 .idea/vcs.xml
create mode 100644 check-version.bat
delete mode 100644 dependency-reduced-pom.xml
rename "images/\346\210\252\345\261\2172023-09-14 14.37.03.png" => images/001.png (100%)
rename "images/\346\210\252\345\261\2172023-09-14 14.40.54.png" => images/002.png (100%)
rename "images/\346\210\252\345\261\2172023-09-14 14.41.46.png" => images/003.png (100%)
create mode 100644 src/main/java/me/n1ar4/log/Log.java
create mode 100644 src/main/java/me/n1ar4/log/LogLevel.java
create mode 100644 src/main/java/me/n1ar4/log/LogManager.java
create mode 100644 src/main/java/me/n1ar4/log/LogUtil.java
create mode 100644 src/main/java/me/n1ar4/log/Logger.java
create mode 100644 src/main/java/me/n1ar4/log/LoggingStream.java
create mode 100644 src/main/java/org/vidar/Main.java
delete mode 100644 src/main/java/org/vidar/Obfer.java
diff --git a/.gitignore b/.gitignore
index d2d60bc..d05c64c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,4 +35,5 @@ build/
.vscode/
### Mac OS ###
-.DS_Store
\ No newline at end of file
+.DS_Store
+idea/
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 13566b8..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
deleted file mode 100644
index aa00ffa..0000000
--- a/.idea/encodings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
deleted file mode 100644
index 8d66637..0000000
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 77b8337..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
deleted file mode 100644
index 2b63946..0000000
--- a/.idea/uiDesigner.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
- -
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/README.md b/README.md
index 54149f4..2042a72 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ java -jar JSource-Obfuscator-1.0-SNAPSHOT.jar --path /Users/1ue/Downloads/obf-te
使用JSource-Obfuscator加密如下示例代码
-![截屏2023-09-14 14.37.03](images/%E6%88%AA%E5%B1%8F2023-09-14%2014.37.03.png)
+![](images/001.png)
```
% java -jar JSource-Obfuscator-1.0-SNAPSHOT.jar --path /Users/zhchen/Downloads/obf-test/src/main/java
@@ -43,10 +43,10 @@ finished!!!
混淆后的代码大致如下
-![截屏2023-09-14 14.40.54](images/%E6%88%AA%E5%B1%8F2023-09-14%2014.40.54.png)
+![](images/002.png)
并且正常运行
-![截屏2023-09-14 14.41.46](images/%E6%88%AA%E5%B1%8F2023-09-14%2014.41.46.png)
+![](images/003.png)
diff --git a/check-version.bat b/check-version.bat
new file mode 100644
index 0000000..7e234ee
--- /dev/null
+++ b/check-version.bat
@@ -0,0 +1,2 @@
+@echo off
+mvn versions:display-dependency-updates
\ No newline at end of file
diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml
deleted file mode 100644
index 4fcdc2b..0000000
--- a/dependency-reduced-pom.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
- 4.0.0
- org.vidar
- JSource-Obfuscator
- 1.0-SNAPSHOT
-
-
-
- maven-shade-plugin
- 3.2.4
-
-
- package
-
- shade
-
-
-
-
- org.vidar.Obfer
-
-
-
-
-
-
-
-
-
-
- UTF-8
- 8
- 8
-
-
diff --git "a/images/\346\210\252\345\261\2172023-09-14 14.37.03.png" b/images/001.png
similarity index 100%
rename from "images/\346\210\252\345\261\2172023-09-14 14.37.03.png"
rename to images/001.png
diff --git "a/images/\346\210\252\345\261\2172023-09-14 14.40.54.png" b/images/002.png
similarity index 100%
rename from "images/\346\210\252\345\261\2172023-09-14 14.40.54.png"
rename to images/002.png
diff --git "a/images/\346\210\252\345\261\2172023-09-14 14.41.46.png" b/images/003.png
similarity index 100%
rename from "images/\346\210\252\345\261\2172023-09-14 14.41.46.png"
rename to images/003.png
diff --git a/pom.xml b/pom.xml
index f4031f5..10f5b8e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,65 +5,161 @@
4.0.0
org.vidar
- JSource-Obfuscator
+ JSO
1.0-SNAPSHOT
+ jar
+ Java Source Obfuscate Project
+
+
+
+ 1ue
+ https://github.com/luelueking
+
+
+ 4ra1n
+ https://github.com/4ra1n
+
+
+
+
+ 3.25.5
+ 5.0.4
+ 3.12.0
+
+
+ 3.3.1
+
+ 3.7.1
+
+ 3.13.0
+
+ 2.16.2
+
8
8
+
UTF-8
+
+ org.vidar.Main
com.github.javaparser
javaparser-core
- 3.25.5
+ ${java.parser.version}
-
com.github.javaparser
javaparser-symbol-solver-core
- 3.25.5
+ ${java.parser.version}
-
org.apache.commons
commons-lang3
- 3.12.0
+ ${commons.lang.version}
-
net.sf.jopt-simple
jopt-simple
- 5.0.4
+ ${jopt.version}
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ ${maven.resources.version}
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+ ${maven.assembly.version}
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven.compiler.version}
+
+
+ org.codehaus.mojo
+ versions-maven-plugin
+ ${maven.versions.version}
+
+
+
- org.apache.maven.plugins
- maven-shade-plugin
- 3.2.4
+ org.codehaus.mojo
+ versions-maven-plugin
+
+
+
+ regex
+ (.+-SNAPSHOT|.+-M\d)
+
+
+ regex
+ .+-(alpha|beta).*
+
+
+ regex
+ .*\.android.*
+
+
+ regex
+ .*\-RC.*
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+ build
+
+ false
+ true
+
+ jar-with-dependencies
+
+
+
+ ${main.name}
+
+
+ true
+
+
+
package
- shade
+ single
-
-
-
- org.vidar.Obfer
-
-
-
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ ${maven.compiler.target}
+
+
\ No newline at end of file
diff --git a/src/main/java/me/n1ar4/log/Log.java b/src/main/java/me/n1ar4/log/Log.java
new file mode 100644
index 0000000..c7b66f2
--- /dev/null
+++ b/src/main/java/me/n1ar4/log/Log.java
@@ -0,0 +1,49 @@
+package me.n1ar4.log;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+class Log {
+ static final String ANSI_RESET = "\u001B[0m";
+ static final String ANSI_GREEN = "\u001B[32m";
+ static final String ANSI_YELLOW = "\u001B[33m";
+ static final String ANSI_RED = "\u001B[31m";
+ static final String ANSI_BLUE = "\u001B[34m";
+
+ static void info(String message) {
+ log(LogLevel.INFO, message, ANSI_GREEN);
+ }
+
+ static void error(String message) {
+ log(LogLevel.ERROR, message, ANSI_RED);
+ }
+
+ static void debug(String message) {
+ log(LogLevel.DEBUG, message, ANSI_BLUE);
+ }
+
+ static void warn(String message) {
+ log(LogLevel.WARN, message, ANSI_YELLOW);
+ }
+
+ static void log(LogLevel level, String message, String color) {
+ if (level.compareTo(LogManager.logLevel) >= 0) {
+ String timestamp = LocalDateTime.now().format(
+ DateTimeFormatter.ofPattern("HH:mm:ss"));
+ String className = LogUtil.getClassName();
+ String methodName = LogUtil.getMethodName();
+ String lineNumber = LogUtil.getLineNumber();
+ String logMessage;
+ if (!lineNumber.equals("-1")) {
+ logMessage = String.format("[%s] [%s%s%s] [%s:%s:%s] %s",
+ timestamp, color, level.name(), ANSI_RESET, className,
+ methodName, lineNumber, message);
+ } else {
+ logMessage = String.format("[%s] [%s%s%s] [%s:%s] %s",
+ timestamp, color, level.name(), ANSI_RESET, className,
+ methodName, message);
+ }
+ System.out.println(logMessage);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/me/n1ar4/log/LogLevel.java b/src/main/java/me/n1ar4/log/LogLevel.java
new file mode 100644
index 0000000..f70505c
--- /dev/null
+++ b/src/main/java/me/n1ar4/log/LogLevel.java
@@ -0,0 +1,8 @@
+package me.n1ar4.log;
+
+public enum LogLevel {
+ DEBUG,
+ INFO,
+ WARN,
+ ERROR,
+}
\ No newline at end of file
diff --git a/src/main/java/me/n1ar4/log/LogManager.java b/src/main/java/me/n1ar4/log/LogManager.java
new file mode 100644
index 0000000..a4d78bf
--- /dev/null
+++ b/src/main/java/me/n1ar4/log/LogManager.java
@@ -0,0 +1,13 @@
+package me.n1ar4.log;
+
+public class LogManager {
+ static LogLevel logLevel = LogLevel.INFO;
+
+ public static void setLevel(LogLevel level) {
+ logLevel = level;
+ }
+
+ public static Logger getLogger() {
+ return new Logger();
+ }
+}
diff --git a/src/main/java/me/n1ar4/log/LogUtil.java b/src/main/java/me/n1ar4/log/LogUtil.java
new file mode 100644
index 0000000..d5c3106
--- /dev/null
+++ b/src/main/java/me/n1ar4/log/LogUtil.java
@@ -0,0 +1,26 @@
+package me.n1ar4.log;
+
+public class LogUtil {
+ private static final int STACK_TRACE_INDEX = 5;
+
+ public static String getClassName() {
+ String fullClassName = Thread.currentThread()
+ .getStackTrace()[STACK_TRACE_INDEX].getClassName();
+ int lastDotIndex = fullClassName.lastIndexOf('.');
+ if (lastDotIndex != -1) {
+ return fullClassName.substring(lastDotIndex + 1);
+ } else {
+ return fullClassName;
+ }
+ }
+
+ public static String getMethodName() {
+ return Thread.currentThread()
+ .getStackTrace()[STACK_TRACE_INDEX].getMethodName();
+ }
+
+ public static String getLineNumber() {
+ return String.valueOf(Thread.currentThread()
+ .getStackTrace()[STACK_TRACE_INDEX].getLineNumber());
+ }
+}
diff --git a/src/main/java/me/n1ar4/log/Logger.java b/src/main/java/me/n1ar4/log/Logger.java
new file mode 100644
index 0000000..d834101
--- /dev/null
+++ b/src/main/java/me/n1ar4/log/Logger.java
@@ -0,0 +1,57 @@
+package me.n1ar4.log;
+
+@SuppressWarnings("all")
+public class Logger {
+ private String formatMessage(String message, Object[] args) {
+ int start = 0;
+ StringBuilder sb = new StringBuilder();
+ int argIndex = 0;
+ while (start < message.length()) {
+ int open = message.indexOf("{}", start);
+ if (open == -1) {
+ sb.append(message.substring(start));
+ break;
+ }
+ sb.append(message.substring(start, open));
+ if (argIndex < args.length) {
+ sb.append(args[argIndex++]);
+ } else {
+ sb.append("{}");
+ }
+ start = open + 2;
+ }
+ return sb.toString();
+ }
+
+ public void info(String message) {
+ Log.info(message);
+ }
+
+ public void info(String message, Object... args) {
+ Log.info(formatMessage(message, args));
+ }
+
+ public void error(String message) {
+ Log.error(message);
+ }
+
+ public void error(String message, Object... args) {
+ Log.error(formatMessage(message, args));
+ }
+
+ public void debug(String message) {
+ Log.debug(message);
+ }
+
+ public void debug(String message, Object... args) {
+ Log.debug(formatMessage(message, args));
+ }
+
+ public void warn(String message) {
+ Log.warn(message);
+ }
+
+ public void warn(String message, Object... args) {
+ Log.warn(formatMessage(message, args));
+ }
+}
diff --git a/src/main/java/me/n1ar4/log/LoggingStream.java b/src/main/java/me/n1ar4/log/LoggingStream.java
new file mode 100644
index 0000000..d766737
--- /dev/null
+++ b/src/main/java/me/n1ar4/log/LoggingStream.java
@@ -0,0 +1,46 @@
+package me.n1ar4.log;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+
+public class LoggingStream extends PrintStream {
+ private final Logger logger;
+ private final OutputStream originalOut;
+
+ public LoggingStream(OutputStream out, Logger logger) {
+ super(out);
+ this.logger = logger;
+ this.originalOut = out;
+ }
+
+ @Override
+ public void println(String x) {
+ if (!isLoggerCall()) {
+ logger.info(x);
+ } else {
+ directPrintln(x);
+ }
+ }
+
+ private boolean isLoggerCall() {
+ for (StackTraceElement element : Thread.currentThread().getStackTrace()) {
+ if (element.getClassName().equals("me.n1ar4.log.Logger")) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private void directPrintln(String x) {
+ synchronized (this) {
+ byte[] bytes = (x + System.lineSeparator()).getBytes();
+ try {
+ originalOut.write(bytes);
+ originalOut.flush();
+ } catch (IOException e) {
+ setError();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/org/vidar/Main.java b/src/main/java/org/vidar/Main.java
new file mode 100644
index 0000000..5efd15e
--- /dev/null
+++ b/src/main/java/org/vidar/Main.java
@@ -0,0 +1,166 @@
+package org.vidar;
+
+import com.github.javaparser.ast.CompilationUnit;
+import com.github.javaparser.ast.PackageDeclaration;
+import joptsimple.OptionParser;
+import joptsimple.OptionSet;
+import me.n1ar4.log.LogLevel;
+import me.n1ar4.log.LogManager;
+import me.n1ar4.log.Logger;
+import org.vidar.transform.Transformer;
+import org.vidar.transform.impl.*;
+import org.vidar.utils.FileUtil;
+import org.vidar.utils.NameUtil;
+import org.vidar.utils.TransformUtil;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Map;
+import java.util.stream.Stream;
+
+public class Main {
+ private static final Logger logger = LogManager.getLogger();
+ private static final Transformer clzRenamer;
+ private static final Transformer clzRefRenamer;
+ private static final MethodRenamer methodRenamer;
+ private static final Transformer