1. 找到License.class
在words的jar包中找到License类.验证方法入口在这里
虽然有两个setLicense()方法,细心点看,最后调用的都是zzV方法,只是不同的重载。
public class License {
private zz2B zzYIM = zz2B.zzoF();
public License() {
}
public void setLicense(String licenseName) throws Exception {
if (licenseName == null) {
throw new NullPointerException(this.zzYIM.zzZu(new byte[]{108, 105, 99, 101, 110, 115, 101, 78, 97, 109, 101}));
} else {
(new zzZJ5()).zzV(licenseName, zzZY2.zzkc());
}
}
public void setLicense(InputStream stream) throws Exception {
if (stream == null) {
throw new NullPointerException(this.zzYIM.zzZu(new byte[]{115, 116, 114, 101, 97, 109}));
} else {
(new zzZJ5()).zzV(stream);
}
}
}
进入zzV()方法
在zzV()方法下面有两个方法,类似于下面这样。
zzZaQ就是要修改的方法。让他始终返回1就好了。
static int zzZaQ() {
boolean var0 = zzYIF == null || zzYIF.zzYIH == 0 || (new Date()).after(zzYIF.zzYII) || zzYNP.zzYlS() == 4096;
boolean var1 = zzZE1.zzYZQ() == 0;
int var2 = var0 && var1 ? 0 : 1;
return var2; // update , return 1
}
static int zzZaP() {
boolean var0 = zzYIF == null || zzYIF.zzYIH == 0 || (new Date()).after(zzYIF.zzYII) || zzYNP.zzYlS() == 4096;
boolean var1 = zzZE1.zzYZQ() == 0;
int var2 = var0 && var1 ? 0 : 1;
return var2;
}
2. 利用Javassist修改字节码
Maven添加依赖
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>${javaassist.version}</version>
</dependency>
<properties>
<javaassist.version>3.21.0-GA</javaassist.version>
</properties>
编写方法
public void removeWatermark() throws NotFoundException, CannotCompileException, IOException {
ClassPool.getDefault().insertClassPath("xxxx"); // jar包的绝对路径
CtClass targetClass = ClassPool.getDefault().getCtClass("com.aspose.words.zzZJ5"); //类路径
CtMethod targetMethod = targetClass.getDeclaredMethod("zzZaQ"); //方法路径
targetMethod.setBody("{return 1;}"); //修改方法体,始终返回1
targetClass.writeFile("/Users/zexho/Documents/"); //保存修改,内容为保存的路径。
}
3. 更新Jar包
- 将.jar包名后缀改为其他压缩格式。mac的改为tar,win可以改为zip
- 解压tar,将新生成class文件替换旧的
- 删除META-INF文件中的RSA和SF文件
- 确保当前位置在一级目录中,看到这两个文件的位置。

- 重新打包Jar
jar cvf [新文件的名字.jar] .例如jar cvf aspose-slides-20.5-jdk16.jar .
4. Maven重新导入Jar包
在maven中导入该jar包。然后刷新就可以用了。

只能个人使用,不可商用