注:写文档目的主要用于技术学习,了解技术帆软公司技术大牛是怎么设计系统,请勿用于商用。

一、      工具准备

1、         javassist:class代码修改工具

2、         luyten-0.5.3:class代码反编译工具,主要用于了解系统结构

3、         winrar解压软件

二、      技术难点

1、         授权文件采用RSA加密,理论上是无法破解,要想破解只能替换密钥,

2、         fineReport为了保证安全,软件自定义了类加载器,设计了100个类加载器,只有反编译所有的加载器才能知道授权内容,过程大致如下:通过com.fr.plugin.bridge. Start推出com.fr.plugin.bridge._7c269529_9bce_43a5_95db_b44008bf984f,然后通过com.fr.plugin.bridge._7c269529_9bce_43a5_95db_b44008bf984f推出下一个加载器,一直往下推,总共有100个。

3、         授权核心代码采用全部存储在com.fr.plugin.bridge.A目录下,后缀名为classx,这些文件实际上通过RSA进行了加密的class文件,密钥在最后一个类加载器中,这些文件解密出来class文件不是授权类,是一个描述授权核心类的内文件,这些字符通过javassist工具动态生成类的。

4、         在破解过程中,需要经常把byte数组写入到文件,然后通过反编译工具查看核心 代码。

5、         了解rsa原理,私钥加密,公钥解密。

三、      步骤

1、         通过luyten反编译com.fr.plugin.bridge. Start,然后通过获取的解密A文件密钥及 A的文件名。

2、         通过获取的解密及文件名A生成文件A对应的class文件,反编译A对应的class文件,然后通过获取的解密B文件密钥及B的文件名,直到最后一个文件,必须要获取最后一个文件才可破解。

3、          通过最后文件对应的密钥解密,解密com.fr.plugin.bridge.A目录下的所以classx文件,解密出来的文件如下的图3.3.1:

图3.3.1

4、         通过反编译软件查看代码,代码如下图3.4.1:,然后根据代码获取实际实现代码,说明如表3.4.1

图3.3.1

方法名

说明

String D()

实际类名

byte[] E()

获取实际类的byte

A()

Md5核验码

表3.3.1

5、         使用javassis修改com.fr.license.selector.EncryptedLicenseSelector这个类中是解密。

6、         把com.fr.license.selector.EncryptedLicenseSelector生成对应的classx文件,通过winrar工具把这个文件放到jar对应的位置。

7、         修改最后一个加载类,然后生成对应classx放入jar文件。

8、         修改com.fr.plugin.bridge. Start文件,通过这个文件直接解密最后一个classx文件,否则需要替换100多个classx文件。

9、         了解代码,编写lic文件生成类,生成相关许可。

四、      结语

破解是一个艰难的过程,艰难程序不亚于编写一个程序,需要了解技术原理、编写相关工具代替重复劳动、也需要修改相关代码,通过这次破解,总体上还是收获很大的,对个人技术提升有很大的帮助,也由衷佩服写授权模块的技术大牛,真的很利害。

最后强调,本人偿试破解只是为了了解技术,学习技术,写这个文章与各网友分享也是为了提升技术,请勿用于商业用途,尊重他人的劳动成果。

QQ:279505686

