国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java混淆了嗎

mumumu / 2839人閱讀

摘要:前言最近在項目中碰到個一個場景,我們需要把自己的項目包部署到一個第三方的服務器上,雖然雙方互相信任,但是綜合考慮,避免別人拿到包后可以很快的編譯出源碼,我們決定給代碼加一層混淆,雖然此方法不能從根源上解決問題,但是做了一層混淆,也可以增加閱

前言

最近在項目中碰到個一個場景,我們需要把自己的java項目jar包部署到一個第三方的服務器上,雖然雙方互相信任,但是綜合考慮,避免別人拿到jar包后可以很快的編譯出源碼,我們決定給代碼加一層混淆,雖然此方法不能從根源上解決問題,但是做了一層混淆,也可以增加閱讀源碼的難度,總結了一下,寫下這篇文章。

如何反編譯java代碼

我用的是mac電腦,從官網:http://java-decompiler.github...下載JD-GUI,官網有很多版本,下載后安裝打開即可,導入你想反編譯的jar,我這里隨便找了個jar包做演示

何為java混淆

細心的小伙伴肯定發現了,上面的截圖有的包名是a,b,c這樣命名的,但凡有點節操的程序員都不會這樣命名的,這就是被混淆后的代碼,讓人不會一眼看出來代碼里面的邏輯,效果會像下面這樣

可以看到類名,包名都被修改了

進行java混淆

我們以之前springboot項目為例,進行service層的代碼的混淆,混淆前效果如下:



接下來我們只需要在pom里面加入如下插件

              
                org.apache.maven.plugins
                maven-compiler-plugin
                3.1
                
                    1.7
                    1.7
                    UTF-8
                
            
            
                com.github.wvengen
                proguard-maven-plugin
                2.0.14
                
                    
                        package
                        
                            proguard
                        
                    
                
                
                    6.1.0beta2
                    ${project.build.finalName}.jar
                    ${project.build.finalName}.jar
                    true
                    
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                    
                    true
                    
                        
                        ${java.home}/lib/rt.jar
                    
                
                
                    
                        net.sf.proguard
                        proguard-base
                        6.1.0beta2
                    
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
            

執行打包命令:mvn package,會看到生成如下

我們看到了生成了不只一個jar包,還有一些別的文件,這個我們放后面介紹,我們先看下劃紅線的jar反編譯后的效果


可以看到我們針對service包下面的類混淆成功了

注意點

zplxjj_proguard_base.jar是沒有經過混淆的jar

兩個.txt文件說明了混淆前和混淆后的對應關系

如果項目中引入了spring框架,類的注入id要保持唯一性,否則就要重寫生成bean的id規則的方法

更多pom文件細節可以參考:https://www.guardsquare.com/e...

更多文章可關注個人博客:https://www.zplxjj.com和公眾號

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74918.html

相關文章

  • 你有freestatic嗎?

    摘要:小節也有類似的栗子,其結論是靜態方法不具有多態性。來自一個有趣的問題靜態字段論述的問題大致是說以上兩個類中各有幾個方法本質其實就是有無時的區別。 Demo1 來自關于java中static一個有意思的小案例: class Employee { private static Employee employee = new Employee(); public static...

    cppprimer 評論0 收藏0
  • 關于python編碼,你真的明白了嗎

    摘要:二進制位,是計算機內部數據儲存的最小單位,是一個位二進制數。由于源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存為編碼。 計算機存儲的幾個概念 想要徹底搞清楚編碼問題,我們必須要先搞清楚計算機是怎么存儲數據的,這就涉及到了計算機基礎的幾個概念了,開篇我們就先來捋捋這幾個容易混淆的概念。 bit 二進制位, 是計算機內部數據儲存的最小單位,1...

    darcrand 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<