Java Jar 包加密 — XJar

Java Jar 包加密 — XJar

Java Jar 包加密

一、緣由

  Java的 Jar包中的.class文件可以通過反彙編得到源碼。這樣一款應用的安全性就很難得到保證,別人只要得到你的應用,不需花費什麼力氣,就可以得到源碼。

  這時候就需要對jar進行加密處理。

二、技術&工具

  XJar

  GitHub:https://github.com/core-lib/xjar

  碼雲:https://gitee.com/core-lib/xjar?_from=gitee_search

  maven集成 XJar

 

  GitHub:https://github.com/core-lib/xjar-maven-plugin

  碼雲:https://gitee.com/core-lib/xjar-maven-plugin?_from=gitee_search

  xjar-agent-hibernate

  GitHub:https://github.com/core-lib/xjar-agent-hibernate

  碼雲:https://gitee.com/core-lib/xjar-agent-hibernate?_from=gitee_search

  go語言、maven、eclipse

  文檔可以到github、碼雲上去了解,這裏只描述使用過程,親測可用!

三、實現過程

  這裏使用的maven版本是:apache-maven-3.6.3,低版本的沒測試過

  1、XJar

   1-1.在github或碼雲上下載該項目,導入eclipse,然後新建一個main類,填入參數,直接運行得到一個xjar.go 和 加密后的jar包【xx-encrypted.jar】。

    注意:這種直接在項目中跑mian,不提倡,會導致jar包中包含這段代碼,導緻密碼泄露,所以要通過命令行的方式來執行這段代碼。

    

    1-2.這時候可以用反編譯軟件 jb-gui 打開jar看看加密的效果,這時候反編譯軟件已經看不到.class文件的源碼了

 

 

     1-3.加密后的jar包,不能直接用原來的java 命令來執行,需要用到同時生成的xjar.go文件,執行命令 go build xjar.go

      這裏要等待一小會,等待編譯出目標文件xjar.exe

      

 

 

       

      1-4. 最後執行命令,xjar java -jar /path/to/encrypted.jar,即可運行加密后的jar包

       注意:Spring Boot + JPA(Hibernate) 啟動會報錯

                   1-5:沒有採用 Spring Boot + JPA(Hibernate) 技術的可以略過以下步驟。

      a、到碼雲、GitHub上下載  xjar-agent-hibernate  項目

      b、導入eclipse 打包出jar包

      c、然後執行命令  xjar java -javaagent:xjar-agent-hibernate-v1.0.0.jar -jar path\wx-encrypted.jar,即可正常運行

      

   2、maven集成 XJar

    第二種方式就比較簡單了,直接在項目中引入xjar-maven-plugin,然後打包就可以了,其他操作方式和第一種類似

    注意:密碼最好採用命令行方式

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

       

 <plugin> <groupId>com.github.core-lib</groupId> <artifactId>xjar-maven-plugin</artifactId> <version>4.0.0</version> <executions> <execution> <goals> <goal>build</goal> </goals> <phase>install</phase> <configuration> <password>1233445</password> <includes>
                   <!----> <include>/com/xxx/xxx/**/*.class</include> </includes> <!-- 無需加密的資源路徑表達式 --> <excludes> <exclude>static/**</exclude> <exclude>META-INF/resources/**</exclude> </excludes> <!-- 源jar所在目錄 --> <sourceDir>path\</sourceDir> <!-- 源jar名稱 --> <sourceJar>xxx.jar</sourceJar> <!-- 目標jar存放目錄 --> <targetDir>path\test2</targetDir> <!-- 目標jar名稱 --> <targetJar>xxx-encrypted.jar</targetJar> </configuration> </execution> </executions> </plugin>

四、後記

  其實所有軟件,都可以被破解,只是破解過程是簡單還是複雜、以及破解成本的高低。

  最關鍵的還是自己軟件要更新迭代的快,這樣才能把模仿者遠遠甩在身後。

  轉發請註明出處!!!

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

FB行銷專家,教你從零開始的技巧