|
|
@@ -249,39 +249,39 @@ public class EncryptExecutor {
|
|
|
|
|
|
// step0. 解压jar到jarRootDir下
|
|
|
String lastStep = "step13";
|
|
|
- showProcess("step00", lastStep, "un-jar-war");
|
|
|
List<String> filePathList = JarUtil.unJarWar(originJarOrWar, targetRootDir);
|
|
|
+ showProcess("step00", lastStep, "un-jar-war");
|
|
|
|
|
|
// step1. 混淆xml
|
|
|
- showProcess("step01", lastStep, "clean-xml-files");
|
|
|
File targetRootDirFile = new File(targetRootDir);
|
|
|
if (includeXmlPrefixSet != null && includeXmlPrefixSet.size() > 0) {
|
|
|
cleanXmlFiles(filePathList, targetRootDirFile);
|
|
|
}
|
|
|
+ showProcess("step01", lastStep, "clean-xml-files");
|
|
|
|
|
|
// step2. jar中的某些lib可能也需要加密,这里先(将那些需要加密的lib)进行解压,(解压到对应的临时目录,以便后面进行加密处理)
|
|
|
- showProcess("step02", lastStep, "un-lib-jar");
|
|
|
unLibJar();
|
|
|
+ showProcess("step02", lastStep, "un-lib-jar");
|
|
|
|
|
|
// step3. 找到需要加密混淆的class文件
|
|
|
- showProcess("step03", lastStep, "filter-classes");
|
|
|
List<File> allFiles = IOUtil.listSubFile(targetRootDirFile, 1);
|
|
|
List<File> allNeedEncryptedClassFileList = filterClasses(allFiles);
|
|
|
+ showProcess("step03", lastStep, "filter-classes");
|
|
|
|
|
|
- showProcess("step04", lastStep, "encrypt-classes");
|
|
|
// step4.1. 根据原.class文件,生成加密后的.class文件,并存至Constant.ENCRYPTED_CLASSES_SAVE_DIR
|
|
|
List<String> allAlreadyEncryptedClassFileList = encryptClasses(allNeedEncryptedClassFileList, new File(targetRootDir,
|
|
|
Constant.DEFAULT_ENCRYPTED_CLASSES_SAVE_DIR));
|
|
|
// step4.2. 生成记录已加密class的全类名的清单文件
|
|
|
generateChecklistFile(allAlreadyEncryptedClassFileList);
|
|
|
+ showProcess("step04", lastStep, "encrypt-classes");
|
|
|
|
|
|
// step5. 记录印章(在解密时,可通过 checklist + 印章 判断一个class是否是被class-winter加密过)
|
|
|
- showProcess("step05", lastStep, "record-seal");
|
|
|
generateSealFile();
|
|
|
+ showProcess("step05", lastStep, "record-seal");
|
|
|
|
|
|
// step6. 设置启动jar包时需要检查的jvm参数项
|
|
|
- showProcess("step06", lastStep, "setting-jvm-arg-check-items");
|
|
|
settingJvmArgCheckItems();
|
|
|
+ showProcess("step06", lastStep, "setting-jvm-arg-check-items");
|
|
|
|
|
|
// step7. 混淆原.class文件(即:清空方法体)
|
|
|
clearClassMethod(allNeedEncryptedClassFileList);
|