實用的jar包加密方案


前言

jar包相信大家都很熟悉,是通過打包java工程而獲得的產物,但是jar包是有一個致命的缺點的,那就是很容易被反編譯,只需要使用jd-gui就可以很容易的獲取到java源碼。

如果你想要防止別人反編譯做逆向工程,那么對jar包進行一次加密就是一項很重要的工作了。

如何對jar包進行加密呢?其實沒有想象中的那么困難,有一款開源工具已經提供了較為完善的加密方案,這款開源工具的名字叫做xjar。

接下來我們就看一下使用xjar工具給jar包加密有多么的容易。

基礎環境准備

現在假設你的項目是一個maven項目(目前不使用maven的項目已經不多了),那么加密起來特別的容易,

首先就是要在你的pom文件中增加插件倉庫地址,如下:

    <pluginRepositories>
        <pluginRepository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
        </pluginRepository>
    </pluginRepositories>

然后在pom文件中增加如下插件:

    <plugin>
                <groupId>com.github.core-lib</groupId>
                <artifactId>xjar-maven-plugin</artifactId>
                <version>4.0.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>build</goal>
                        </goals>
                        <phase>install</phase>

                        <configuration>
                            <includes>
                                <include>/com/huc/**/*.class</include>
                                <include>/mapper/**/*Mapper.xml</include>
                                <include>/*.yml</include>
                            </includes>
                            <excludes>
                                <exclude>/templates/**.*</exclude>
                                <exclude>/static/**.*</exclude>
                            </excludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

這樣,我們的准備工作就做完了,需要注意的是,includes代表我們想要加密的內容,采用的是Ant表達式,excludes代表的是不需要加密的內容,同樣使用的Ant表達式。

一般情況下我們建議這兩處內容必填,如果不填寫,會加密整個jar包中的所有文件,這樣其實是沒有必要的,而且全部加密后啟動的時候也可能產生意料之外的錯誤。

另外要說明的是,加密后的jar包是需要通過golang環境運行的,所以我們需要提前把golang的運行環境安裝好,安裝過程請自行百度。

開始加密

現在我們就開始正式的加密工作了,加密過程非常簡單,只需要使用maven的install命令即可自動打包,命令如下:

mvn clean install -Dxjar.password=password  -Dmaven.test.skip=true

這里的password可以自行指定密碼,是必填項。

執行后就會得到兩個文件:一個是xjar.go的go源文件,一個是你項目的xjar包,也就是加密后的jar包。

運行加密后的jar包

運行加密后的jar包是需要先編譯xjar.go源文件生成jar包啟動器的。編譯方式如下:

go build ./xjar.go

編譯后會生成xjar.exe啟動器(王子使用的是window系統,如果是linux系統就不是exe后綴了)。

之后使用如下命令即可運行加密后的jar包:

./xjar.exe java -jar ./**.xjar

可以看出,只是在使用java -jar的前邊加上啟動器即可,還是很方便的。

 

后記

防止反編譯只能防止jar包被逆向破解,如果想要限制用戶的使用時間,按時間付費需要怎么做呢?

這就要說到license加密技術了,我們下篇文章就來說說如何在你的項目中增加license,限制用戶的使用。

 

往期文章推薦:

JVM專欄

消息中間件專欄

並發編程專欄


免責聲明!

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



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