|
|
@@ -386,6 +386,7 @@ public class EncryptExecutor {
|
|
|
}
|
|
|
|
|
|
// 密码
|
|
|
+ // libUserIfInputPwd代表的意思是: 对lib进行混淆的时候,用户是否主动指定了密码
|
|
|
boolean libUserIfInputPwd = Boolean.parseBoolean(new String(IOUtil.readFileFromWorkbenchRoot(lib, Constant.USER_IF_INPUT_PWD)));
|
|
|
Logger.debug(EncryptExecutor.class, "libUserIfInputPwd info of lib [" + libJarName + "] -> " + libUserIfInputPwd);
|
|
|
if (libUserIfInputPwd && StrUtil.isBlank(password)) {
|
|
|
@@ -409,6 +410,27 @@ public class EncryptExecutor {
|
|
|
IOUtil.writeContentToFile(encryptedPassword, new File(dirAbsolutePathForLib, Constant.PWD_WINTER_SIMPLE_NAME));
|
|
|
// 由于这里已经处理了,将所有lib的密码(不论当初加密lib时密码是用户主动输入的还是系统自动产生的),都当做系统自动产生的进行录入,所以这里写死为false
|
|
|
IOUtil.writeContentToFile("false", new File(dirAbsolutePathForLib, Constant.USER_IF_INPUT_PWD_SIMPLE_NAME));
|
|
|
+
|
|
|
+ // 擦除MANIFEST.MF中的Premain-Class信息, 如果有的话(步骤:判断是否需要擦除 => 解压lib => 擦除 => 删除原lib => 再压缩得到擦除后的lib => 删除临时目录)
|
|
|
+ byte[] jarManifestFileByte = IOUtil.readFileFromWorkbenchRoot(lib, Constant.MANIFEST_FILE);
|
|
|
+ if (jarManifestFileByte != null) {
|
|
|
+ String content = new String(jarManifestFileByte, StandardCharsets.UTF_8);
|
|
|
+ String agentPremain = "Premain-Class: " + Reverses.class.getName();
|
|
|
+ if (content.contains(agentPremain)) {
|
|
|
+ content = content.replace(agentPremain, "");
|
|
|
+ String libAbsolutePath = lib.getAbsolutePath();
|
|
|
+ String tmpTargetDir = libAbsolutePath.substring(0, libAbsolutePath.length() - 4) + Constant.TMP_DIR_SUFFIX;
|
|
|
+ JarUtil.unJarWar(libAbsolutePath, tmpTargetDir);
|
|
|
+ IOUtil.writeContentToFile(content, new File(tmpTargetDir, Constant.MANIFEST_FILE));
|
|
|
+ // 删除原lib
|
|
|
+ IOUtil.delete(lib);
|
|
|
+ // 再生成lib
|
|
|
+ JarUtil.doJarWar(tmpTargetDir, libAbsolutePath);
|
|
|
+ // 删除临时目录
|
|
|
+ IOUtil.delete(new File(tmpTargetDir));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
});
|
|
|
|
|
|
@@ -458,13 +480,6 @@ public class EncryptExecutor {
|
|
|
libJarAndTmpDirMap.put(jarAbsolutePath, temDir);
|
|
|
// 删除原来的lib包
|
|
|
IOUtil.delete(new File(jarAbsolutePath));
|
|
|
- // 擦除MANIFEST.MF中的Premain-Class信息, 如果有的话
|
|
|
- File jarManifestFile = new File(temDir, Constant.MANIFEST_FILE);
|
|
|
- if (jarManifestFile.exists()) {
|
|
|
- String content = IOUtil.readContentFromFile(jarManifestFile);
|
|
|
- content = content.replace("Premain-Class: " + Reverses.class.getName(), "");
|
|
|
- IOUtil.writeContentToFile(content, jarManifestFile);
|
|
|
- }
|
|
|
});
|
|
|
}
|
|
|
|