最近在试用某软体,试用期太短又被限制功能,想延长试用期限跟打开被限制的功能。
所以就诞生了此篇解除封印教学,呼吁请支持正版!
前言
该付费软体是用Java开发,并打包成jar档。此教学适用于没有被混淆过的jar档。
怕有法律问题,故不公开软体名称。以下以target.jar代称。
执行程式
首先我们要确定target.jar能被正常执行。我用的target.jar是用console来执行,执行画面如下:
查看原始码
使用Java Decompiler打开target.jar,可以浏览jar档里面的内容,并能看到编译后的class以原始码的方式呈现。展开target.jar找到名称较为关键的字眼(如:License、Validate),看功力也看运气。
在target.jar我有找到LicenseProvider.class,大概看一下程式码后,可以判断出它从外部载入参数,读入记忆体中,包含了限制条件即使用期限等等(如下图)。
模拟物件
由于授权资讯跟限制条件是在LicenseProvider 载入,只要把他改写,就可以成功延长授权,步骤如下:
1. 用eclipse 开新Java 专案(或其它Java IDE)
2. 专案名称跟LicenseProvider 的package name 相同
3. 在该专案建立新的class,名称为LicenseProvider
4. 将Java Decompiler 读到的LicenseProvider复制到LicenseProvider.java
5. 改掉限制条件,并延长使用期限
6.因程式码少了外部reference ,所以载入原本的target.jar
7. 进行编译
8.用WinRAR把原本的target.jar打开,并用编译后的LicenseProvider.class取代
※记得把eclipse跟Java Decompiler关掉,不然target.jar会被咬死不能编辑内容*
解除封印
回到console再次执行,执行画面如下:
转载:https://blog.johnwu.cc/article/java-reverse-engineering.html