added docs

main
Potato Sus 2023-01-29 09:27:22 -03:00
parent a45ffb98c8
commit 4a66414ff4
61 changed files with 1898 additions and 0 deletions

7
docs/.vuepress/client.ts Normal file
View File

@ -0,0 +1,7 @@
import { defineClientConfig } from '@vuepress/client';
export default defineClientConfig({
enhance({ app, router, siteData }) {},
setup() {},
rootComponents: [],
});

45
docs/.vuepress/config.ts Normal file
View File

@ -0,0 +1,45 @@
import { defaultTheme, defineUserConfig } from 'vuepress';
import { searchPlugin } from '@vuepress/plugin-search';
import { shikiPlugin } from '@vuepress/plugin-shiki';
import markdownItFootnote from 'markdown-it-footnote';
import { navbarEn } from './config/navbar/en';
import { sidebarEn } from './config/sidebar/en';
import { head } from './config/head';
export default defineUserConfig({
base: '/',
head,
locales: {
'/': {
lang: 'en-US',
title: 'zProtect Documentation',
description: 'Documentation for all things zProtect.',
}
},
theme: defaultTheme({
contributors: false,
docsRepo: 'https://github.com/zProtect-Development/Documentation',
docsBranch: 'main',
docsDir: 'docs',
editLink: true,
editLinkPattern: ':repo/edit/:branch/:path',
lastUpdated: true,
logo: '/logo.png',
locales: {
'/': {
sidebar: sidebarEn,
navbar: navbarEn,
},
}
}),
plugins: [
searchPlugin({
}),
shikiPlugin({
theme: 'dark-plus',
}),
],
extendsMarkdown: (md) => {
md.use(markdownItFootnote)
}
});

View File

@ -0,0 +1,27 @@
import type { HeadConfig } from '@vuepress/core';
export const head: HeadConfig[] = [
[
'link',
{
rel: 'icon',
type: 'image/png',
sizes: '16x16',
href: `/favicon-16.png`,
},
],
[
'link',
{
rel: 'icon',
type: 'image/png',
sizes: '32x32',
href: `/favicon-32.png`,
},
],
['meta', { name: 'theme-color', content: '#936edb' }],
['meta', { name: 'og:title', content: 'zProtect Documentation' }],
['meta', { name: 'og:type', content: 'website' }],
['meta', { name: 'og:image', content: '/og.png' }],
['meta', { name: 'og:url', content: 'https://docs.zprotect.dev/' }],
]

View File

@ -0,0 +1,9 @@
import type { NavbarConfig } from 'vuepress';
export const navbarEn: NavbarConfig = [
{
text: 'Return to zProtect.dev',
link: 'https://zprotect.dev',
target: '_self',
},
];

View File

@ -0,0 +1,28 @@
import type { SidebarConfig } from '@vuepress/theme-default'
export const sidebarEn: SidebarConfig = {
'/': [
{
text: 'Documentation',
children: [
'/index.md',
'/config.md',
'/commandline.md',
],
},
{
text: 'Changelog',
children: [
'/changelog/0.2.md',
'/changelog/0.1.md',
],
},
{
text: 'Legal',
children: [
'/privacy.md',
'/terms.md',
],
},
],
};

33
docs/.vuepress/dist/404.html vendored Normal file
View File

