前言:
有个兄弟让我帮忙研究一下AspXXX.Slides组件的注册机制, 我答应了,以前曾经研究过AspXXX.Words组件,我想AspXXX.Slides组件也应该相似。
根据以前研究 AspXXX.Words组件的经验,知道AspXXX系列组件是用SHA1withRSA算法对License进行签名的,在没办法拿到RSA私钥的情况下想要做注册机是十分困难的,我自认没这个能力,所以就简单处理了:用蛮力解决!
1、先随便写个license,可以参考我以前研究所得的Aspose.Words组件的License格式来写,以减少后面分析License格式的工作量,不然的话,随便构造结构不对的License,在测试过程中会带来很大麻烦;
2、然后写个测试程序。可以直接使用发布自带的examples的例子,我使用的是cloneslide那个例子,不过这个例子有问题,他提示的命令格式是:
java ppt2ppt <source file> <destination file>
是错误的,正确的应该是:
java CloneSlide <source file 1> <source file 2> <destination file>
该例子的实际功能是把两个ppt文件合并成一个,而不是原来那个命令行格式所表示的把一个PPT复制一份;
3、先运行测试程序:
java CloneSlide test.ppt test1.ppt test_copy.ppt
抛错如下:
com.aspose.slides.license.AsposeLicenseException: License parsing error.
at com.aspose.slides.obfuscated.alu.if(SourceFile:316)
at com.aspose.slides.obfuscated.alu.do(SourceFile:206)
at com.aspose.slides.License.setLicense(SourceFile:31)
at CloneSlide.main(CloneSlide.java:27)
Caused by: com.aspose.slides.license.AsposeLicenseException: Signature check error.
at com.aspose.slides.obfuscated.alu.do(SourceFile:354)
at com.aspose.slides.obfuscated.alu.if(SourceFile:303)
... 3 more
Caused by: com.aspose.slides.license.AsposeLicenseException: The signature is invalid.
at com.aspose.slides.obfuscated.alu.do(SourceFile:351)
... 4 more
4、把组件包aspose.slides-2.7.0.jar(我处理的是2.7.0版)用JD-GUI打开(反编译),查找以下关键字词:
License parsing error
Signature check error.
The signature is invalid.
找到之后,分别记下它们都位于哪个类中,我发现三个抛错信息都是在:
com.aspose.slides.obfuscated.alu.class
类中。
根据反编译的源码,我分析出只需要抛出“Signature check error.”异常的地方,直接屏蔽抛出异常的代码或直接删除,就不会再抛出License签名验证失败的异常了。
5、用rej工具(我用的是0.7版)打开aspose.slides-2.7.0.jar,并找到类 com.aspose.slides.obfuscated.alu.class,双击后就出现类似汇编语言的代码,直接用查找功能查找
Signature check error.
,找到后,就把构造签名验证失败异常并抛出的代码都删除,然后保存;
6、再次测试,抛出如下:
java.lang.SecurityException: SHA1 digest error for com/aspose/slides/obfuscated/alu.class
at sun.security.util.ManifestEntryVerifier.verify(ManifestEntryVerifier.java:194)
at java.util.jar.JarVerifier.processEntry(JarVerifier.java:201)
at java.util.jar.JarVerifier.update(JarVerifier.java:188)
at java.util.jar.JarVerifier$VerifierStream.read(JarVerifier.java:411)
at sun.misc.Resource.getBytes(Resource.java:97)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:256)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at com.aspose.slides.License.setLicense(SourceFile:30)
at CloneSlide.main(CloneSlide.java:27)
SHA1 digest error for com/aspose/slides/obfuscated/alu.class
该组件对类有签名验证,我改了类,签名验证过不了了。类的签名数据放在哪里我是知道的:
META-INF\LE-E14C6.SF 和
META-INF\MANIFEST.MF
我尝试着去掉com/aspose/slides/obfuscated/alu.class 类的签名条目,再次测试又抛错:
Exception in thread "main" java.lang.SecurityException: cannot verify signature block file META-INF/
LE-E14C6
at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:202)
at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:176)
at java.util.jar.JarVerifier.processEntry(JarVerifier.java:234)
at java.util.jar.JarVerifier.update(JarVerifier.java:188)
at java.util.jar.JarFile.initializeVerifier(JarFile.java:321)
at java.util.jar.JarFile.getInputStream(JarFile.java:386)
at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:689)
at sun.misc.Resource.cachedInputStream(Resource.java:59)
at sun.misc.Resource.getByteBuffer(Resource.java:154)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:249)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: CloneSlide. Program will exit.
原来对LE-E14C6.SF文件本身也有签名验证。到这里好象事情变得复杂了。
7、仔细看了一下 META-INF\LE-E14C6.SF 文件, 文件头:
Signature-Version: 1.0
SHA1-Digest-Manifest-Main-Attributes: HCoI2/EgEodlAzoVNOdp6dzZpdk=
Created-By: 1.6.0_22 (Sun Microsystems Inc.)
SHA1-Digest-Manifest: HzZmiMdRKEbSSchubBi0VBe87Zk=
应该就是 LE-E14C6.SF 文件本身的签名数据了,那我能不能干脆直接把LE-E14C6.SF整个文件都删除、把MANIFEST.MF文件中的所有签名数据也都删除呢?试试吧。
8、分三种情况分别处理测试:
a、把 LE-E14C6.SF 文件删除,MANIFEST.MF文件中的所有签名数据删除:再测试,不再抛出文件签名验证失败的异常(抛出其他异常了,下面会讲到);
b、把 LE-E14C6.SF 文件删除,其他文件保留:再测试,情况跟a相同;
c、把 LE-E14C6.SF和LE-E14C6.RSA都删除,然后把MANIFEST.MF文件中的所有签名数据删除:再测试,情况跟a相同;
以上三个测试说明要让系统跳过文件签名验证,只需删除 LE-E14C6.SF 文件即可。
到这里,文件签名验证已经跳过去了,现在抛出的异常如下:
com.aspose.slides.license.AsposeLicenseException: This license is disabled, please contact Aspose to obtain a new license.
at com.aspose.slides.obfuscated.alu.if(SourceFile:372)
at com.aspose.slides.obfuscated.alu.do(SourceFile:208)
at com.aspose.slides.License.setLicense(SourceFile:31)
at CloneSlide.main(CloneSlide.java:27)
9、再次用JD-GUI打开类包,找到“This license is disabled, please contact Aspose to obtain a new license.”所在的类和位置,在rej中把构造并抛出该异常的代码删除并保存;再次测试,程序不再抛异常,在当前目录下也生成了我们期望的合并文件。
至此,本次研究算是完成了。
后话:
从上次研究Aspose.Words文件我知道了在Aspose组件中都包含一个黑名单文件,里面包含了被厂商禁止使用的正版License的序列号。Aspose.Slides组件的黑名单文件位置是:
com\aspose\metafiles\resources\Aspose.License.BlackList.xml,如果系统提示License在黑名单中,则可以把黑名单中的内容清空再试。
相关推荐
Aspose.Words + Aspose.Cells + Aspose.Slides 19.12整合无水印无Trunc版,专为PDF转换而来,有缘人自然懂。
在这个“Aspose.Cells.dll Aspose.Slides.dll Aspose.Words.dll 三合一无限制版本”中,我们讨论的是Aspose针对.NET平台的三个核心组件: 1. **Aspose.Cells.dll**: 这是Aspose为.NET提供的电子表格处理组件。它...
这个资源提供了两个版本的 Aspose 组件:com.aspose.slides18.7 和 com.aspose.slides.18.6,它们是 Aspose Slides 库的不同版本。Aspose Slides 主要用于操作 PowerPoint 文件,而 Aspose Words 则专注于 Word 文档...
这个DLL文件是Aspose.Slides库的核心组件,包含了所有用于处理PowerPoint的API和功能。开发者可以将这个库引用到他们的项目中,通过调用其中的类和方法来实现PPT的操作。 4. **应用场景**: - **自动化报告**:...
1. **安装Aspose.Slides库**:在你的C#项目中,首先需要引入Aspose.Slides库。这可以通过NuGet包管理器完成,搜索"Aspose.Slides"并安装对应的包。 2. **导入必要的命名空间**:在C#源代码文件中,你需要导入`using...
Aspose.Slides 是一个无图形用户界面的.NET幻灯片管理控件,它使.NET应用程序无需使用Aspose.Slides 软件就可以读写幻灯片文档。Aspose.Slides 是第一款提供了幻灯片文档管理功能的.NET控件和所有的Aspose控件一样
Aspose.Slides.dll 15.1.0.0 Aspose.Words.dll 11.9.0.0 破解版 无水印 无乱码
aspose.slides-22.2无水印
Aspose.Slides是Aspose公司提供的一款强大的幻灯片处理组件,主要用于处理Microsoft PowerPoint格式的文件,如PPT、PPTX等。这个组件以其高效、稳定和全面的功能在IT行业中广泛应用,尤其是在自动化报告、数据可视化...
利用Aspose.Slides替换模板PPT内文本快速生成PPT
Aspose.Slides 是一个强大的.NET库,专为开发者设计,用于处理Microsoft PowerPoint文件格式,无需依赖Microsoft Office软件。这个库支持创建、编辑、转换、渲染PPT、PPTX、PPS、PPSX等文件格式。在C#中使用Aspose....
Aspose.Slides完美破解版可以支持转pdf 转html 可以在不装offcie的情况操作pointpont 支持2007officle
java利用Aspose.slides.jar将本地ppt文档转化成pdf(完美破解版 无水印 无中文乱码)
Aspose.Slides 15.1 .Net 破解版(无水印),适合c#开发者操作PPT文档使用,服务端无需安装Office组件。
aspose-slides-18.7.jar 用来将ppt文件转为pdf aspose-cells-18.9.jar 用来将excel文件转为pdf aspose-words-18.6.jar 用来将word文件转为pdf 破解版亲测没有水印。jar包和license.xml都在工程的lib目录里。
aspose.slides 17.7破解版,17年7月最新版本,支持.net平台,是操作ppt文档的最好工具类之一。
Aspose.Slides 15 学习验证 用于动态生成ppt,类似python的办公自动化处理ppt,不限制.net版本,.net framework 4 ~ .net8应该都可以使用,本人测试过.net8和.net framework 4两个版本,其他中间版本没测试过,官网限制...
Aspose.Slides 是一款强大的开发工具,专为.NET开发者设计,用于处理幻灯片文档,如Microsoft PowerPoint格式(.pptx, .ppt)等。它提供了丰富的API,使开发者能够在应用程序中创建、编辑、转换、渲染和显示PPT文件...
Aspose三剑客(Aspose.Cells_8.3.2.1、Aspose.Slides_15.1.0.0和Aspose.Words_15.1.0.0)完美破解打包下载
通过深入研究"Aspose.Slides-for-.NET-master"中的示例代码,开发者可以掌握如何在.NET应用程序中高效地处理PowerPoint文件,无论是简单的读取和展示,还是复杂的编辑和转换,都能游刃有余。这些示例涵盖了基本操作...