破解 Java 系软件入门

栏目: Java · 发布时间: 5年前

内容简介:因为字节码玩的炉火纯青,在工作休闲之余,破解了一大波 Java 系软件。最终的目标是无痛破解,这里的无痛,指的是不需要破坏原始 Jar 包或者 War 包,就可以达到破解目的下面列举了一些折腾过的软件下面是常用的一些工具

因为字节码玩的炉火纯青,在工作休闲之余,破解了一大波 Java 系软件。最终的目标是无痛破解,这里的无痛,指的是不需要破坏原始 Jar 包或者 War 包,就可以达到破解目的

下面列举了一些折腾过的软件

  • 分析 GC 日志的桌面端软件censum
  • 分析 GC 日志和线程的 gceasyfastthread
  • Intellij 上 Mybatis 插件(低版本),高版本使用了代码混淆,导致阅读比较困难,没有去折腾
  • ELK 铂金版
  • 供应商的jar包对指定 Mac 地址授权,切换服务器或者切换到 Docker 环境以后,就没办法使用

工欲善其事必先利其器

下面是常用的一些工具

  • 字节码反编译查看工具 jdgui,luyten
  • 字节码浏览工具 jclasslib
  • asm(后面会专门介绍)
  • vim、hex editor

破解的几种方式

  • 解包,直接修改 class 文件,打包

这种适用于非常简单,改动一个常量就可以完成的情况

  • 解包,通过 asm 工具修改 class 文件,打包 适用于逻辑较为复杂的情况

  • 通过 -javaagent 启动参数,动态修改(无痛破解) 前面两种都属于破坏了原始的 class 文件,不属于「无痛破解」,如果要破解的软件升级了,需要重新修改打包,非常麻烦。采用 Java agent 的方式,只用在命令行启动参数里面加入一行参数就可以了。后续软件升级了,都不用修改 agent 的源码,非常方便,后面将会重点介绍这种方式

第一个破解项目 censum

破解 Java 系软件入门
项目 censum jar 包地址放在了 github 上,使用 jdgui 打开,发现没有混淆,找到 CensumStartupChecks

类,里面是判断 license 是否合法、是否过期。下面代码做了一些精简。

public class CensumStartupChecks
{
  private static int getDayOfMonth() {
    return 7;
  }
  
  private static int getMonthOfYear() {
    return 0;
  }
  
  private static int getYear() {
    return 2016;
  }
  
  public static CanLoadState canLoadCensum()
  {    
    validateLicensing();
    GregorianCalendar currentDate = new GregorianCalendar();    
    GregorianCalendar expiryDate = getExiryDate();
    if (currentDate.after(expiryDate)) {
      return CanLoadState.LICENSE_EXPIRED;
    }
    return CanLoadState.SUCCESS;
  }
  
  public static GregorianCalendar getExiryDate()
  {
    return new GregorianCalendar(getYear(), getMonthOfYear(), getDayOfMonth());
  }
}
复制代码

可以看到,这个判断是否过期的方法很粗暴,直接拿当前时间与过期时间做对比,如果当前时间晚于过期时间,就返回 license 已过期。

要破解这个软件,一个最简单的思路就是把过期的年份 2016 修改一下,改为 2226 之类的。 我们知道 jar 包本质上就是一个 zip 压缩包,我们用 unzip 以后可以拿到所有的 class 文件

用 vim 打开 vim -b ./com/jclarity/censum/CensumStartupChecks.class 使用 16 进制模式打开 :%!xxd 搜索 2016 的十六进制(07e0)

破解 Java 系软件入门
使用vim命令修改成 08a8 (2216年),回到普通模式 :%!xxd -r

保存退出

破解 Java 系软件入门
然后使用zip包打包 zip -r ../censum-crack.jar . *

运行 java -jar censum-crack.jar

破解 Java 系软件入门

可以看到,这种方式比较麻烦,我们会讲如何不修改源 class 文件的方法来无痛破解Java系软件,不过这之前,我们需要学习 ASM 和 Java agent 的原理


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

ASP.NET 2.0入门经典

ASP.NET 2.0入门经典

哈特 / 清华大学出版社 / 2006-8 / 78.00元

该书是Wrox红皮书中的畅销品种, 从初版、1.0版、1.1版到目前的2.0版,已经3次升级,不仅内容更加完善、实用,还展现了.NET 2.0的最新技术和ASP.NET 2.0最新编程知识,是各种初学者学习ASP.NET的优秀教程,也是Web开发人员了解ASP.NET 2.0新技术的优秀参考书。该书与《ASP.NET 2.0高级编程(第4版)》及其早期版本,曾影响到无数中国Web程序员。一起来看看 《ASP.NET 2.0入门经典》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具