FineReport破解心得
注:写文档目的主要用于技术学习,了解技术帆软公司技术大牛是怎么设计系统,请勿用于商用。
一、 工具准备
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破解心得的更多相关文章
- Android破解心得——记学习七少月安卓大型安全公开课
第一课 讲解了关于在安卓破解之中环境的配置及所需要用到的软件,重要的软件是Androidkiller,安卓逆向助手 第二课讲解了java与smali的关系,从smail角度详细的分析了一个简单的Hel ...
- mac MyEclipse2017 CI10安装破解心得
前段时间也不知弄了什么东西把之前的me弄坏了,于是看看新版本的情况,准备安装个新版本,一看出了ci10,安装之. 破解资源请到这里下载 https://download.csdn.net/downlo ...
- [转]0day零距离
前言: 想起这个话题,还要从早年网上的一则新闻说起--"美国联邦官员于2001年12月11日宣布,已破获一起以因特网为犯罪手段的特大软件盗版案--盗版软件的总价值至少高达10亿美元.据悉,该 ...
- 加快FineReport报表设计的几个心得体会
加快FineReport报表设计的几个心得体会 一.从远程服务器大批量取数进行表样设计时,最好按“列顺序”取一个“空的SQL语句”,这样可提高设计速度.否则每次设计时模板均要从远程读取数据,速度相当慢 ...
- (转)Android studio 使用心得(五)—代码混淆和破解apk
这篇文章等是跟大家分享一在Android studio 进行代码混淆配置.之前大家在eclipse上也弄过代码混淆配置,其实一样,大家可以把之前在eclipse上的配置文件直接拿过来用.不管是.cfg ...
- Android studio 使用心得(五)—代码混淆和破解apk
这篇文章等是跟大家分享一在Android studio 进行代码混淆配置.之前大家在eclipse上也弄过代码混淆配置,其实一样,大家可以把之前在eclipse上的配置文件直接拿过来用.不管是.cfg ...
- mac版本cornerstone的无限期破解方法【转】
CornerStone是个人非常喜欢的mac上的一款SVN客户端工具,官方提供了14天的免费试用(trail)版本.我们可以在此基础上提供无限期试用版本. 方法一:如果你从来没有安装过这个trail版 ...
- [转]IntelliJ IDEA 使用心得与常用快捷键
IntelliJ IDEA 使用心得与常用快捷键 那种酸爽,根本说不出来—————————————————————————— by: Jimi没有BondJimi是谁? 就是洒家啊! 刚开始学习写Ja ...
- java报表工具FineReport的SQL编辑框的语法简介
感谢大家捧场,这里继续分享关于SQL编辑框的一些语法心得总结,因为数据集定义的面板,也是FineReport报表中最常用的模块之一. 1.我理解的执行过程. 这里其实是生成一个字符串,FineRepo ...
随机推荐
- Hadoop1.x原理
将这种单机的工作进行分拆,变成协同工作的集群,这就是分布式计算框架设计.使得计算机硬件类似于应用程序中资源池的资源,使用者无需关心资源的分配情况,从而最大化了硬件资源的使用价值.分布式计算也是如此,具 ...
- Flex中一些属性总结
Flex中一些属性总结 1.buttonMode = "true" 鼠标变成手形 2.useHandCursor = "true" 鼠标变成手形
- Flex的 Event中属性currentTarget与target的区别
Flex的 Event中属性currentTarget与target的区别 1.区别 (1)currentTarget是事件的处理对象(event processor) (2)target是事件的调用 ...
- Filter组件开发中的SDK基类分析
DirectShow SDK提供了一套开发Filter的基类源代码.基于这些基类开发Filter将大大简化开发过程. 1.CBaseObject 大部分SDK类都从CBaseObject类(参见com ...
- Carries SCU - 4437
Carries frog has nn integers a1,a2,-,ana1,a2,-,an, and she wants to add them pairwise. Unfortunately ...
- JNDI在server.xml中的配置(全局和局部的)
总结: 全局就是在数据源server.xml中配置,然后通过和项目名相同的xml来进行映射.对所有的项目都起作用.那个项目需要就在对应的tomcat下配置一个与项目名相同的xml映射文件. 局部的就是 ...
- 细说Ajax跨域
一.什么是跨域 跨域问题来自于浏览器同源策略的限制,包括DOM同源限制和Ajax同源限制,本文探讨的是Ajax跨域.Ajax跨域指的是一个页面的Ajax只能请求和当前页面同源的数据,如果发现请求到的数 ...
- C#迭代语句、跳转语句--C#基础
1.foreach每执行一次内含的代码时,循环变量就会一次读取集合中的一个元素,不需要个数.循环变量只是一个只读的局部变量,这个值是不能修改的.char后的word是 foreach语句的迭代变量,它 ...
- PyTorch官方中文文档:自动求导机制
自动求导机制 本说明将概述Autograd如何工作并记录操作.了解这些并不是绝对必要的,但我们建议您熟悉它,因为它将帮助您编写更高效,更简洁的程序,并可帮助您进行调试. 从后向中排除子图 每个变量都有 ...
- 【NOI2002】银河英雄传说(并查集)
[NOI2002]银河英雄传说 题面 题目描述 公元五八○一年,地球居民迁至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军 ...