前言
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,限制使用者的使用。
往期文章推薦: