IDEA打包工具類jar並混淆

Jimmy_JN發表於2020-07-31

最近在做lincense授權功能,做了個license生成以及驗證工具類,為了防止使用者破解,需要打成jar包並混淆,在此記錄一下。

生成jar

idea中有個東西叫Artifacts,對於Maven來說,所有生成的東西都可以叫作Artifact,當然也包括Jar。

  1. 開啟專案配置:Project Structure–>選擇左側Artifacts–>然後新增一個空jar包。

在這裡插入圖片描述
在這裡插入圖片描述

新增完之後可以修改jar包名稱,按自己需要修改即可。

  1. 配置需要打成jar包的工具類。

在這裡插入圖片描述
這是我們選擇專案執行後生成的class檔案,注意選擇class之後,生成的是com以下的類包含com資料夾。之後點選ok,apply完成新增。
在這裡插入圖片描述

  1. 打包。配置好Artifacts之後直接build配置好的Artifacts即可。

在這裡插入圖片描述
在這裡插入圖片描述

  1. 在build之前可以先檢視專案目前的class檔案,確認是否都是自己需要的工具類,多餘的可以直接刪除,之後build就不會把這些也打入jar包(刪除的是class檔案,執行會自動生成,不影響專案執行)。

在這裡插入圖片描述
我這裡只需要打包util,下邊的sdk以及yml檔案就可以直接刪除,這樣打包之後就不會包含這些檔案。
之後可以檢視生成的jar包:
在這裡插入圖片描述
路徑是可以自己配置的,在配置jar的地方設定。

在這裡插入圖片描述

混淆jar

混淆採用的是Allatori工具。用法如下:

  1. 下載。
    CSDN下載連結
  2. 解壓並進入目錄Allatori-7.1-Demo\tutorial\step01\files。

內容說明

  • Clean.bat:清除 log.xml 以及生成混淆的檔案
  • config.xml:混淆的配置檔案
  • RunAllatori.bat:執行生成混淆 jar 的命令

在這裡插入圖片描述

  1. 配置混淆檔案。
<config>
    <input>
        <!--in節點是需要混淆的原始檔,out節點是輸出檔名,在同目錄下-->
		<jar in="licutil.jar" out="licutil00.jar"/>
    </input>
    	<!--混淆過濾配置,protected以上級別不過濾,即public等級不過濾,按自己需要修改即可。-->
    <keep-names>
        <class access="protected+">
            <field access="protected+"/>
            <method access="protected+"/>
        </class>
    </keep-names>

    <property name="log-file" value="log.xml"/>
</config>
  1. 生成混淆後的新jar。
    將自己的源jar檔案複製到files目錄下,並雙擊執行 RunAllatori.bat。

在這裡插入圖片描述

  1. 檢視結果。
    在這裡插入圖片描述
    如圖:1是生成的混淆後的jar檔案,可以正常使用,開啟之後可以看到2位置protected級別的內容已經被混淆。3位置public內容沒有混淆。

  2. 遇到的問題解決思路。
    工具類大多數是public的,並不需要混淆,但是對於license工具類是有加密相關內容的,如果不混淆就沒有任何意義。
    解決辦法很簡單,將public的內容放到private等低階別的,重寫public方法然後呼叫private方法。

在這裡插入圖片描述
在這裡插入圖片描述

對於變數,字串等,預設不會混淆。解決辦法:初始化時預設null,定義方法初始化。如下圖:
在這裡插入圖片描述
以上就是打包並混淆的過程記錄,如有問題,歡迎留言!

相關文章