使用加密技術(shù)對代碼加密,保護(hù)軟件知識產(chǎn)權(quán)秸歧,刻不容緩

Java 開發(fā)語言以其安全性高厨姚、代碼優(yōu)化、跨平臺等特性键菱,迅速取代了很多傳統(tǒng)高級語言谬墙,受到廣大編程人員和企業(yè)家的青睞。不過隨之產(chǎn)生的安全問題也越來越受到大家的關(guān)注经备,Java 最突出的跨平臺優(yōu)勢使其要以中間代碼的形式運(yùn)行在虛擬機(jī)環(huán)境中拭抬,因此 Java 代碼反編譯要比其他開發(fā)語言更容易實現(xiàn),并且反編譯的代碼經(jīng)過優(yōu)化后幾乎可與源代碼相媲美侵蒙。為了避免出現(xiàn)這種情況造虎,保護(hù)軟件知識產(chǎn)權(quán),我們需要采用加密技術(shù)對代碼進(jìn)行加密纷闺。

本文介紹使用xjar加密技術(shù)對jar包進(jìn)行加密算凿,主要針對maven構(gòu)建的項目,同時需要安裝go環(huán)境急但,通過在pom.xml中添加項目依賴澎媒,生成加密后的jar包以及go啟動器,再對go啟動器進(jìn)行編譯波桩,獲取到go執(zhí)行器戒努,最終以go執(zhí)行器啟動jar包來運(yùn)行項目。

一、Maven項目在pom.xml中添加項目依賴

<!-- 設(shè)置 jitpack.io 插件倉庫 -->

<pluginRepositories>

<pluginRepository>

<id>jitpack.io</id>

<url>https://jitpack.io</url>

</pluginRepository>

</pluginRepositories>

<!-- 添加 XJar Maven 插件 -->

<build>

<plugin>

<groupId>com.github.core-lib</groupId>

<artifactId>xjar-maven-plugin</artifactId>

<version>4.0.2</version>

<executions>

<execution>

<goals>

<goal>build</goal>

</goals>

<phase>package</phase>

<configuration>

<password>123456</password>

<!-- 需要加密的資源路徑表達(dá)式 -->

<includes>