@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="VuePress 2.0.0-beta.49">
<style>
:root {
--c-bg: #fff;
}
html.dark {
--c-bg: #22272e;
}
html, body {
background-color: var(--c-bg);
}
</style>
<script>
const userMode = localStorage.getItem('vuepress-color-scheme');
const systemDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
if (userMode === 'dark' || (userMode !== 'light' && systemDarkMode)) {
document.documentElement.classList.toggle('dark', true);
}
</script>
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png"><meta name="theme-color" content="#936edb"><meta name="og:title" content="zProtect Documentation"><meta name="og:type" content="website"><meta name="og:image" content="/og.png"><meta name="og:url" content="https://docs.zprotect.dev/"><title>zProtect Documentation</title><meta name="description" content="Documentation for all things zProtect.">
<link rel="modulepreload" href="/assets/app.fe610a35.js"><link rel="modulepreload" href="/assets/404.html.cbce7884.js"><link rel="modulepreload" href="/assets/404.html.7d858b3d.js"><link rel="prefetch" href="/assets/commandline.html.0cdd07e7.js"><link rel="prefetch" href="/assets/config.html.24d9df8b.js"><link rel="prefetch" href="/assets/index.html.9efec093.js"><link rel="prefetch" href="/assets/privacy.html.b7d51f10.js"><link rel="prefetch" href="/assets/terms.html.c69bbe45.js"><link rel="prefetch" href="/assets/0.1.html.7d525fed.js"><link rel="prefetch" href="/assets/0.2.html.43bc391f.js"><link rel="prefetch" href="/assets/commandline.html.15f2e1ec.js"><link rel="prefetch" href="/assets/config.html.533c1ab4.js"><link rel="prefetch" href="/assets/index.html.3175b1e4.js"><link rel="prefetch" href="/assets/commandline.html.18ab6d88.js"><link rel="prefetch" href="/assets/config.html.4750604a.js"><link rel="prefetch" href="/assets/index.html.8005e5a3.js"><link rel="prefetch" href="/assets/privacy.html.5ecb4b69.js"><link rel="prefetch" href="/assets/terms.html.a0651db1.js"><link rel="prefetch" href="/assets/0.1.html.94430b3b.js"><link rel="prefetch" href="/assets/0.2.html.ad5891ed.js"><link rel="prefetch" href="/assets/commandline.html.4dc00259.js"><link rel="prefetch" href="/assets/config.html.2e9b9f19.js"><link rel="prefetch" href="/assets/index.html.7c543494.js"><link rel="prefetch" href="/assets/404.e86a7fd5.js"><link rel="prefetch" href="/assets/Layout.d3d80637.js">
<link rel="stylesheet" href="/assets/style.8bf88d10.css">
</head>
<body>
<div id="app"><!--[--><div class="theme-container"><main class="page"><div class="theme-default-content"><h1>404</h1><blockquote>That&#39;s a Four-Oh-Four.</blockquote><a href="/" class="">Take me home</a></div></main></div><!----><!--]--></div>
<script type="module" src="/assets/app.fe610a35.js" defer></script>
</body>
</html>

View File

@ -0,0 +1 @@
const e=JSON.parse('{"key":"v-17d8839a","path":"/changelog/0.1.html","title":"zProtect 0.1","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1661203612000},"filePathRelative":"changelog/0.1.md"}');export{e as data};

View File

@ -0,0 +1 @@
import{_ as t,o as a,c,a as e,e as o}from"./app.fe610a35.js";const r={},s=e("h1",{id:"zprotect-0-1",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#zprotect-0-1","aria-hidden":"true"},"#"),o(" zProtect 0.1")],-1),_=e("ul",null,[e("li",null,"Initial Release")],-1),n=[s,_];function l(i,d){return a(),c("div",null,n)}var u=t(r,[["render",l],["__file","0.1.html.vue"]]);export{u as default};

View File

@ -0,0 +1 @@
const e=JSON.parse('{"key":"v-198d5c39","path":"/changelog/0.2.html","title":"zProtect 0.2","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1661725005000},"filePathRelative":"changelog/0.2.md"}');export{e as data};

View File

@ -0,0 +1 @@
import{_ as t,o as r,c as l,a as e,e as o}from"./app.fe610a35.js";const a={},n=e("h1",{id:"zprotect-0-2",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#zprotect-0-2","aria-hidden":"true"},"#"),o(" zProtect 0.2")],-1),s=e("ul",null,[e("li",null,"Full rewrite of all transformers that previously existed in 0.1."),e("li",null,"Full rewrite of the obfuscator core to allow more flexibility with jar files and read / write features."),e("li",null,"Brand new YAML configuration system, we no longer use JSON."),e("li",null,"Brand new Bundler System for the web.")],-1),i=[n,s];function c(d,u){return r(),l("div",null,i)}var f=t(a,[["render",c],["__file","0.2.html.vue"]]);export{f as default};

View File

@ -0,0 +1 @@
import{_ as i,f as d,u as p,g as f,o as v,c as k,a as e,t as c,b as g,w as L,h as l,r as x,e as B}from"./app.fe610a35.js";const N={class:"theme-container"},T={class:"page"},b={class:"theme-default-content"},C=e("h1",null,"404",-1),M=d({__name:"404",setup(R){var a,s,n;const _=p(),o=f(),t=(a=o.value.notFound)!=null?a:["Not Found"],r=()=>t[Math.floor(Math.random()*t.length)],u=(s=o.value.home)!=null?s:_.value,m=(n=o.value.backToHome)!=null?n:"Back to home";return(V,w)=>{const h=x("RouterLink");return v(),k("div",N,[e("main",T,[e("div",b,[C,e("blockquote",null,c(r()),1),g(h,{to:l(u)},{default:L(()=>[B(c(l(m)),1)]),_:1},8,["to"])])])])}}});var F=i(M,[["__file","404.vue"]]);export{F as default};

View File

@ -0,0 +1 @@
const t=JSON.parse('{"key":"v-3706649a","path":"/404.html","title":"","lang":"en-US","frontmatter":{"layout":"404"},"excerpt":"","headers":[],"git":{},"filePathRelative":null}');export{t as data};

View File

@ -0,0 +1 @@
import{_ as e,o as _,c}from"./app.fe610a35.js";const r={};function t(o,a){return _(),c("div")}var s=e(r,[["render",t],["__file","404.html.vue"]]);export{s as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 49.484 28.284"><g transform="translate(-229 -126.358)" fill="currentColor"><rect width="35" height="5" rx="2" transform="rotate(-45 296.902 -200.874)"/><rect width="35" height="5" rx="2" transform="rotate(-135 169.502 20.377)"/></g></svg>

After

Width:  |  Height:  |  Size: 291 B

View File

@ -0,0 +1 @@
const e=JSON.parse('{"key":"v-06f9211a","path":"/commandline.html","title":"Command Line Tool","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Introduction","slug":"introduction","children":[]},{"level":2,"title":"Downloads","slug":"downloads","children":[]}],"git":{"updatedTime":1663162001000},"filePathRelative":"commandline.md"}');export{e as data};

View File

@ -0,0 +1 @@
const e=JSON.parse('{"key":"v-d0e1d8bc","path":"/zh/commandline.html","title":"Command Line Tool","lang":"en-US","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1661350568000},"filePathRelative":"zh/commandline.md"}');export{e as data};

View File

@ -0,0 +1 @@
import{_ as r,o as l,c,a as e,b as o,d as s,e as n,r as d}from"./app.fe610a35.js";const a={},i=s('<h1 id="command-line-tool" tabindex="-1"><a class="header-anchor" href="#command-line-tool" aria-hidden="true">#</a> Command Line Tool</h1><h2 id="introduction" tabindex="-1"><a class="header-anchor" href="#introduction" aria-hidden="true">#</a> Introduction</h2><p>The zProtect web interface uses a bundle.zst file to recieve data. This is created using the zProtect command line tool. Other operations would also be available in the future. Please use the <code>--help</code> flag on the command line tool for more information on available operations.</p><h2 id="downloads" tabindex="-1"><a class="header-anchor" href="#downloads" aria-hidden="true">#</a> Downloads</h2>',4),_=e("thead",null,[e("tr",null,[e("th",null,"Operating System"),e("th",null,"Architecture"),e("th",null,"Download")])],-1),h=e("td",null,"Windows",-1),u=e("td",null,"64-bit (AMD64)",-1),b={href:"https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-windows-amd64.exe",target:"_blank",rel:"noopener noreferrer"},p=n("Here"),f=e("td",null,null,-1),m=e("td",null,"32-bit (i386)",-1),k={href:"https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-windows-386.exe",target:"_blank",rel:"noopener noreferrer"},z=n("Here"),x=e("td",null,"MacOs (Darwin)",-1),F=e("td",null,"64-bit (AMD64)",-1),v={href:"https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-darwin-amd64",target:"_blank",rel:"noopener noreferrer"},w=n("Here"),g=e("td",null,null,-1),A=e("td",null,"64-bit (AArch64)",-1),j={href:"https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-darwin-arm64",target:"_blank",rel:"noopener noreferrer"},H=n("Here"),D=e("td",null,"Linux",-1),L=e("td",null,"64-bit (AMD64)",-1),M={href:"https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-linux-amd64",target:"_blank",rel:"noopener noreferrer"},N=n("Here"),T=e("td",null,null,-1),V=e("td",null,"64-bit (AArch64)",-1),B={href:"https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-linux-arm64",target:"_blank",rel:"noopener noreferrer"},E=n("Here"),I=e("td",null,null,-1),O=e("td",null,"32-bit (i386)",-1),P={href:"https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-linux-386",target:"_blank",rel:"noopener noreferrer"},y=n("Here"),C=e("td",null,null,-1),S=e("td",null,"32-bit (AArch32)",-1),W={href:"https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-linux-arm",target:"_blank",rel:"noopener noreferrer"},q=n("Here");function G(J,K){const t=d("ExternalLinkIcon");return l(),c("div",null,[i,e("table",null,[_,e("tbody",null,[e("tr",null,[h,u,e("td",null,[e("a",b,[p,o(t)])])]),e("tr",null,[f,m,e("td",null,[e("a",k,[z,o(t)])])]),e("tr",null,[x,F,e("td",null,[e("a",v,[w,o(t)])])]),e("tr",null,[g,A,e("td",null,[e("a",j,[H,o(t)])])]),e("tr",null,[D,L,e("td",null,[e("a",M,[N,o(t)])])]),e("tr",null,[T,V,e("td",null,[e("a",B,[E,o(t)])])]),e("tr",null,[I,O,e("td",null,[e("a",P,[y,o(t)])])]),e("tr",null,[C,S,e("td",null,[e("a",W,[q,o(t)])])])])])])}var R=r(a,[["render",G],["__file","commandline.html.vue"]]);export{R as default};

View File

@ -0,0 +1 @@
import{_ as n,o as a,c as t,a as e,e as o}from"./app.fe610a35.js";const c={},l=e("h1",{id:"command-line-tool",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#command-line-tool","aria-hidden":"true"},"#"),o(" Command Line Tool")],-1),i=e("p",null,[o("Documentation coming soon. In the mean time, please use the "),e("code",null,"--help"),o(" flag for more information.")],-1),m=[l,i];function r(s,d){return a(),t("div",null,m)}var h=n(c,[["render",r],["__file","commandline.html.vue"]]);export{h as default};

View File

@ -0,0 +1 @@
const e=JSON.parse('{"key":"v-31071e3e","path":"/config.html","title":"Configuration Options","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Introduction","slug":"introduction","children":[]},{"level":2,"title":"Value Types","slug":"value-types","children":[{"level":3,"title":"Boolean","slug":"boolean","children":[]},{"level":3,"title":"String","slug":"string","children":[]},{"level":3,"title":"String Array","slug":"string-array","children":[]},{"level":3,"title":"Simple Option","slug":"simple-option","children":[]},{"level":3,"title":"Option with Path","slug":"option-with-path","children":[]}]},{"level":2,"title":"Options","slug":"options","children":[{"level":3,"title":"libraries","slug":"libraries","children":[]},{"level":3,"title":"exclusions","slug":"exclusions","children":[]},{"level":3,"title":"ForceExclusions","slug":"forceexclusions","children":[]},{"level":3,"title":"Watermark","slug":"watermark","children":[]}]},{"level":2,"title":"Transformers","slug":"transformers","children":[{"level":3,"title":"AntiDebug","slug":"antidebug","children":[]},{"level":3,"title":"DecompilerCrasher","slug":"decompilercrasher","children":[]},{"level":3,"title":"BadAnnotationCrasher","slug":"badannotationcrasher","children":[]},{"level":3,"title":"Flow","slug":"flow","children":[]}]},{"level":2,"title":"Renamers","slug":"renamers","children":[{"level":3,"title":"ClassRenamer","slug":"classrenamer","children":[]},{"level":3,"title":"FieldRenamer","slug":"fieldrenamer","children":[]},{"level":3,"title":"LocalVariableRenamer","slug":"localvariablerenamer","children":[]},{"level":3,"title":"MethodRenamer","slug":"methodrenamer","children":[]}]},{"level":2,"title":"Optimization","slug":"optimization","children":[{"level":3,"title":"EnumOptimiser","slug":"enumoptimiser","children":[]},{"level":3,"title":"FinalRemover","slug":"finalremover","children":[]},{"level":3,"title":"HideClassMembers","slug":"hideclassmembers","children":[]},{"level":3,"title":"InsnRemover","slug":"insnremover","children":[]},{"level":3,"title":"KotlinMetadataRemover","slug":"kotlinmetadataremover","children":[]},{"level":3,"title":"NOPInsnRemover","slug":"nopinsnremover","children":[]},{"level":3,"title":"RemoveSignatures","slug":"removesignatures","children":[]}]},{"level":2,"title":"Poolers","slug":"poolers","children":[{"level":3,"title":"NumberPooler","slug":"numberpooler","children":[]},{"level":3,"title":"StringPooler","slug":"stringpooler","children":[]}]},{"level":2,"title":"Shrinking","slug":"shrinking","children":[{"level":3,"title":"LineNumberRemover","slug":"linenumberremover","children":[]},{"level":3,"title":"LocalVariableRemover","slug":"localvariableremover","children":[]},{"level":3,"title":"RemoveInnerClasses","slug":"removeinnerclasses","children":[]},{"level":3,"title":"SourceDebugRemover","slug":"sourcedebugremover","children":[]},{"level":3,"title":"SourceFileRemover","slug":"sourcefileremover","children":[]}]},{"level":2,"title":"Shufflers","slug":"shufflers","children":[{"level":3,"title":"ShuffleFields","slug":"shufflefields","children":[]},{"level":3,"title":"ShuffleMethods","slug":"shufflemethods","children":[]},{"level":3,"title":"ShuffleClasses","slug":"shuffleclasses","children":[]}]},{"level":2,"title":"Example","slug":"example","children":[]}],"git":{"updatedTime":1661874443000},"filePathRelative":"config.md"}');export{e as data};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
const e=JSON.parse('{"key":"v-296358af","path":"/zh/config.html","title":"Configuration Options","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Introduction","slug":"introduction","children":[]},{"level":2,"title":"Value Types","slug":"value-types","children":[{"level":3,"title":"Boolean","slug":"boolean","children":[]},{"level":3,"title":"String","slug":"string","children":[]},{"level":3,"title":"String Array","slug":"string-array","children":[]},{"level":3,"title":"Simple Option","slug":"simple-option","children":[]},{"level":3,"title":"Option with Path","slug":"option-with-path","children":[]}]},{"level":2,"title":"Options","slug":"options","children":[{"level":3,"title":"Output","slug":"output","children":[]},{"level":3,"title":"Libraries","slug":"libraries","children":[]},{"level":3,"title":"Exclusions","slug":"exclusions","children":[]},{"level":3,"title":"ForceExclusions","slug":"forceexclusions","children":[]},{"level":3,"title":"Watermark","slug":"watermark","children":[]}]},{"level":2,"title":"Transformers","slug":"transformers","children":[{"level":3,"title":"AntiDebug","slug":"antidebug","children":[]},{"level":3,"title":"DecompilerCrasher","slug":"decompilercrasher","children":[]},{"level":3,"title":"BadAnnotationCrasher","slug":"badannotationcrasher","children":[]},{"level":3,"title":"Flow","slug":"flow","children":[]}]},{"level":2,"title":"Renamers","slug":"renamers","children":[{"level":3,"title":"ClassRenamer","slug":"classrenamer","children":[]},{"level":3,"title":"FieldRenamer","slug":"fieldrenamer","children":[]},{"level":3,"title":"LocalVariableRenamer","slug":"localvariablerenamer","children":[]},{"level":3,"title":"MethodRenamer","slug":"methodrenamer","children":[]}]},{"level":2,"title":"Optimization","slug":"optimization","children":[{"level":3,"title":"EnumOptimiser","slug":"enumoptimiser","children":[]},{"level":3,"title":"FinalRemover","slug":"finalremover","children":[]},{"level":3,"title":"HideClassMembers","slug":"hideclassmembers","children":[]},{"level":3,"title":"InsnRemover","slug":"insnremover","children":[]},{"level":3,"title":"KotlinMetadataRemover","slug":"kotlinmetadataremover","children":[]},{"level":3,"title":"NOPInsnRemover","slug":"nopinsnremover","children":[]},{"level":3,"title":"RemoveSignatures","slug":"removesignatures","children":[]}]},{"level":2,"title":"Poolers","slug":"poolers","children":[{"level":3,"title":"NumberPooler","slug":"numberpooler","children":[]},{"level":3,"title":"StringPooler","slug":"stringpooler","children":[]}]},{"level":2,"title":"Shrinking","slug":"shrinking","children":[{"level":3,"title":"LineNumberRemover","slug":"linenumberremover","children":[]},{"level":3,"title":"LocalVariableRemover","slug":"localvariableremover","children":[]},{"level":3,"title":"RemoveInnerClasses","slug":"removeinnerclasses","children":[]},{"level":3,"title":"SourceDebugRemover","slug":"sourcedebugremover","children":[]},{"level":3,"title":"SourceFileRemover","slug":"sourcefileremover","children":[]}]},{"level":2,"title":"Shufflers","slug":"shufflers","children":[{"level":3,"title":"ShuffleFields","slug":"shufflefields","children":[]},{"level":3,"title":"ShuffleMethods","slug":"shufflemethods","children":[]},{"level":3,"title":"ShuffleClasses","slug":"shuffleclasses","children":[]}]},{"level":2,"title":"Example","slug":"example","children":[]}],"git":{"updatedTime":1661350568000},"filePathRelative":"zh/config.md"}');export{e as data};

View File

@ -0,0 +1 @@
const e=JSON.parse('{"key":"v-2d0ad528","path":"/zh/","title":"General Information","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Product Description","slug":"product-description","children":[]},{"level":2,"title":"FAQ","slug":"faq","children":[{"level":3,"title":"What is the difference between a commercial license and a non-commercial license?","slug":"what-is-the-difference-between-a-commercial-license-and-a-non-commercial-license","children":[]},{"level":3,"title":"How do I remove the watermark?","slug":"how-do-i-remove-the-watermark","children":[]},{"level":3,"title":"I currently have a non-commercial license. How do I upgrade to a commercial license?","slug":"i-currently-have-a-non-commercial-license-how-do-i-upgrade-to-a-commercial-license","children":[]}]}],"git":{"updatedTime":1661350568000},"filePathRelative":"zh/index.md"}');export{e as data};

View File

@ -0,0 +1 @@
import{_ as e,o as a,c as o,d as t}from"./app.fe610a35.js";const r={},n=t('<h1 id="general-information" tabindex="-1"><a class="header-anchor" href="#general-information" aria-hidden="true">#</a> General Information</h1><h2 id="product-description" tabindex="-1"><a class="header-anchor" href="#product-description" aria-hidden="true">#</a> Product Description</h2><p>zProtect is an online obfuscation platform. Our product makes your Java\u2122 software (and by extention, languages that transpile to Java\u2122<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>) more difficult to reverse engineer.</p><h2 id="faq" tabindex="-1"><a class="header-anchor" href="#faq" aria-hidden="true">#</a> FAQ</h2><h3 id="what-is-the-difference-between-a-commercial-license-and-a-non-commercial-license" tabindex="-1"><a class="header-anchor" href="#what-is-the-difference-between-a-commercial-license-and-a-non-commercial-license" aria-hidden="true">#</a> What is the difference between a commercial license and a non-commercial license?</h3><p>A non-commercial license has licensing limits that disallow the use of the zProtect obfuscator on any software that you intend to distribute commercially (i.e. for monetary gain). However, a commercial license lifts these limits, and allows you to use the zProtect obfuscator on any software.</p><h3 id="how-do-i-remove-the-watermark" tabindex="-1"><a class="header-anchor" href="#how-do-i-remove-the-watermark" aria-hidden="true">#</a> How do I remove the watermark?</h3><p>A commercial license is required to unlock the option to remove the watermark. This behavior is intentional.</p><h3 id="i-currently-have-a-non-commercial-license-how-do-i-upgrade-to-a-commercial-license" tabindex="-1"><a class="header-anchor" href="#i-currently-have-a-non-commercial-license-how-do-i-upgrade-to-a-commercial-license" aria-hidden="true">#</a> I currently have a non-commercial license. How do I upgrade to a commercial license?</h3><p>At the moment, it is not possible to upgrade to a commercial license from a non-commercial license on the web interface. Please contact zProtect support to discuss your options.</p><hr class="footnotes-sep"><section class="footnotes"><ol class="footnotes-list"><li id="fn1" class="footnote-item"><p>Guarunteed support for Kotlin\u2122 and Java\u2122. Other JVM languages are supported on a best effort basis. <a href="#fnref1" class="footnote-backref">\u21A9\uFE0E</a></p></li></ol></section>',12),i=[n];function c(s,l){return a(),o("div",null,i)}var h=e(r,[["render",c],["__file","index.html.vue"]]);export{h as default};

View File

@ -0,0 +1 @@
import{_ as i,o as s,c,a as n,b as a,w as t,d as r,e,r as l}from"./app.fe610a35.js";const d={},h=r('<h1 id="general-information" tabindex="-1"><a class="header-anchor" href="#general-information" aria-hidden="true">#</a> General Information</h1><h2 id="product-description" tabindex="-1"><a class="header-anchor" href="#product-description" aria-hidden="true">#</a> Product Description</h2><p>zProtect is an online obfuscation platform. Our product makes your Java\u2122 software (and by extention, languages that transpile to Java\u2122<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>) more difficult to reverse engineer.</p><h2 id="obfuscation-bundles" tabindex="-1"><a class="header-anchor" href="#obfuscation-bundles" aria-hidden="true">#</a> Obfuscation Bundles</h2>',4),m=e("For better efficency and lower bandwidth usage, users are required to create zProtect "),f=n("code",null,"bundle.zst",-1),u=e(" files using the zProtect command line tool's "),p=e("bundle command"),_=e(". You may download this tool "),b=e("here"),w=e("."),v=r('<h2 id="faq" tabindex="-1"><a class="header-anchor" href="#faq" aria-hidden="true">#</a> FAQ</h2><h3 id="what-is-the-difference-between-a-commercial-license-and-a-non-commercial-license" tabindex="-1"><a class="header-anchor" href="#what-is-the-difference-between-a-commercial-license-and-a-non-commercial-license" aria-hidden="true">#</a> What is the difference between a commercial license and a non-commercial license?</h3><p>A non-commercial license has licensing limits that disallow the use of the zProtect obfuscator on any software that you intend to distribute commercially (i.e. for monetary gain). However, a commercial license lifts these limits, and allows you to use the zProtect obfuscator on any software.</p><h3 id="how-do-i-remove-the-watermark" tabindex="-1"><a class="header-anchor" href="#how-do-i-remove-the-watermark" aria-hidden="true">#</a> How do I remove the watermark?</h3><p>A commercial license is required to unlock the option to remove the watermark. This behavior is intentional.</p><h3 id="i-currently-have-a-non-commercial-license-how-do-i-upgrade-to-a-commercial-license" tabindex="-1"><a class="header-anchor" href="#i-currently-have-a-non-commercial-license-how-do-i-upgrade-to-a-commercial-license" aria-hidden="true">#</a> I currently have a non-commercial license. How do I upgrade to a commercial license?</h3><p>At the moment, it is not possible to upgrade to a commercial license from a non-commercial license on the web interface. Please contact zProtect support to discuss your options.</p><hr class="footnotes-sep"><section class="footnotes"><ol class="footnotes-list"><li id="fn1" class="footnote-item"><p>Guarunteed support for Kotlin\u2122 and Java\u2122. Other JVM languages are supported on a best effort basis. <a href="#fnref1" class="footnote-backref">\u21A9\uFE0E</a></p></li></ol></section>',9);function g(x,y){const o=l("RouterLink");return s(),c("div",null,[h,n("p",null,[m,f,u,a(o,{to:"/commandline.html"},{default:t(()=>[p]),_:1}),_,a(o,{to:"/commandline.html#downloads"},{default:t(()=>[b]),_:1}),w]),v])}var P=i(d,[["render",g],["__file","index.html.vue"]]);export{P as default};

View File

@ -0,0 +1 @@
const e=JSON.parse('{"key":"v-8daa1a0e","path":"/","title":"General Information","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Product Description","slug":"product-description","children":[]},{"level":2,"title":"Obfuscation Bundles","slug":"obfuscation-bundles","children":[]},{"level":2,"title":"FAQ","slug":"faq","children":[{"level":3,"title":"What is the difference between a commercial license and a non-commercial license?","slug":"what-is-the-difference-between-a-commercial-license-and-a-non-commercial-license","children":[]},{"level":3,"title":"How do I remove the watermark?","slug":"how-do-i-remove-the-watermark","children":[]},{"level":3,"title":"I currently have a non-commercial license. How do I upgrade to a commercial license?","slug":"i-currently-have-a-non-commercial-license-how-do-i-upgrade-to-a-commercial-license","children":[]}]}],"git":{"updatedTime":1661707252000},"filePathRelative":"index.md"}');export{e as data};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
const e=JSON.parse(`{"key":"v-08eb506c","path":"/privacy.html","title":"Privacy Policy","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Interpretation and Definitions","slug":"interpretation-and-definitions","children":[{"level":3,"title":"Interpretation","slug":"interpretation","children":[]},{"level":3,"title":"Definitions","slug":"definitions","children":[]}]},{"level":2,"title":"Collecting and Using Your Personal Data","slug":"collecting-and-using-your-personal-data","children":[{"level":3,"title":"Types of Data Collected","slug":"types-of-data-collected","children":[]},{"level":3,"title":"Retention of Your Personal Data","slug":"retention-of-your-personal-data","children":[]},{"level":3,"title":"Disclosure of Your Personal Data","slug":"disclosure-of-your-personal-data","children":[]}]},{"level":2,"title":"Children's Privacy","slug":"children-s-privacy","children":[]},{"level":2,"title":"Links to Other Websites","slug":"links-to-other-websites","children":[]},{"level":2,"title":"Changes to this Privacy Policy","slug":"changes-to-this-privacy-policy","children":[]},{"level":2,"title":"Contact Us","slug":"contact-us","children":[]}],"git":{"updatedTime":null},"filePathRelative":"privacy.md"}`);export{e as data};

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="12" height="13"><g stroke-width="2" stroke="#aaa" fill="none"><path d="M11.29 11.71l-4-4"/><circle cx="5" cy="5" r="4"/></g></svg>

After

Width:  |  Height:  |  Size: 216 B

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{_ as e,o as i,c as t,d as r}from"./app.fe610a35.js";const o={},s=r('<h1 id="terms-of-service" tabindex="-1"><a class="header-anchor" href="#terms-of-service" aria-hidden="true">#</a> Terms of Service</h1><p>This Terms of Service describes Our policies and restrictions on the use of Our Products and the Services.</p><h2 id="interpretation-and-definitions" tabindex="-1"><a class="header-anchor" href="#interpretation-and-definitions" aria-hidden="true">#</a> Interpretation and Definitions</h2><h3 id="interpretation" tabindex="-1"><a class="header-anchor" href="#interpretation" aria-hidden="true">#</a> Interpretation</h3><p>The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.</p><h3 id="definitions" tabindex="-1"><a class="header-anchor" href="#definitions" aria-hidden="true">#</a> Definitions</h3><p>For the purposes of this Terms of Service:</p><ul><li><p>Company (referred to as either &quot;the Company&quot;, &quot;We&quot;, &quot;Us&quot; or &quot;Our&quot; in this Agreement) refers to NextStorm Software.</p></li><li><p>Personal Data is any information that relates to an identified oridentifiable individual.</p></li><li><p>Service refers to the Website.</p></li><li><p>Website refers to the zProtect website, accessible from https:/zprotect.dev, and any associated services.</p></li><li><p>You means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable.</p></li></ul><h2 id="use-of-the-website" tabindex="-1"><a class="header-anchor" href="#use-of-the-website" aria-hidden="true">#</a> Use of the Website</h2><p>Your access to this Website means you automatically agree to the Terms of Use and the Privacy Policy.</p><p>This Website is for your personal and non-commercial use. You may not modify, copy, distribute, transmit, display, publish, licence any products or services obtained from this Website.</p><p>You will not use the Website for any purpose that is unlawful by these Terms of Use. You may not use the website in any manner that may harm, disable or cause burden on any server or networks of this website.</p><h2 id="use-of-our-products" tabindex="-1"><a class="header-anchor" href="#use-of-our-products" aria-hidden="true">#</a> Use of Our Products</h2><p>It is forbidden to distribute, sell, reverse engineer, modify, decompile, deobfuscate, or unarchive zProtect products or any other binaries provided without explicit permission from the Company.</p><p>It is forbidden to share or resell the licences of Our products without permission. zProtect is all right reserved.</p><p>It is forbidden to distribute false or abusive information about Our products and the Company.</p><p>The Company has the right to suspend your licence of any zProtect product in case of violation of any of these rules. Data processing</p><h2 id="data-processing" tabindex="-1"><a class="header-anchor" href="#data-processing" aria-hidden="true">#</a> Data Processing</h2><p>By using any of Our services you consent to the processing of your personal data in order to protect Our services from misuse, detect bugs, prevent fraud and improve Our services.</p><p>We collect and may process the following data:</p><ul><li>Emails;</li><li>Internet Protocol (IP) used to access Our services;</li><li>Active sessions on Our website and related sites;</li><li>Different types of information about your device and local time.</li></ul><h2 id="disclaimer" tabindex="-1"><a class="header-anchor" href="#disclaimer" aria-hidden="true">#</a> Disclaimer</h2><p>THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p><p>THE ZPROTECT TEAM ALSO RESERVES THE RIGHT TO SUSPEND YOUR LICENCE TO ZPROTECT PRODUCTS AT ANY TIME WITHOUT GIVEN NOTICE.</p>',24),a=[s];function n(d,h){return i(),t("div",null,a)}var l=e(o,[["render",n],["__file","terms.html.vue"]]);export{l as default};

View File

@ -0,0 +1 @@
const e=JSON.parse('{"key":"v-e0bdb92a","path":"/terms.html","title":"Terms of Service","lang":"en-US","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"Interpretation and Definitions","slug":"interpretation-and-definitions","children":[{"level":3,"title":"Interpretation","slug":"interpretation","children":[]},{"level":3,"title":"Definitions","slug":"definitions","children":[]}]},{"level":2,"title":"Use of the Website","slug":"use-of-the-website","children":[]},{"level":2,"title":"Use of Our Products","slug":"use-of-our-products","children":[]},{"level":2,"title":"Data Processing","slug":"data-processing","children":[]},{"level":2,"title":"Disclaimer","slug":"disclaimer","children":[]}],"git":{"updatedTime":null},"filePathRelative":"terms.md"}');export{e as data};

33
docs/.vuepress/dist/changelog/0.1.html vendored Normal file

File diff suppressed because one or more lines are too long

33
docs/.vuepress/dist/changelog/0.2.html vendored Normal file

File diff suppressed because one or more lines are too long

33
docs/.vuepress/dist/commandline.html vendored Normal file

File diff suppressed because one or more lines are too long

135
docs/.vuepress/dist/config.html vendored Normal file

File diff suppressed because one or more lines are too long

BIN
docs/.vuepress/dist/favicon.ico vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

33
docs/.vuepress/dist/index.html vendored Normal file

File diff suppressed because one or more lines are too long

BIN
docs/.vuepress/dist/logo.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

BIN
docs/.vuepress/dist/og.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 619 KiB

33
docs/.vuepress/dist/privacy.html vendored Normal file

File diff suppressed because one or more lines are too long

33
docs/.vuepress/dist/terms.html vendored Normal file

File diff suppressed because one or more lines are too long

33
docs/.vuepress/dist/zh/commandline.html vendored Normal file

File diff suppressed because one or more lines are too long

139
docs/.vuepress/dist/zh/config.html vendored Normal file

File diff suppressed because one or more lines are too long

33
docs/.vuepress/dist/zh/index.html vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 619 KiB

View File

@ -0,0 +1,19 @@
:root {
scroll-behavior: smooth;
// brand colors
--c-brand: #936edb !important;
--c-brand-light: #b39ae6 !important;
// custom tip
--c-tip: #b39ae6 !important;
}
html.dark {
// brand colors
--c-brand: #936edb !important;
--c-brand-light: #b39ae6 !important;
// custom tip
--c-tip: #b39ae6 !important;
}

3
docs/changelog/0.1.md Normal file
View File

@ -0,0 +1,3 @@
# zProtect 0.1
- Initial Release

6
docs/changelog/0.2.md Normal file
View File

@ -0,0 +1,6 @@
# zProtect 0.2
- Full rewrite of all transformers that previously existed in 0.1.
- Full rewrite of the obfuscator core to allow more flexibility with jar files and read / write features.
- Brand new YAML configuration system, we no longer use JSON.
- Brand new Bundler System for the web.

17
docs/commandline.md Normal file
View File

@ -0,0 +1,17 @@
# Command Line Tool
## Introduction
The zProtect web interface uses a bundle.zst file to recieve data. This is created using the zProtect command line tool. Other operations would also be available in the future. Please use the `--help` flag on the command line tool for more information on available operations.
## Downloads
| Operating System | Architecture | Download |
| ---------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------- |
| Windows | 64-bit (AMD64) | [Here](https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-windows-amd64.exe) |
| | 32-bit (i386) | [Here](https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-windows-386.exe) |
| MacOs (Darwin) | 64-bit (AMD64) | [Here](https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-darwin-amd64) |
| | 64-bit (AArch64) | [Here](https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-darwin-arm64) |
| Linux | 64-bit (AMD64) | [Here](https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-linux-amd64) |
| | 64-bit (AArch64) | [Here](https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-linux-arm64) |
| | 32-bit (i386) | [Here](https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-linux-386) |
| | 32-bit (AArch32) | [Here](https://objects.n23.io/4bcb968ea2654ee1be650d6be455725e:bucket1/zprotect-cli%2Fv0%2Fzprotect-linux-arm) |

330
docs/config.md Normal file
View File

@ -0,0 +1,330 @@
# Configuration Options
## Introduction
zProtect uses the [YAML](https://en.wikipedia.org/wiki/YAML) data serialization language for configuring the behavior of the zProtect obfuscator. It is possible to hand-write the configuration file to upload on the web interface, however, you may wish to modify the [example file](#example) or generate one using the [command line tool](./commandline.md).
## Value Types
There are a few value types used in the zProtect configuration, which are listed below.
### Boolean
Only accepts `true` and `false` as the value.
For example:
```yaml
# A key with value as true
key1: true
# A key with value as false
key2: false
```
### String
Accepts any text character.
For example:
```yaml
# A key with a string value
key: value
```
### String Array
A list of [`strings`](#string), separated by a newline and prefixed with a dash.
For example:
```yaml
# An array with entries
key:
- something
- another thing
# An empty array
empty: []
```
### Simple Option
A [`string array`](#string-array) with a [`boolean`](#boolean) value `enabled`.
For example:
```yaml
# Option enabled
key:
enabled: true
```
### Option with Path
A [`string array`](#string-array) with a [`boolean`](#boolean) key `enabled` and a [`string`](#string) key `path`.
For example:
```yaml
# Option enabled
key:
enabled: true
path: something
```
## Options
These options specify runtime information and general configuration.
### libraries
Dependencies required to obfuscate your jar to prevent "Not found" errors.
Value type: [`string array`](#string-array)
### exclusions
Class files and directories that should be ignored by the obfuscator. They will not have any obfuscation applied to them.
Value type: [`string array`](#string-array)
### ForceExclusions
::: tip Note
Transformer priority will fix this in the future.
:::
Class files and directories that should be blacklisted by the obfuscator before processing. This will prevent issues with exclusions if the regular exclusions fail for some unknown reason.
Value type: [`string array`](#string-array)
### Watermark
Adds a watermark to the obfuscated JAR for advertisement. Only removable for users with a Commercial License.
Value type: [`boolean`](#boolean)
## Transformers
These options specify wherether to enable available obfuscation techniques.
### AntiDebug <Badge type="warning" text="incompatibilities" vertical="top" />
::: tip Warning!
This option may cause issues with certain programs.
:::
Blocks debugging options on terminal.
Value type: [`simple option`](#simple-option)
### DecompilerCrasher <Badge type="danger" text="issues" vertical="top" />
::: tip Warning!
This option is very buggy at the moment and will likely cause problems.
You are strongly advised not to use this.
:::
Manipulates instructions to crash decompilers.
Value type: [`simple option`](#simple-option)
### BadAnnotationCrasher
Manipulates annotations to break bad decompilers. This should not cause any major issues.
Value type: [`simple option`](#simple-option)
### Flow
Adds fake jumps, and such to code.
Value type: [`simple option`](#simple-option)
## Renamers
Renames various components of your JAR's contents.
### ClassRenamer
Renames class files.
Value type: [`option with path`](#option-with-path)
### FieldRenamer
Renames field names.
Value type: [`simple option`](#simple-option)
### LocalVariableRenamer
Renames local variables.
Value type: [`simple option`](#simple-option)
### MethodRenamer
Renames methods.
Value type: [`simple option`](#simple-option)
## Optimization
Modifies or removes various aspects of your jar file to make debugging harder.
### EnumOptimiser
Removes all clone call(s) and returns an array to optimize enum values.
Value type: [`simple option`](#simple-option)
### FinalRemover
Removes finals from your code.
Value type: [`simple option`](#simple-option)
### HideClassMembers
Mark classes as synthetic to hide them from bad decompilers.
Value type: [`simple option`](#simple-option)
### InsnRemover
Removes the instructions `const_.` and `tableswitch`.
Value type: [`simple option`](#simple-option)
### KotlinMetadataRemover
Removes Kotlin-specific Metadata such as `NotNull`, `Nullable`, etc.
Value type: [`simple option`](#simple-option)
### NOPInsnRemover
Removes extended type information.
Value type: [`simple option`](#simple-option)
### RemoveSignatures
Removes the signature attribute from classes and methods.
Value type: [`simple option`](#simple-option)
## Poolers
Move values into an array to make the resulting JAR harder.
### NumberPooler
Moves numbers into an array.
Value type: [`simple option`](#simple-option)
### StringPooler
Moves strings into an array.
Value type: [`simple option`](#simple-option)
## Shrinking
Remove various attributes to make it harder to understand the resulting JAR.
### LineNumberRemover
Removes line numbers so StackTraces show `(Unknown)` on errors.
Value type: [`simple option`](#simple-option)
### LocalVariableRemover
Removes the local variable attribute from methods.
Value type: [`simple option`](#simple-option)
### RemoveInnerClasses
Removes various attributes such as `outerClass`, `outerMethod`, etc. from the class.
Value type: [`simple option`](#simple-option)
### SourceDebugRemover
Removes the `SourceDebug` attribute from the class.
Value type: [`simple option`](#simple-option)
### SourceFileRemover
Removes the `SourceFile` attribute from the class.
Value type: [`simple option`](#simple-option)
## Shufflers
Randomly shuffles various elements of your jar file to make it more difficult to find them.
### ShuffleFields
Randomly shuffles elements in the mutable list of fields.
Value type: [`simple option`](#simple-option)
### ShuffleMethods
Randomly shuffles elements in the mutable list of methods.
Value type: [`simple option`](#simple-option)
### ShuffleClasses
Randomly shuffles elements in the mutable list of classes.
Value type: [`simple option`](#simple-option)
## Example
Below is a fully functional example configuration file with some zProtect transformers enabled and some disabled.
```yaml
# zProtect Configuration File Version 1
# Reference: https://docs.zprotect.dev/config.html
# May cause issues with certain programs.
antiDebug:
enabled: false
# Strongly advised not to use this.
decompilerCrasher:
enabled: false
badAnnotationCrasher:
enabled: true
flow:
enabled: false
classRenamer:
enabled: false
path: ""
fieldRenamer:
enabled: false
localVariableRenamer:
enabled: false
methodRenamer:
enabled: false
# Optimization
enumOptimiser:
enabled: false
finalRemover:
enabled: false
hideClassMembers:
enabled: false
insnRemover:
enabled: false
kotlinMetadataRemover:
enabled: false
NOPInsnRemover:
enabled: false
removeSignatures:
enabled: false
# Poolers
numberPooler:
enabled: false
stringPooler:
enabled: false
# Shrinking
lineNumberRemover:
enabled: false
localVariableRemover:
enabled: false
removeInnerClasses:
enabled: false
sourceDebugRemover:
enabled: false
sourceFileRemover:
enabled: false
# Shufflers
shuffleFields: false
shuffleMethods: false
shuffleClasses: false
```

19
docs/index.md Normal file
View File

@ -0,0 +1,19 @@
# General Information
## Product Description
zProtect is an online obfuscation platform. Our product makes your Java™ software (and by extention, languages that transpile to Java™[^1]) more difficult to reverse engineer.
## Obfuscation Bundles
For better efficency and lower bandwidth usage, users are required to create zProtect `bundle.zst` files using the zProtect command line tool's [bundle command](./commandline.md). You may download this tool [here](./commandline.md#downloads).
## FAQ
### What is the difference between a commercial license and a non-commercial license?
A non-commercial license has licensing limits that disallow the use of the zProtect obfuscator on any software that you intend to distribute commercially (i.e. for monetary gain). However, a commercial license lifts these limits, and allows you to use the zProtect obfuscator on any software.
### How do I remove the watermark?
A commercial license is required to unlock the option to remove the watermark. This behavior is intentional.
### I currently have a non-commercial license. How do I upgrade to a commercial license?
At the moment, it is not possible to upgrade to a commercial license from a non-commercial license on the web interface. Please contact zProtect support to discuss your options.
[^1]: Guarunteed support for Kotlin™ and Java™. Other JVM languages are supported on a best effort basis.

179
docs/privacy.md Normal file
View File

@ -0,0 +1,179 @@
# Privacy Policy
This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your information when You use the Service and tells You about Your privacy rights and how the law protects You.
We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy.
## Interpretation and Definitions
### Interpretation
The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.
### Definitions
For the purposes of this Privacy Policy:
- Account means a unique account created for You to access our Service or parts of our Service.
- Company (referred to as either "the Company", "We", "Us" or "Our" in this Agreement) refers to NextStorm Software.
- Cookies are small files that are placed on Your computer, mobile device or any other device by a website, containing the details of Your browsing history on that website among its many uses.
- Country refers to: The United Kingdom of Great Britain and Northern Ireland
- Device means any device that can access the Service such as acomputer, a cellphone or a digital tablet.
- Personal Data is any information that relates to an identified oridentifiable individual.
- Service refers to the Website.
- Service Provider means any natural or legal person who processes the data on behalf of the Company. It refers to third-party companies or individuals employed by the Company to facilitate the Service, toprovide the Service on behalf of the Company, to perform services related to the Service or to assist the Company in analyzing how the Service is used.
- Usage Data refers to data collected automatically, either generatedby the use of the Service or from the Service infrastructure itself(for example, the duration of a page visit).
- Website refers to the zProtect website, accessible from https:/zprotect.dev, and any associated services.
- You means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable.
## Collecting and Using Your Personal Data
### Types of Data Collected
#### Personal Data
While using Our Service, We may ask You to provide Us with certain personally identifiable information that can be used to contact or identify You. Personally identifiable information may include, but is not limited to:
- Email address
- Usage Data
#### Usage Data
Usage Data is collected automatically when using the Service.
Usage Data may include information such as Your Device's Internet Protocol address (IP address), browser type, browser version, the pages of our Service that You visit, the time and date of Your visit, the time spent on those pages, unique device identifiers and other diagnostic data.
When You access the Service by or through a mobile device, We may collect certain information automatically, including, but not limited to, the type of mobile device You use, Your mobile device unique ID, the IP address of Your mobile device, Your mobile operating system, the type of mobile Internet browser You use, unique device identifiers and other diagnostic data.
We may also collect information that Your browser sends whenever You visit our Service or when You access the Service by or through a mobile device.
#### Tracking Technologies and Cookies
We use Cookies and similar tracking technologies to track the activity on Our Service and store certain information. Tracking technologies used are beacons, tags, and scripts to collect and track information and to improve and analyze Our Service. The technologies We use may include:
- Cookies or Browser Cookies. A cookie is a small file placed on Your Device. You can instruct Your browser to refuse all Cookies or to indicate when a Cookie is being sent. However, if You do not accept Cookies, You may not be able to use some parts of our Service. Unless you have adjusted Your browser setting so that it will refuse Cookies, our Service may use Cookies.
- Web Beacons. Certain sections of our Service and our emails may contain small electronic files known as web beacons (also referred to as clear gifs, pixel tags, and single-pixel gifs) that permit the Company, for example, to count users who have visited those pages or opened an email and for other related website statistics (for example, recording the popularity of a certain section and verifying system and server integrity).
Cookies can be "Persistent" or "Session" Cookies. Persistent Cookies remain on Your personal computer or mobile device when You go offline, while Session Cookies are deleted as soon as You close Your web browser. Learn more about cookies: What are cookies? by Cloudflare.
We use both Session and Persistent Cookies for the purposes set out below:
- Necessary / Essential Cookies
Type: Session Cookies
Administered by: Us
Purpose: These Cookies are essential to provide You with services available through the Website and to enable You to use some of its features. They help to authenticate users and prevent fraudulent use of user accounts. Without these Cookies, the services that You have asked for cannot be provided, and We only use these Cookies to provide You with those services.
- Cookies Policy / Notice Acceptance Cookies
Type: Persistent Cookies
Administered by: Us
Purpose: These Cookies identify if users have accepted the use of cookies on the Website.
-nFunctionality Cookies
Type: Persistent Cookies
Administered by: Us
Purpose: These Cookies allow us to remember choices You make when You use the Website, such as remembering your login details or language preference. The purpose of these Cookies is to provide You with a more personal experience and to avoid You having to re-enter your preferences every time You use the Website.
For more information about the cookies we use and your choices regarding cookies, please visit our Cookies Policy or the Cookies section of our Privacy Policy.
Use of Your Personal Data
The Company may use Personal Data for the following purposes:
- To provide and maintain our Service, including to monitor the usage of our Service.
- To manage Your Account: to manage Your registration as a user of the Service. The Personal Data You provide can give You access to different functionalities of the Service that are available to You as a registered user.
- For the performance of a contract: the development, compliance and undertaking of the purchase contract for the products, items or services You have purchased or of any other contract with Us through the Service.
- To contact You: To contact You by email, telephone calls, SMS, or other equivalent forms of electronic communication, such as a mobile application's push notifications regarding updates or informative communications related to the functionalities, products or contracted services, including the security updates, when necessary or reasonable for their implementation.
- To provide You with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about unless You have opted not to receive such information.
- To manage Your requests: To attend and manage Your requests to Us.
- For business transfers: We may use Your information to evaluate or conduct a merger, divestiture, restructuring, reorganization, dissolution, or other sale or transfer of some or all of Our assets, whether as a going concern or as part of bankruptcy, liquidation, or similar proceeding, in which Personal Data held by Us about our Service users is among the assets transferred.
- For other purposes: We may use Your information for other purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Service, products, services, marketing and your experience.
We may share Your personal information in the following situations:
- With Service Providers: We may share Your personal information with Service Providers to monitor and analyze the use of our Service, to contact You.
- For business transfers: We may share or transfer Your personal information in connection with, or during negotiations of, any merger, sale of Company assets, financing, or acquisition of all or a portion of Our business to another company.
- With Affiliates: We may share Your information with Our affiliates, in which case we will require those affiliates to honor this Privacy Policy. Affiliates include Our parent company and any other subsidiaries, joint venture partners or other companies that We control or that are under common control with Us.
- With business partners: We may share Your information with Our business partners to offer You certain products, services or promotions.
- With other users: when You share personal information or otherwise interact in the public areas with other users, such information may be viewed by all users and may be publicly distributed outside.
- With Your consent: We may disclose Your personal information for any other purpose with Your consent.
### Retention of Your Personal Data
The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.
The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of Our Service, or We are legally obligated to retain this data for longer time periods.
Transfer of Your Personal Data
Your information, including Personal Data, is processed at the Company's operating offices and in any other places where the parties involved in the processing are located. It means that this information may be transferred to — and maintained on — computers located outside of Your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from Your jurisdiction.
Your consent to this Privacy Policy followed by Your submission of such information represents Your agreement to that transfer.
The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of Your data and other personal information.
### Disclosure of Your Personal Data
#### Business Transactions
If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a different Privacy Policy.
#### Law enforcement
Under certain circumstances, the Company may be required to disclose Your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency).
Other legal requirements
The Company may disclose Your Personal Data in the good faith belief that such action is necessary to:
- Comply with a legal obligation
- Protect and defend the rights or property of the Company
- Prevent or investigate possible wrongdoing in connection with the Service
- Protect the personal safety of Users of the Service or the public
- Protect against legal liability
#### Security of Your Personal Data
The security of Your Personal Data is important to Us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While We strive to use commercially acceptable means to protect Your Personal Data, We cannot guarantee its absolute security.
## Children's Privacy
Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If You are a parent or guardian and You are aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We have collected Personal Data from anyone under the age of 13 without verification of parental consent, We take steps to remove that information from Our servers.
If We need to rely on consent as a legal basis for processing Your information and Your country requires consent from a parent, We may require Your parent's consent before We collect and use that information.
## Links to Other Websites
Our Service may contain links to other websites that are not operated by Us. If You click on a third party link, You will be directed to that third party's site. We strongly advise You to review the Privacy Policy of every site You visit.
We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.
## Changes to this Privacy Policy
We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new Privacy Policy on this page.
We will let You know via email and/or a prominent notice on Our Service, prior to the change becoming effective and update the "Last updated" date at the top of this Privacy Policy.
You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.
## Contact Us
If you have any questions about this Privacy Policy, You can contact us:
- By email: info@n23.io
- By Discord: https://discord.com/invite/dnGKGuwvGH (Preferred)

56
docs/terms.md Normal file
View File

@ -0,0 +1,56 @@
# Terms of Service
This Terms of Service describes Our policies and restrictions on the use of Our Products and the Services.
## Interpretation and Definitions
### Interpretation
The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.
### Definitions
For the purposes of this Terms of Service:
- Company (referred to as either "the Company", "We", "Us" or "Our" in this Agreement) refers to NextStorm Software.
- Personal Data is any information that relates to an identified oridentifiable individual.
- Service refers to the Website.
- Website refers to the zProtect website, accessible from https:/zprotect.dev, and any associated services.
- You means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable.
## Use of the Website
Your access to this Website means you automatically agree to the Terms of Use and the Privacy Policy.
This Website is for your personal and non-commercial use. You may not modify, copy, distribute, transmit, display, publish, licence any products or services obtained from this Website.
You will not use the Website for any purpose that is unlawful by these Terms of Use. You may not use the website in any manner that may harm, disable or cause burden on any server or networks of this website.
## Use of Our Products
It is forbidden to distribute, sell, reverse engineer, modify, decompile, deobfuscate, or unarchive zProtect products or any other binaries provided without explicit permission from the Company.
It is forbidden to share or resell the licences of Our products without permission. zProtect is all right reserved.
It is forbidden to distribute false or abusive information about Our products and the Company.
The Company has the right to suspend your licence of any zProtect product in case of violation of any of these rules.
Data processing
## Data Processing
By using any of Our services you consent to the processing of your personal data in order to protect Our services from misuse, detect bugs, prevent fraud and improve Our services.
We collect and may process the following data:
- Emails;
- Internet Protocol (IP) used to access Our services;
- Active sessions on Our website and related sites;
- Different types of information about your device and local time.
## Disclaimer
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
THE ZPROTECT TEAM ALSO RESERVES THE RIGHT TO SUSPEND YOUR LICENCE TO ZPROTECT PRODUCTS AT ANY TIME WITHOUT GIVEN NOTICE.

3
docs/zh/commandline.md Normal file
View File

@ -0,0 +1,3 @@
# Command Line Tool
Documentation coming soon. In the mean time, please use the `--help` flag for more information.

318
docs/zh/config.md Normal file
View File

@ -0,0 +1,318 @@
# Configuration Options
## Introduction
zProtect uses the [YAML](https://en.wikipedia.org/wiki/YAML) data serialization language for configuring the behavior of the zProtect obfuscator. It is possible to hand-write the configuration file to upload on the web interface, however, you may wish to use the configurator tool in the zProtect dashboard area.
## Value Types
There are a few value types used in the zProtect configuration, which are listed below.
### Boolean
Only accepts `true` and `false` as the value.
For example:
```yaml
# A key with value as true
key1: true
# A key with value as false
key2: false
```
### String
Accepts any text character.
For example:
```yaml
# A key with a string value
key: value
```
### String Array
A list of [`strings`](#string), separated by a newline and prefixed with a dash.
For example:
```yaml
# An array with entries
key:
- something
- another thing
# An empty array
empty: []
```
### Simple Option
A [`string array`](#string-array) with a [`boolean`](#boolean) value `enabled`.
For example:
```yaml
# Option enabled
key:
enabled: true
```
### Option with Path
A [`string array`](#string-array) with a [`boolean`](#boolean) key `enabled` and a [`string`](#string) key `path`.
For example:
```yaml
# Option enabled
key:
enabled: true
path: something
```
## Options
These options specify runtime information and general configuration.
### Output
Name of the obfuscated JAR file.
Value type: [`string`](#string)
### Libraries
Dependencies required to obfuscate your jar to prevent "Not found" errors.
Value type: [`string array`](#string-array)
### Exclusions
Class files and directories that should be ignored by the obfuscator. They will not have any obfuscation applied to them.
Value type: [`string array`](#string-array)
### ForceExclusions
::: tip Note
Transformer priority will fix this in the future.
:::
Class files and directories that should be blacklisted by the obfuscator before processing. This will prevent issues with exclusions if the regular exclusions fail for some unknown reason.
Value type: [`string array`](#string-array)
### Watermark
Adds a watermark to the obfuscated JAR for advertisement. Only removable for users with a Commercial License.
Value type: [`boolean`](#boolean)
## Transformers
These options specify wherether to enable available obfuscation techniques.
### AntiDebug <Badge type="warning" text="incompatibilities" vertical="top" />
::: tip Warning!
This option may cause issues with certain programs.
:::
Blocks debugging options on terminal.
Value type: [`simple option`](#simple-option)
### DecompilerCrasher <Badge type="danger" text="issues" vertical="top" />
::: tip Warning!
This option is very buggy at the moment and will likely cause problems.
You are strongly advised not to use this.
:::
Manipulates instructions to crash decompilers.
Value type: [`simple option`](#simple-option)
### BadAnnotationCrasher
Manipulates annotations to break bad decompilers. This should not cause any major issues.
Value type: [`simple option`](#simple-option)
### Flow
Adds fake jumps, and such to code.
Value type: [`simple option`](#simple-option)
## Renamers
Renames various components of your jar's contents.
### ClassRenamer
Renames class files.
Value type: [`option with path`](#option-with-path)
### FieldRenamer
Renames field names.
Value type: [`simple option`](#simple-option)
### LocalVariableRenamer
Renames local variables.
Value type: [`simple option`](#simple-option)
### MethodRenamer
Renames methods.
Value type: [`simple option`](#simple-option)
## Optimization
### EnumOptimiser
Value type: [`simple option`](#simple-option)
### FinalRemover
Value type: [`simple option`](#simple-option)
### HideClassMembers
Value type: [`simple option`](#simple-option)
### InsnRemover
Value type: [`simple option`](#simple-option)
### KotlinMetadataRemover
Value type: [`simple option`](#simple-option)
### NOPInsnRemover
Value type: [`simple option`](#simple-option)
### RemoveSignatures
Value type: [`simple option`](#simple-option)
## Poolers
### NumberPooler
Value type: [`simple option`](#simple-option)
### StringPooler
Value type: [`simple option`](#simple-option)
## Shrinking
### LineNumberRemover
Value type: [`simple option`](#simple-option)
### LocalVariableRemover
Value type: [`simple option`](#simple-option)
### RemoveInnerClasses
Value type: [`simple option`](#simple-option)
### SourceDebugRemover
Value type: [`simple option`](#simple-option)
### SourceFileRemover
Value type: [`simple option`](#simple-option)
## Shufflers
### ShuffleFields
Value type: [`simple option`](#simple-option)
### ShuffleMethods
Value type: [`simple option`](#simple-option)
### ShuffleClasses
Value type: [`simple option`](#simple-option)
## Example
Below is a fully functional example configuration file with some zProtect transformers enabled and some disabled.
```yaml
# Blocks debugging options on terminal, may cause issues with certain programs.
AntiDebug:
enabled: false
# Manipulates instructions to crash decompilers. Currently very buggy at the moment and will likely cause problems.
# Strongly advised not to use this.
DecompilerCrasher:
enabled: false
# Manipulates annotations to break bad decompilers.
# This should not cause any major issues with Spigot jars.
BadAnnotationCrasher:
enabled: true
# Adds fake jumps, and such to code.
Flow:
enabled: false
# Renames various components of your jar's contents.
# Renames class files.
ClassRenamer:
enabled: false
path: ""
# Renames field names.
FieldRenamer:
enabled: false
# Renames local variables.
LocalVariableRenamer:
enabled: false
# Renames methods.
MethodRenamer:
enabled: false
# Optimization
EnumOptimiser:
enabled: false
FinalRemover:
enabled: false
HideClassMembers:
enabled: false
InsnRemover:
enabled: false
KotlinMetadataRemover:
enabled: false
NOPInsnRemover:
enabled: false
RemoveSignatures:
enabled: false
# Poolers
NumberPooler:
enabled: false
StringPooler:
enabled: false
# Shrinking
LineNumberRemover:
enabled: false
LocalVariableRemover:
enabled: false
RemoveInnerClasses:
enabled: false
SourceDebugRemover:
enabled: false
SourceFileRemover:
enabled: false
# Shufflers
ShuffleFields: false
ShuffleMethods: false
ShuffleClasses: false
```

16
docs/zh/index.md Normal file
View File

@ -0,0 +1,16 @@
# General Information
## Product Description
zProtect is an online obfuscation platform. Our product makes your Java™ software (and by extention, languages that transpile to Java™[^1]) more difficult to reverse engineer.
## FAQ
### What is the difference between a commercial license and a non-commercial license?
A non-commercial license has licensing limits that disallow the use of the zProtect obfuscator on any software that you intend to distribute commercially (i.e. for monetary gain). However, a commercial license lifts these limits, and allows you to use the zProtect obfuscator on any software.
### How do I remove the watermark?
A commercial license is required to unlock the option to remove the watermark. This behavior is intentional.
### I currently have a non-commercial license. How do I upgrade to a commercial license?
At the moment, it is not possible to upgrade to a commercial license from a non-commercial license on the web interface. Please contact zProtect support to discuss your options.
[^1]: Guarunteed support for Kotlin™ and Java™. Other JVM languages are supported on a best effort basis.