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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM