以下内容仅供学习研究使用切勿商业用途
以下操作仅以19.6版本为参考其他版本可能有所不同
aspose-slides 主要用来PPT转图片/PPT转PDF 支持.ppt/.pptx格式,功能强大。
破解步骤
aspose 官网是支持直接下载jar包的
可以看到,设置许可最终调用的是com.aspose.slides.internal.mx.return这个类的.jdMethod_do方法,接下来进入该类再次查看
打开return这个类,发现里面有很多jdMethod_do方法,我们主要看下面这个入参为InputStream的
再次发现InputStream被传入到下面这个方法
上面代码可以看到再取许可文件的一些信息,这里就发现了一个小可爱
找到改方法
发现改方法居然在校验许可的RSA加密信息,并且这个方法是个void返回,那么最简单的操作就是清空该方法的方法体内容即可。
因为这里只需要清空方法体,就不用javassist.jar来操作了,使用JByteMode打开jar文件,找到retrun类
点开retrun,我们发现很多个do方法,主要是看我选择这个,从上往下数,第十个位置的do,然后点击鼠标右键点击清空
上面的菜单可能根据工具版本不同有可能是英文,看着来就行
清空后
现在将改动的另存为一个jar文件
使用压缩工具打开新保存的jar
除了上面红色圈的其他全部删除,删除后如下
接下来就可以愉快的测试研究了
需要注意License加载,如果同时使用多个aspose的组件,请分别引入各自的License,否则水印还在哟
例如:
com.aspose.words.License asposeLicense = new com.aspose.words.License(); com.aspose.slides.License asposeLicense = new com.aspose.slides.License();
虽然类名字都一样License,但是两个包的或者还有个cells包的
final static String license =
"<License>\n" +
" <Data>\n" +
" <Products>\n" +
" <Product>Aspose.Total for Java</Product>\n" +
" <Product>Aspose.Words for Java</Product>\n" +
" </Products>\n" +
" <EditionType>Enterprise</EditionType>\n" +
" <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" +
" <LicenseExpiry>20991231</LicenseExpiry>\n" +
" <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" +
" </Data>\n" +
" <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>\n" +
"</License>";
private static ByteArrayOutputStream pptToPdfStream(InputStream in) throws Exception {
//注意各个组件必须设置自己的License类
try (InputStream is = new ByteArrayInputStream(license.getBytes("UTF-8"));){
com.aspose.slides.License asposeLicense = new com.aspose.slides.License();
asposeLicense.setLicense(is);
}
Presentation ppt = new Presentation (in);
ByteArrayOutputStream dstStream = new ByteArrayOutputStream();
ppt.save(dstStream, SaveFormat.Pdf);
return dstStream;
}
aspose-slides-19.6.jar下载:
http://blog.xqlee.com/article/pages.html