aspose-cells-20.7.jar 去除水印及次数限制

news2024/9/25 7:19:41

1.使用 jd-gui.exe 反编译查看,直接搜索 License

在这里插入图片描述

1.修改

  public static boolean isLicenseSet() {
    return (a != null);
  }

改成

  public static boolean isLicenseSet() {
    return true;
  }

2.修改

  public void setLicense(InputStream stream) {
    Document document = null;
    if (stream != null)
      try {
        DocumentBuilder documentBuilder = zad.b();
        document = documentBuilder.parse(stream);
      } catch (Exception exception) {
        throw new CellsException(9, zf.a(new byte[] { 
                -20, 93, -23, 54, -20, -49, -59, 86, -9, -86, 
                49, 44, -59, 71, -52, -86, -90, 6, -90, -25, 
                -86, 1, -1, -92, -91, -126, 7, 113, -66, -95, 
                -121, 16, -122, -126, 7, 104, -40, -70, -10, -37, 
                126, 7, -111, -121, -121 }) + exception.getMessage());
      }  
    a(document);
  }

改成

  public void setLicense(InputStream paramInputStream){
    a = new License();
    zbiw.a();
  }

3.修改

  private static Date k(String paramString) {
    if (paramString == null || paramString.length() < 8)
      return null; 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(zf.a(new byte[] { 
            79, 89, 33, -52, 79, -121, -125, 33, 71, -126, 
            105, -121 }));
    try {
      return simpleDateFormat.parse(paramString);
    } catch (ParseException parseException) {
      throw new IllegalArgumentException(zf.a(new byte[] { 
              -21, -113, -77, 13, -115, 27, Byte.MIN_VALUE, 35, 103, -52, 
              -20, -106, 71, 95, 31, -73, -76, -38, 13, 31, 
              -91, -97, -102, 85, -68, -33, -19, -87, -127, -14, 
              78, -23, 6, -25, -94, 1, -97, -95, -57, -121 }));
    } 
  }

改成

  private static Date k(String paramString){
    return new Date(Long.MAX_VALUE);
  }

2.生成 aspose-cells-20.7-crack.jar

修改 class 这里使用 javassist:
新建一个 Spring boot 项目:
pom 文件中引用 javassist

        <dependency><!--aspose的jar破解工具-->
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.20.0-GA</version>
        </dependency>

启动类中创建一个静态方法 crackAspose

    public static void crackAspose(String JarPath) throws Exception {
        // 这个是得到反编译的池
        ClassPool pool = ClassPool.getDefault();

        // 取得需要反编译的jar文件,设定路径
        pool.insertClassPath(JarPath);

        CtClass cc_License = pool.get("com.aspose.cells.License");

        CtMethod method_isLicenseSet = cc_License.getDeclaredMethod("isLicenseSet");
        method_isLicenseSet.setBody("return true;");

        CtClass cc_License2 = pool.get("com.aspose.cells.License");
        CtMethod method_setLicense = cc_License2.getDeclaredMethod("setLicense");
        method_setLicense.setBody("{    a = new com.aspose.cells.License();\n" +
                "    com.aspose.cells.zbiw.a();}");

        CtMethod method_k = cc_License.getDeclaredMethod("k");
        method_k.setBody("return new java.util.Date(Long.MAX_VALUE);");


        cc_License.writeFile("F:\\441\\1");
    }

在 main 方法中执行 crackAspose

        try{
            crackAspose("F:\\441\\aspose-cells-20.7.jar");
            System.out.println("Success!");
        }catch (Exception e){
            e.printStackTrace();
        }

在这里插入图片描述
复制一个 aspose-cells-20.7.jar 改名为 aspose-cells-20.7-crack.zip 然后解压
在这里插入图片描述
把刚才生成的 License.class 文件 替换到解压的源代码中。
在这里插入图片描述
造一个 License xml 文件,这里文件名为 com.aspose.cells.lic_2999.xml, 位置直接放源代码解压的根目录:
在这里插入图片描述
文件内容为:

<License>
  <Data>
    <Products>
      <Product>Aspose.Cells for Java</Product>
    </Products>
    <EditionType>Enterprise</EditionType>
    <SubscriptionExpiry>29991231</SubscriptionExpiry>
    <LicenseExpiry>29991231</LicenseExpiry>
    <SerialNumber>evilrule</SerialNumber>
  </Data>
  <Signature>evilrule</Signature>
</License>

防止文件指纹校验,我们需要删除掉源代码解压包中的 META_INF 文件夹。
最后的根目录:
在这里插入图片描述
压缩源代码(注意要是 zip 格式)
在这里插入图片描述

然后重命名为:
在这里插入图片描述
完成!

3.测试 aspose-cells-20.7-crack.jar 使用