FineReport破解心得的更多相关文章

  1. Android破解心得——记学习七少月安卓大型安全公开课

    第一课 讲解了关于在安卓破解之中环境的配置及所需要用到的软件,重要的软件是Androidkiller,安卓逆向助手 第二课讲解了java与smali的关系,从smail角度详细的分析了一个简单的Hel ...

  2. mac MyEclipse2017 CI10安装破解心得

    前段时间也不知弄了什么东西把之前的me弄坏了,于是看看新版本的情况,准备安装个新版本,一看出了ci10,安装之. 破解资源请到这里下载 https://download.csdn.net/downlo ...

  3. [转]0day零距离

    前言: 想起这个话题,还要从早年网上的一则新闻说起--"美国联邦官员于2001年12月11日宣布,已破获一起以因特网为犯罪手段的特大软件盗版案--盗版软件的总价值至少高达10亿美元.据悉,该 ...

  4. 加快FineReport报表设计的几个心得体会

    加快FineReport报表设计的几个心得体会 一.从远程服务器大批量取数进行表样设计时,最好按“列顺序”取一个“空的SQL语句”,这样可提高设计速度.否则每次设计时模板均要从远程读取数据,速度相当慢 ...

  5. (转)Android studio 使用心得(五)—代码混淆和破解apk

    这篇文章等是跟大家分享一在Android studio 进行代码混淆配置.之前大家在eclipse上也弄过代码混淆配置,其实一样,大家可以把之前在eclipse上的配置文件直接拿过来用.不管是.cfg ...

  6. Android studio 使用心得(五)—代码混淆和破解apk

    这篇文章等是跟大家分享一在Android studio 进行代码混淆配置.之前大家在eclipse上也弄过代码混淆配置,其实一样,大家可以把之前在eclipse上的配置文件直接拿过来用.不管是.cfg ...

  7. mac版本cornerstone的无限期破解方法【转】

    CornerStone是个人非常喜欢的mac上的一款SVN客户端工具,官方提供了14天的免费试用(trail)版本.我们可以在此基础上提供无限期试用版本. 方法一:如果你从来没有安装过这个trail版 ...

  8. [转]IntelliJ IDEA 使用心得与常用快捷键

    IntelliJ IDEA 使用心得与常用快捷键 那种酸爽,根本说不出来—————————————————————————— by: Jimi没有BondJimi是谁? 就是洒家啊! 刚开始学习写Ja ...

  9. java报表工具FineReport的SQL编辑框的语法简介

    感谢大家捧场,这里继续分享关于SQL编辑框的一些语法心得总结,因为数据集定义的面板,也是FineReport报表中最常用的模块之一. 1.我理解的执行过程. 这里其实是生成一个字符串,FineRepo ...

随机推荐

  1. 试着把.net的GC讲清楚(3)

    前两篇写的都是gc的一些概念和细节,这些东西对自己以后写代码有什么用,本篇我就准备将这些内容. root 第一篇文章中讲了GC在遍历存活对象的时候,都是从root开始的,root是一些对象的引用,例如 ...

  2. FreeImage库如何转换图片格式?

    FreeImage下载地址:http://freeimage.sourceforge.net/ //freeimagemain.h #ifndef FREEIMAGEMAIN_H #define FR ...

  3. WEB 小案例 -- 网上书城(二)

    寒假结束了,自己的颓废时间同样结束了,早该继续写博客了,尽管我的格式以及内容由于各种原因老被卡,但必须坚持写下去!!! 上次我们对于本案例的数据库部分进行了阐述,这次主要接着上次的内容分享本案例的翻页 ...

  4. "No Python interpreter configured for the project " in Pycharm for python selenium

    自动化测试问题: pyCharm提示python Interpreter没有设置,点击configure Python Interpreter,进入Settings 在 Project Interpr ...

  5. cips2016+学习笔记︱NLP中的消岐方法总结(词典、有监督、半监督)

    歧义问题方面,笔者一直比较关注利用词向量解决歧义问题: 也许你寄希望于一个词向量能捕获所有的语义信息(例如run即是动车也是名词),但是什么样的词向量都不能很好地进行凸显. 这篇论文有一些利用词向量的 ...

  6. 6.2 PowerPC处理器如何处理MSI中断请求

    PowerPC处理器使用OpenPIC中断控制器或者MPIC中断控制器,处理外部中断请求.其中MPIC中断控制器基于OpenPIC中断控制器,但是作出了许多增强,目前Freescale新推出的Powe ...

  7. 使用wordpress搭建独立域名的个人博客或网站

    最近抽空闲时间搭建了一个独立域名的个人博客站点,基本过程如下: 一.准备工作: 1.准备一个独立的域名,我是从万网中注册的cn结束的域名:tuzongxun.cn,价格29元,根据个人选择,也有更高更 ...

  8. INS-30011 输入的ADMIN口令不符合Oracle建议的标准

    1.错误描述 2.错误原因 由于在设置密码时,首个字符为数字,导致出错 a.必须以字母开头 b.长度不超过30个字符 c.只能包含字母.数字和_.$.# d.不能使用关键字和保留字 3.解决办法 重新 ...

  9. 关于json.parse和json.stringify的区别

    json.parse是将字符串解析成json格式 而json.stringify是将json解析成字符串格式

  10. Mac 常用快捷键

    可以按下组合键来实现通常需要鼠标.触控板或其他输入设备才能完成的操作. 要使用键盘快捷键,需按住一个或多个修饰键,同时按快捷键的最后一个键.例如,要使用快捷键 Command-C(拷贝),请按住 Co ...