zoukankan      html  css  js  c++  java
  • 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协议?
    hashmap:cr:csdn
    HashMap的底层原理 cr:csdn:zhangshixi
    servlet
    泛型,反射
    线程

    集合
    java基础题
    我的博客网址
  • 原文地址:https://www.cnblogs.com/DeeLMind/p/7640780.html
Copyright © 2011-2022 走看看