{"id":22283404,"url":"https://github.com/dreamwugit/java-jar-encryptor","last_synced_at":"2025-07-13T08:05:30.461Z","repository":{"id":241595678,"uuid":"213594677","full_name":"DreamWuGit/Java-Jar-Encryptor","owner":"DreamWuGit","description":"this is an utility to encrypt a java package, support java10 or above","archived":false,"fork":false,"pushed_at":"2019-10-09T09:41:59.000Z","size":14,"stargazers_count":7,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-05T03:51:12.630Z","etag":null,"topics":["encryption","jar","java"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DreamWuGit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-08T08:56:22.000Z","updated_at":"2024-07-21T18:51:48.000Z","dependencies_parsed_at":"2024-05-29T07:28:54.964Z","dependency_job_id":null,"html_url":"https://github.com/DreamWuGit/Java-Jar-Encryptor","commit_stats":null,"previous_names":["dreamwugit/java-jar-encryptor"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DreamWuGit/Java-Jar-Encryptor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DreamWuGit%2FJava-Jar-Encryptor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DreamWuGit%2FJava-Jar-Encryptor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DreamWuGit%2FJava-Jar-Encryptor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DreamWuGit%2FJava-Jar-Encryptor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DreamWuGit","download_url":"https://codeload.github.com/DreamWuGit/Java-Jar-Encryptor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DreamWuGit%2FJava-Jar-Encryptor/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265108514,"owners_count":23712466,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["encryption","jar","java"],"created_at":"2024-12-03T16:39:58.768Z","updated_at":"2025-07-13T08:05:30.416Z","avatar_url":"https://github.com/DreamWuGit.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Java-Jar-Encryptor\nthis is an utility to encrypt a java package\nJava Jar包加密工具，不包含混淆操作\n\n目录结构及文件：\n\n./Java-Jar-Encryptor/encrypt   ## 加密库\n\n—– encrypt.cpp\n\n—– Makefile\n\n./Java-Jar-Encryptor/decrypt    ## 解密库\n\n—–decrypt.cpp\n\n—– Makefile\n\n./JarEncrypt2/Encrypt.java   ## Java加密执行文件\n\n需要注意的几个地方：\n\nEncrypt.java\n\nif(name.endsWith(“.class”) \u0026\u0026 name.startsWith(“org/test/”)){\n\n//org.test开头的文件进行加密\n\ndecrypt.cpp\n\nif(name\u0026\u0026strncmp(name,”org/test/”,12)==0){ \n\n//只对包名以org/test/\n\n进入encrypt目录，执行make，编译生成libencrypt.so：\n\n$ make\n\ng++ -fPIC  -I /usr/java/default/include -I /usr/java/default/include/linux -c encrypt.cpp\n\ng++ -fPIC  -shared  -o libencrypt.so encrypt.o\n\n \n\n进入decrypt目录，执行make，编译生成liblinux.so：\n\n$ make\n\ng++ -fPIC  -I /usr/java/default/include -I /usr/java/default/include/linux -c decrypt.cpp\n\ng++ -fPIC  -shared  -o liblinux.so decrypt.o\n\n \n\n回到上级目录，编译Encrypt.java\n\njavac Encrypt.java\n\n生成Encrypt.class\n\n \n\n执行加密：假设要对目标jar包Test.jar 执行加密\n\n java -Djava.library.path=./encrypt/ -cp . Encrypt -src Test.jar\n\nencode jar file: [Test.jar ==\u003e Test_encrypt.jar ]\n\nencrypt org.test.Test.class\n\nencrypt org.test.Test2.class\n\n生成了加密后的jar包：Test_encrypt.jar\n\n可以先试运行一下这个jar包：\n\njava -cp Test_encrypt.jar com.lxw1234.test.Test\n\nException in thread “main” java.lang.ClassFormatError: Incompatible magic value 564235447886 in class file com/lxw1234/test/Test\n\nat java.lang.ClassLoader.defineClass1(Native Method)\n\nat java.lang.ClassLoader.defineClass(ClassLoader.java:800)\n\nat java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)\n\nat java.net.URLClassLoader.defineClass(URLClassLoader.java:449)\n\nat java.net.URLClassLoader.access$100(URLClassLoader.java:71)\n\nat java.net.URLClassLoader$1.run(URLClassLoader.java:361)\n\nat java.net.URLClassLoader$1.run(URLClassLoader.java:355)\n\nat java.security.AccessController.doPrivileged(Native Method)\n\nat java.net.URLClassLoader.findClass(URLClassLoader.java:354)\n\nat java.lang.ClassLoader.loadClass(ClassLoader.java:425)\n\nat sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)\n\nat java.lang.ClassLoader.loadClass(ClassLoader.java:358)\n\nat sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)\n\n使用jd-gui反编译：\n\n已经无法反编译。\n\n \n\n使用解密库文件解密后执行：\n\nexport LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/liuxiaowen/JarEncrypt2/decrypt\n\njava -agentlib:linux -jar Test_encrypt.jar \n-jar 后面填写目标要执行的jar包\n\n可以正常执行。\n\n这样，再发布时候，需要把Test_encrypt.jar 和 liblinux.so 发布出去，执行时候引入liblinux即可。\n\n参考文章：http://www.alonemonkey.com/2016/05/25/encrypt-jar-class/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdreamwugit%2Fjava-jar-encryptor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdreamwugit%2Fjava-jar-encryptor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdreamwugit%2Fjava-jar-encryptor/lists"}