JAVA逆向

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 逆向工程- eclipse 开新Java 专案- 1

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

Java 逆向工程- eclipse 开新Java 专案- 2

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

Java 逆向工程- 建立LicenseProvider

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

Java 逆向工程- 编辑LicenseProvider - 1

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

Java 逆向工程- 编辑LicenseProvider - 2

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

Java 逆向工程- 载入原jar

7. 进行编译

Java 逆向工程- 编译

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

※记得把eclipse跟Java Decompiler关掉,不然target.jar会被咬死不能编辑内容*
Java 逆向工程- 取代LicenseProvider.class

解除封印

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

Java 逆向工程- 解除封印- 执行结果

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

转载于:https://www.cnblogs.com/DeeLMind/p/7640780.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值