JAVA逆向

最近在试用某软体,试用期太短又被限制功能,想延长试用期限跟打开被限制的功能。
所以就诞生了此篇解除封印教学,呼吁请支持正版!

前言

该付费软体是用Java开发,并打包成jar档。此教学适用于没有被混淆过的jar档。
怕有法律问题,故不公开软体名称。以下以target.jar代称。

执行程式

首先我们要确定target.jar能被正常执行。我用的target.jar是用console来执行,执行画面如下:

JAVA逆向

查看原始码

使用Java Decompiler打开target.jar,可以浏览jar档里面的内容,并能看到编译后的class以原始码的方式呈现。展开target.jar找到名称较为关键的字眼(如:License、Validate),看功力也看运气。
target.jar我有找到LicenseProvider.class,大概看一下程式码后,可以判断出它从外部载入参数,读入记忆体中,包含了限制条件即使用期限等等(如下图)。

JAVA逆向

模拟物件

由于授权资讯跟限制条件是在LicenseProvider 载入,只要把他改写,就可以成功延长授权,步骤如下:

1. 用eclipse 开新Java 专案(或其它Java IDE)

JAVA逆向

2. 专案名称跟LicenseProvider 的package name 相同

JAVA逆向

3. 在该专案建立新的class,名称为LicenseProvider

JAVA逆向

4. 将Java Decompiler 读到的LicenseProvider复制到LicenseProvider.java

JAVA逆向

5. 改掉限制条件,并延长使用期限

JAVA逆向

6.因程式码少了外部reference ,所以载入原本的target.jar

JAVA逆向

7. 进行编译

JAVA逆向

8.用WinRAR把原本的target.jar打开,并用编译后的LicenseProvider.class取代

※记得把eclipse跟Java Decompiler关掉,不然target.jar会被咬死不能编辑内容*
JAVA逆向

解除封印

回到console再次执行,执行画面如下:

JAVA逆向

转载:https://blog.johnwu.cc/article/java-reverse-engineering.html

相关文章:

  • 2021-04-08
  • 2022-01-12
  • 2022-12-23
  • 2022-01-03
  • 2021-10-24
  • 2021-05-25
  • 2022-01-10
  • 2021-05-23
猜你喜欢
  • 2021-08-25
  • 2021-06-04
  • 2021-12-22
  • 2021-11-26
  • 2021-06-17
  • 2022-12-23
相关资源
相似解决方案