java:编写jar包加密工具,防止反编译
2021-04-30 04:29
                         标签:orm   abs   http   absolute   layout   nim   lan   提取   commons    网盘: 链接:https://pan.baidu.com/s/1x4OB1IF2HZGgtLhd1Kr_AQ  网盘内是已生成可用工具,下载可以直接使用,使用前看一下READ.txt文件。           代码先进行打包,Maven ——> clean ——> install       代码运行测试 选择jar文件,保存路径,点击生成即可。   下载exe生成器 1. exe4j : https://www.apponic.com/phome/download/95409-2-1593674778-a86aa6a3165855674c85c5a9dc7c8dbb/       2. 点击 next ,勾选JAR in EXE       3. 点击 next ,填写打包后的 exe程序名称和保存路径       4. 点击 next ,设置程序方式,兼容系统64位       5. 点击 next ,添加jar包,选择运行的主类的main方法                   6. 点击 next ,设置JDK运行版本       7. 复制jre,放到jre的空文件夹下:D:/jre/jre             8. 加载jre环境                   9. 一直点 next ,等待安装完成。          10. 尝试运行exe文件           成功!!   java:编写jar包加密工具,防止反编译 标签:orm   abs   http   absolute   layout   nim   lan   提取   commons    原文地址:https://www.cnblogs.com/nhdlb/p/13230342.html懒人方案
提取码:glx7Maven依赖
xml version="1.0" encoding="UTF-8"?>
project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    modelVersion>4.0.0modelVersion>
    groupId>com.zy.javagroupId>
    artifactId>UtilartifactId>
    version>1.0-SNAPSHOTversion>
    parent>
        groupId>org.springframework.bootgroupId>
        artifactId>spring-boot-starter-parentartifactId>
        version>1.5.6.RELEASEversion>
    parent>
    properties>
        java.version>1.8java.version>
    properties>
    dependencies>
        dependency>
            groupId>com.github.core-libgroupId>
            artifactId>xjarartifactId>
            version>v1.1.4version>
        dependency>
        dependency>
            groupId>org.apache.commonsgroupId>
            artifactId>commons-compressartifactId>
            version>1.18version>
        dependency>
        dependency>
            groupId>com.github.core-libgroupId>
            artifactId>loadkitartifactId>
            version>v1.0.0version>
        dependency>
    dependencies>
    build>
        plugins>
            plugin>
                groupId>org.springframework.bootgroupId>
                artifactId>spring-boot-maven-pluginartifactId>
                version>1.5.6.RELEASEversion>
                configuration>
                    fork>truefork>
                configuration>
            plugin>
        plugins>
    build>
project>
java代码
package com.zy.java;
import io.xjar.XConstants;
import io.xjar.XKit;
import io.xjar.boot.XBoot;
import io.xjar.key.XKey;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.security.NoSuchAlgorithmException;
public class Practice{
    private static String password = "你的加密密码";
    private static JButton openItem, saveItem;
    private static FileDialog openDia, saveDia;// 定义“打开、保存”对话框
    private static String filePathOld;//旧文件路径
    private static String filePathNew;//新文件路径
    private static String fileName;//文件名
    static JFrame f = null;
    static JTextField locationText, typeText;
    public static void main(String[] args) {
        int gap = 5;
        f = new JFrame("加密程序");
        ImageIcon icon = new ImageIcon("src\\images\\2.ico");
        f.setIconImage(icon.getImage());// 给窗体设置图标方法
        f.setSize(550, 310);
        f.setLocation(200, 200);
        f.setLayout(null);
        JPanel pInput = new JPanel();
        pInput.setBounds(gap, gap, 520, 60);
        pInput.setLayout(new GridLayout(2, 3, gap, gap));
        JLabel location = new JLabel("JAR路径:");
        locationText = new JTextField(10);
        openItem = new JButton("选取");// 创建“打开"菜单项
        JLabel type = new JLabel("保存路径:");
        typeText = new JTextField(10);
        saveItem = new JButton("选取");// 创建“保存"菜单项
        openDia = new FileDialog(f, "打开", FileDialog.LOAD);
        saveDia = new FileDialog(f, "保存", FileDialog.SAVE);
        JButton b = new JButton("生成");
        pInput.add(location);
        pInput.add(locationText);
        pInput.add(openItem);
        pInput.add(type);
        pInput.add(typeText);
        pInput.add(saveItem);
        //文本域
        final JTextArea ta = new JTextArea();
        ta.setLineWrap(true);
        b.setBounds(220, 60 + 30, 80, 30);
        ta.setBounds(gap, 80 + 60, 523, 120);
        f.add(pInput);
        f.add(b);
        f.add(ta);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
        myEvent();
        //鼠标监听
        b.addActionListener(new ActionListener() {
            boolean checkedpass = true;
            public void actionPerformed(ActionEvent e) {
                XKey xKey = null;
                System.out.println(" --- : "+fileName);
                String newPath = filePathNew+"\\"+fileName+"-xjar.jar";
                String oldPath = filePathOld;
                try {
                    xKey = XKit.key(password);
                    XBoot.encrypt(oldPath, newPath, xKey, XConstants.MODE_DANGER);
                    ta.append(" Success! ");
                } catch (NoSuchAlgorithmException eg) {
                    eg.printStackTrace();
                } catch (Exception eg) {
                    eg.printStackTrace();
                }
                checkedpass = true;
                checkEmpty(locationText, "JAR路径");
                checkEmpty(typeText, "保存路径");
                if (checkedpass) {
                    String model = "加密jar包保存路径 :%s";
                    String result = String.format(model, newPath);
                    ta.setText("");
                    ta.append(result);
                }
            }
            //检验是否为空
            private void checkEmpty(JTextField tf, String msg) {
                if (!checkedpass)
                    return;
                String value = tf.getText();
                if (value.length() == 0) {
                    JOptionPane.showMessageDialog(f, msg + " 不能为空");
                    tf.grabFocus();
                    checkedpass = false;
                }
            }
        });
    }
    //选取按钮监听
    private static void myEvent() {
        // 选取监听
        openItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                openDia.setVisible(true);//显示打开文件对话框
                String dirpath = openDia.getDirectory();//获取打开文件路径并保存到字符串中。
                String Name = openDia.getFile();//获取打开文件名称并保存到字符串中
                System.out.println(" --- : " + Name.split(".jar")[0]);
                fileName = Name.split(".jar")[0];
                filePathOld = dirpath+Name;
                if (dirpath == null || Name == null)//判断路径和文件是否为空
                    return;
                locationText.setText(dirpath+Name);
            }
        });
        // 选取监听
        saveItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JFileChooser chooser = new JFileChooser();
                chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
                chooser.showDialog(new JLabel(), "选择");
                File file = chooser.getSelectedFile();
                if (file == null) {
                    System.out.println(" 路径 :"+file.getAbsoluteFile().toString());
                    typeText.setText(file.getAbsoluteFile().toString());
                    filePathNew = file.getAbsoluteFile().toString();
                }else{
                    System.out.println(" 路径 :"+file.getAbsoluteFile().toString());
                    typeText.setText(file.getAbsoluteFile().toString());
                    filePathNew = file.getAbsoluteFile().toString();
                }
            }
        });
        // 窗体关闭监听
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}



下载安装完成后,界面如图,
第一步完成注册,Name,Company随便填就是了,注册码:A-XVK258563F-1p4lv7mg7sav (网上很多啊,随便搜一个就行)
