<include>net/hfmri/**</include>

<include>mapper/*Mapper.xml</include>

<include>conf/**</include>

</includes>

<!-- 無需加密的資源路徑表達(dá)式 -->

<excludes>

<exclude>static/**</exclude>

<exclude>META-INF/**</exclude>

</excludes>

<!-- 目標(biāo)jar存放目錄 -->

<targetDir>${project.build.directory}\xJarDir\</targetDir>

<!-- 目標(biāo)jar名稱,也可以用表達(dá)式(參考官網(wǎng)) -->

<targetJar>afcApp.jar</targetJar>

</configuration>

</execution>

</executions>

</plugin>

</plugins>

</build>

Maven使用package打包后储玫,自動構(gòu)建出加密的jar包侍筛,生成加密jar的同時,目錄下還會生成go啟動器文件xjar.go撒穷。

我們使用反編譯工具查看加密后的jar包是否還能看到編譯后的代碼:顯示INTERNAL ERROR 不再展示源代碼匣椰。

得到加密后的jar包之后,區(qū)分windows系統(tǒng)還是linux系統(tǒng)進(jìn)行下一步操作端礼。

二禽笑、windows系統(tǒng)

1、安裝go環(huán)境

(1)選擇windows版本下載

(2)下載之后蛤奥,一步步按照操作指引安裝佳镜。我的安裝目錄:D:\install\go\install

2、安裝完成之后配置系統(tǒng)環(huán)境變量

進(jìn)入cmd驗證go是否配置正確:

3凡桥、配置好go的環(huán)境之后蟀伸,對啟動器文件xjar.go進(jìn)行編譯

當(dāng)前目錄下進(jìn)入cmd執(zhí)行:go build xjar.go,生成對應(yīng)的go執(zhí)行器(得到xjar.exe)

4缅刽、以go執(zhí)行器xjar.exe啟動jar包

執(zhí)行命令:xjar.exe java -jar afcApp.jar

測試服務(wù)調(diào)用是否正常:

6啊掏、填坑注意事項

打包時maven使用的是jdk8,本地是jdk11衰猛,啟動時一直報錯迟蜜。

查詢資料,部分人反饋:用jdk1.8編譯的jar被xjar加密后啡省,用jdk11是無法運(yùn)行小泉。此結(jié)論待進(jìn)一步驗證,目前將本地的jdk改成jdk8冕杠,可以正常運(yùn)行微姊。進(jìn)一步將maven中的jdk和本地jdk都改成11,不能正常啟動分预。測試結(jié)果:

ps:如何查看jar包的jdk版本:

原因:JDK-9及以上版本由于模塊化導(dǎo)致XJar無法使用 jdk.internal.loader 包的問題解決方案兢交。

解決方法:在啟動時添加參數(shù):--add-opens java.base/jdk.internal.loader=ALL-UNNAMED

添加參數(shù)之前啟動方式:xjar.exe java -jar afcApp.jar

添加參數(shù)之后啟動方式:xjar.exe java --add-opens java.base/jdk.internal.loader=ALL-UNNAMED -jar afcApp.jar

三、linux系統(tǒng)

1笼痹、Linux下載安裝go環(huán)境

(1)選擇linux版本下載

或使用命令下載wget https://studygolang.com/dl/golang/go1.16.3.linux-amd64.tar.gz

(2)解壓tar.gz包:tar -zxvf go1.16.3.linux-amd64.tar.gz 到自己需要安裝的目錄下(比如/usr/loacl)

(3)添加/usr/loacl/go/bin目錄到PATH變量中配喳。在/etc/profile文件最后一行添加兩行代碼。

vim /etc/profile

// 在最后一行后添加

export GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/bin

// wq保存退出后source一下凳干,讓配置文件生效

source /etc/profile

(4)執(zhí)行g(shù)o version晴裹,如果出現(xiàn)版本號,則表示Go環(huán)境安裝成功

2救赐、配置好go的環(huán)境之后涧团,對xjar.go進(jìn)行編譯

執(zhí)行命令:go build xjar.go,生成對應(yīng)的go執(zhí)行器(得到xjar,這一點(diǎn)與windows系統(tǒng)不同泌绣。Windows系統(tǒng)得到的是xjar.exe)

3钮追、以go執(zhí)行器xjar啟動jar包

執(zhí)行命令:nohup ./xjar java -jar afcApp.jar&

帶參數(shù)啟動方式:

nohup ./xjar java --add-opens java.base/jdk.internal.loader=ALL-UNNAMED -jar afcApp.jar&

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市阿迈,隨后出現(xiàn)的幾起案子元媚,更是在濱河造成了極大的恐慌,老刑警劉巖苗沧,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刊棕,死亡現(xiàn)場離奇詭異,居然都是意外死亡待逞,警方通過查閱死者的電腦和手機(jī)鞠绰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來飒焦,“玉大人,你說我怎么就攤上這事屿笼∥” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵驴一,是天一觀的道長休雌。 經(jīng)常有香客問我,道長肝断,這世上最難降的妖魔是什么杈曲? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮胸懈,結(jié)果婚禮上担扑,老公的妹妹穿的比我還像新娘。我一直安慰自己趣钱,他們只是感情好涌献,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著首有,像睡著了一般燕垃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上井联,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天卜壕,我揣著相機(jī)與錄音,去河邊找鬼烙常。 笑死轴捎,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播轮蜕,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼昨悼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了跃洛?” 一聲冷哼從身側(cè)響起率触,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎汇竭,沒想到半個月后葱蝗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡细燎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年两曼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玻驻。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡悼凑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出璧瞬,到底是詐尸還是另有隱情户辫,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布嗤锉,位于F島的核電站渔欢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瘟忱。R本人自食惡果不足惜奥额,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望访诱。 院中可真熱鬧垫挨,春花似錦、人聲如沸触菜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽玫氢。三九已至帚屉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漾峡,已是汗流浹背攻旦。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留生逸,地道東北人牢屋。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓划煮,卻偏偏與公主長得像驹闰,于是被迫代替她去往敵國和親凡人。 傳聞我的和親對象是個殘疾皇子详拙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容