封装一个 License 验证方法:

public static boolean authrolizeLicense() {
    boolean result = false;
    try {
        InputStream is = com.aspose.cells.License.class.getResourceAsStream("/com.aspose.cells.lic_2999.xml");
        License asposeLicense = new License();
        asposeLicense.setLicense(is);
        is.close();
        result = true;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}

修改 main 方法测试使用:

    public static void main(String[] args) {

    /*
    // 修改 License.class
    try{
        crackAspose("C:\\Users\\DYG\\Desktop\\1\\aspose-cells-20.7.jar");
        System.out.println("Success!");
    }catch (Exception e){
        e.printStackTrace();
    }
    */



        // 测试破解后的 aspose-cells-20.7-crack.jar
        boolean auth = authrolizeLicense();
        if (!auth) {
            System.out.println("aspose 许可无效!");
            return;
        }


        System.out.println("aspose 已就绪!");


        try{
            Workbook wb = new Workbook("F:\\aaa123.xlsx");
            Worksheet ws = wb.getWorksheets().get(0);

            ImageOrPrintOptions imgOptions = new ImageOrPrintOptions();
            imgOptions.setImageFormat(ImageFormat.getPng());
            imgOptions.setCellAutoFit(true);
            imgOptions.setOnePagePerSheet(true);
            SheetRender render = new SheetRender(ws, imgOptions);

            render.toImage(0, "F:\\aaa\\123.png");

        }
        catch (Exception e){
            e.printStackTrace();
        }
    }

运行:
在这里插入图片描述
样板图
在这里插入图片描述
生成图片
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1403736.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

理解反向代理

反向代理是一个不可或缺的组件。 它在客户端和服务器之间充当中介&#xff0c;提高了安全性、负载平衡和应用性能。 一、反向代理简介 反向代理是一种服务器&#xff0c;它位于客户端和后端服务器之间。与常见的&#xff08;正向&#xff09;代理不同&#xff0c;反向代理代表…

springboot 项目,返回的实体类里面字段是null ,现在想要为空应该是““,空字符串,而不是null

目录 1 问题2 实现 1 问题 返回给前端的数据&#xff0c;如果数据库的字段没有数据&#xff0c;给返回的是null 要变成这个&#xff0c;全局都变成这样 2 实现 springboot返回给页面的json数据中&#xff0c;如果有数据为null&#xff0c;则返回空字符串。 springboot默认使…

CSS之边框样式

让我为大家介绍一下边框样式吧&#xff01;如果大家想更进一步了解边框的使用&#xff0c;可以阅读这一篇文章&#xff1a;CSS边框border 属性描述none没有边框,即忽略所有边框的宽度(默认值)solid边框为单实线dashed边框为虚线dotted边框为点线double边框为双实线 代码演示&…

三维城市模型提升日本的智慧城市管理

MicroStation 将工作效率提高 50%&#xff0c;实现了前所未有的逼真模拟 构建三维城市模型生态系统 PLATEAU 项目由日本国土交通省牵头&#xff0c;是一项三维城市模型和数字孪生计划&#xff0c;旨在到 2027 年为日本 500 个城市构建开放的城市模型数字生态系统。作为日本最…

力扣每日一题 --- 972. 相等的有理数

本题中的一个难点是怎么判断是否相等&#xff0c;如果自己写判断的话是不是很麻烦&#xff0c;判断整数之后再去判断小数部分&#xff0c;那么我们这题的另一个难点就要登场了&#xff0c;第一个难点让本题的情况变得复杂&#xff0c;第二个难点让本题变得很难想到怎么判断&…

SEO 优化总结

目录 优化步骤 1.设置好网站的TDK 2.给网站图片添加文字描述 3.自定义产品页URL 4.设置友情链接并推广 5.持续产出高质量原创内容&#xff0c;增加网站权重。 一、sitemap与robots协议 二、死链检查 三、页面标签 H1标签&#xff1a; 图片标签的alt属性&#xff1a;…

pycharm中无法使用anaconda虚拟环境

anaconda里创建了虚拟环境&#xff0c;然后在虚拟环境中明明安装了TensorFlow1.12&#xff0c;但是到pycharm中使用anaconda的虚拟环境时&#xff0c;就是没有TensorFlow1.12&#xff0c;注意下面这幅图 里面有一个选项“use conda package manager”&#xff0c;这个默认是勾…

Git 版本控制 常用操作和项目应用

一、前言 1、何为版本控制&#xff1f; 版本控制是一种记录一个或若干文件内容变化&#xff0c;以便将来查阅特定版本修订情况的系统。 Git是目前最先进的分布式版本控制系统。 maven&#xff1a;jar包管理工具 版本管理工具&#xff1a;Git、Svn 2、Git & SVN对比 …

代码随想录算法训练DAY27|回溯3

算法训练DAY27|回溯3 39. 组合总和 力扣题目链接 给定一个无重复元素的数组 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明&#xff1a; 所有数字&#xff08;包括 …

sell控制脚本案例

1.压缩脚本 写一个脚本&#xff0c;完成如下功能 传递一个参数给脚本&#xff0c;此参数为gzip、bzip2或者xz三者之一&#xff1b; (1) 如果参数1的值为gzip&#xff0c;则使用tar和gzip归档压缩/etc目录至/backups目录中&#xff0c;并命名为/backups/etc-20160613.tar.gz&am…

yarn集群datanode无法启动问题排查

一、问题场景 hdfs无法访问&#xff0c;通过jps命令查看进程&#xff0c;发现namenode启动成功&#xff0c;但是所有datanode都没有启动&#xff0c;重启集群&#xff08;start-dfs.sh&#xff09;后仍然一样 二、原因分析 先看下启动的日志有无报错。打开Hadoop的日志目录 …

Vue-33、Vue中为什么使用render函数

1、main.js //该文件是整个项目的入口文件 //引入Vue import Vue from vue //引入APP组件&#xff0c;他是所有组件的父组件 import App from ./App.vue //关闭Vue是生产提示 Vue.config.productionTip false; //创建Vue实例对象---vm new Vue({render: h > h(App), }).$m…

【代码随想录算法训练营第二十七天|39. 组合总和、40.组合总和II、131.分割回文串】

代码随想录算法训练营第二十七天|39. 组合总和、40.组合总和II、131.分割回文串 39. 组合总和40.组合总和II131.分割回文串 题解参考y总的&#xff1a;http://www.acwing.com 39. 组合总和 我是一看就会&#xff0c;一写就废。先看代码&#xff1a; class Solution { public:…

第1章-计算机网络基础

目录 1. 计算机网络与计算机 2. 计算机网络的定义和基本功能 2.1. 定义&#xff1a;计算机网络是一组自治计算机互连的集合 2.2. 基本功能 2.3. 计算机网络的演进 2.4. 广域网(Wide Area Network&#xff0c;WAN) 2.5. 网络的拓扑结构 2.6. 数据交换方式 2.7. 衡量计算…

R语言中数据框是什么?

在数据分析过程中离不开表格&#xff0c;通常使用Excel来做数据分析&#xff0c;行和列用来存放不同的数据&#xff0c;表格能清晰直观的展示数据&#xff0c;而且可以将多张表组合联系起来&#xff0c;这种不约而同的规范也同样适用于R语言。 R语言中的数据框&#xff08;Data…

C#winform上位机开发学习笔记7-串口助手的波特率参数设置功能添加

1.功能描述 上位机与下位机进行通讯时需要用到波特率设置功能&#xff0c;以及尝试与下位机实体进行通讯。 2.代码部分 步骤1&#xff1a;串口开启按钮事件中添加代码 serialPort1.BaudRate Convert.ToInt32(comboBox14.Text, 10);//将十进制的文本转换为32位整型赋值给串…

计算机网络-OSI参考模型(来由 通信过程 各层分析)

文章目录 总览OSI模型怎么来的&#xff1f;OSI参考模型OSI参考模型解释通信过程各层分析应用层表示层会话层传输层网络层数据链路层物理层 小结 总览 两种网络分层结构 结合事实标准和法定标准得到一个中和版本5层的体系结构 OSI模型怎么来的&#xff1f; 刚开始各个公司的…

图像处理之《用于统一源跟踪和深度伪造检测的深度可分离水印SepMark》论文精读

一、文章摘要 恶意的Deepfakes导致了一场关于区分真脸和伪造脸的激烈冲突。尽管已经制定了许多事后检测Deepfakes的对策&#xff0c;但毫无疑问&#xff0c;在可预见的操作之前&#xff0c;被动取证没有考虑对原始人脸采取任何预防措施。为了完成这个取证生态系统&#xff0c;…

Git Docker 学习笔记

注意&#xff1a;该文章摘抄之百度&#xff0c;仅当做学习笔记供小白使用&#xff0c;若侵权请联系删除&#xff01; 目录 列举工作中常用的几个git命令&#xff1f; 提交时发生冲突&#xff0c;你能解释冲突是如何产生的吗&#xff1f;你是如何解决的&#xff1f; git的4个…

【VUE】如何有效管理重复请求

【VUE】如何管理重复请求 需求 重复的HTTP请求可能对应用程序性能造成很大影响&#xff0c;尤其是在用户快速点击或多次触发同一操作时。在Vue应用中&#xff0c;我们可以使用axios的请求拦截器&#xff08;interceptors&#xff09;配合AbortController来取消重复的HTTP请求…