feat: support simple obfuscation (#13)

This commit is contained in:
ReaJason
2025-03-30 15:33:31 +08:00
parent e3a59e9f21
commit d57e691e1f
19 changed files with 78 additions and 34 deletions
BIN
View File
Binary file not shown.
+7 -7
View File
@@ -15,7 +15,7 @@
},
"devDependencies": {
"@biomejs/biome": "1.9.4",
"@tanstack/router-plugin": "^1.114.29",
"@tanstack/router-plugin": "^1.114.30",
"@types/node": "^22.13.14",
"@types/react": "^19.0.12",
"@types/react-copy-to-clipboard": "^5.0.7",
@@ -42,22 +42,22 @@
"@radix-ui/react-tabs": "^1.1.3",
"@radix-ui/react-tooltip": "^1.1.8",
"@tailwindcss/vite": "^4.0.17",
"@tanstack/react-query": "^5.69.0",
"@tanstack/react-query": "^5.70.0",
"@tanstack/react-router": "^1.114.29",
"@tanstack/router-devtools": "^1.114.29",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"i18next": "^24.2.3",
"lucide-react": "^0.484.0",
"react": "^19.0.0",
"lucide-react": "^0.485.0",
"react": "^19.1.0",
"react-copy-to-clipboard": "^5.1.0",
"react-dom": "^19.0.0",
"react-hook-form": "^7.54.2",
"react-dom": "^19.1.0",
"react-hook-form": "^7.55.0",
"react-i18next": "^15.4.1",
"react-syntax-highlighter": "^15.6.1",
"sonner": "^2.0.2",
"tailwind-merge": "^3.0.2",
"tailwind-scrollbar": "^4.0.1",
"tailwind-scrollbar": "^4.0.2",
"tailwindcss-animate": "^1.0.7",
"zod": "^3.24.2"
},
+12
View File
@@ -287,6 +287,18 @@ export function MainConfigCard({
</FormItem>
)}
/>
<FormField
control={form.control}
name="obfuscate"
render={({ field }) => (
<FormItem className="flex items-center space-x-2 space-y-0">
<FormControl>
<Switch id="obfuscate" checked={field.value} onCheckedChange={field.onChange} />
</FormControl>
<Label htmlFor="obfuscate">{t("mainConfig.obfuscate")}</Label>
</FormItem>
)}
/>
</div>
</CardContent>
</Card>
+4 -2
View File
@@ -37,7 +37,8 @@
"shellMountType": "Shell Mount Type",
"shellTool": "Shell Tool",
"shrink": "Shrink Bytecode",
"urlPattern": "URL Pattern"
"urlPattern": "URL Pattern",
"obfuscate": "Obfuscate"
},
"optional": "(Optional)",
"packageConfig": {
@@ -130,7 +131,8 @@
"targetServerRequest": "Request",
"try-to-use-shell": "Try to use the memory shell",
"waitingForGeneration": "// Waiting for generation...",
"customShellClass": "Custom shell class is required, base64 or classfile"
"customShellClass": "Custom shell class is required, base64 or classfile",
"neoreGeorgObfuscate": "Do not support obfuscate for NeoreGeorg"
},
"version": {
"updateAvailable": "Update Available",
+4 -2
View File
@@ -37,7 +37,8 @@
"shellMountType": "内存马挂载类型",
"shellTool": "内存马功能",
"shrink": "缩小字节码",
"urlPattern": "请求路径"
"urlPattern": "请求路径",
"obfuscate": "代码混淆"
},
"optional": "(可选)",
"packageConfig": {
@@ -130,7 +131,8 @@
"targetServerRequest": "请求适配",
"try-to-use-shell": "尝试利用内存马",
"waitingForGeneration": "// 等待填写参数生成中...",
"customShellClass": "请输入自定义内存马类,base64 或类文件"
"customShellClass": "请输入自定义内存马类,base64 或类文件",
"neoreGeorgObfuscate": "NeoreGeorg 目前不支持代码混淆"
},
"version": {
"updateAvailable": "有可用升级",
+5
View File
@@ -87,6 +87,11 @@ function IndexComponent() {
toast.warning(t("tips.customShellClass"));
return false;
}
if (values.obfuscate && values.shellTool === ShellToolType.NeoreGeorg) {
toast.warning(t("tips.neoreGeorgObfuscate"));
return false;
}
return true;
}
+1
View File
@@ -19,6 +19,7 @@ export const formSchema = z.object({
injectorClassName: z.optional(z.string()),
packingMethod: z.string().min(1),
shrink: z.optional(z.boolean()),
obfuscate: z.optional(z.boolean()),
shellClassBase64: z.optional(z.string()),
});
+1
View File
@@ -10,6 +10,7 @@ export function transformToPostData(formValue: FormSchema) {
targetJreVersion: formValue.targetJdkVersion,
byPassJavaModule: formValue.bypassJavaModule,
shrink: formValue.shrink,
obfuscate: formValue.obfuscate,
};
const shellToolConfig: ShellToolConfig = {
shellClassName: formValue.shellClassName,