<pre id="j1hhf"><ruby id="j1hhf"></ruby></pre><pre id="j1hhf"><track id="j1hhf"><ruby id="j1hhf"></ruby></track></pre>
    <track id="j1hhf"></track>
          <track id="j1hhf"><strike id="j1hhf"><strike id="j1hhf"></strike></strike></track>

          首頁
          手機版
          熱門搜索:
          當前位置:電腦軟件編程開發編程軟件Proguard

          Proguard (JAVA代碼混淆工具)最新版5.3.3

          • 大?。?.66MB
          • 語言:簡體中文
          • 類別:編程軟件
          • 類型:免費軟件
          • 授權:國產軟件
          • 時間:2022/06/27
          • 官網:http://www.backninesunday.com
          • 環境:Windows7/Windows10/Windows All

          相關軟件

          Proguard是一款JAVA代碼混淆工具,可以幫助用戶對JAVA編程軟件的代碼進行混淆,通過混淆代碼可以幫助用戶保護自己的JAVA代碼,讓代碼不會被反編譯,軟件的使用非常簡單,只需要導入對應的軟件代碼即可,可以直接對編譯好后的class文件進行混淆,軟件中內置了壓縮器、優化器、混淆器、預校驗器等等工具。通過ProGuard得到的更精簡的jar文件意味著只需要更小的存儲空間混淆環節會用無意義的短變量去重命名類、變量、方法。這些步驟讓代碼更精簡,更高效,也更難被逆向破解。

          Proguard圖片

          軟件功能

          壓縮(Shrink):檢測并移除代碼中無用的類、字段、方法和特性(Attribute)。

          優化(Optimize):對字節碼進行優化,移除無用的指令。

          混淆(Obfuscate):使用a,b,c,d這樣簡短而無意義的名稱,對類、字段和方法進行重命名。

          預檢(Preveirfy):在Java平臺上對處理后的代碼進行預檢,確保加載的class文件是可執行的。

          工作原理

          ProGuar由shrink、optimize、obfuscate和preveirfy四個步驟組成,每個步驟都是可選的,我們可以通過配置腳本來決定執行其中的哪幾個步驟。

          混淆就是移除沒有用到的代碼,然后對代碼里面的類、變量、方法重命名為人可讀性很差的簡短名字。

          那么有一個問題,ProGuard怎么知道這個代碼沒有被用到呢?

          這里引入一個Entry Point(入口點)概念,Entry Point是在ProGuard過程中不會被處理的類或方法。在壓縮的步驟中,ProGuard會從上述的Entry Point開始遞歸遍歷,搜索哪些類和類的成員在使用,對于沒有被使用的類和類的成員,就會在壓縮段丟棄,在接下來的優化過程中,那些非Entry Point的類、方法都會被設置為private、static或final,不使用的參數會被移除,此外,有些方法會被標記為內聯的,在混淆的步驟中,ProGuard會對非Entry Point的類和方法進行重命名。

          那么這個入口點怎么來呢?就是從ProGuard的配置文件來,只要這個配置了,那么就不會被移除。

          ProGuard支持那些種類的優化:      除了在壓縮操作刪除的無用類,字段和方法外,ProGuard也能在字節碼級提供性能優化,內部方法有:

          常量表達式求值

          刪除不必要的字段存取

          刪除不必要的方法調用

          刪除不必要的分支

          刪除不必要的比較和instanceof驗證

          刪除未使用的代碼

          刪除只寫字段

          刪除未使用的方法參數

          像push/pop簡化一樣的各種各樣的peephole優化

          在可能的情況下為類添加static和final修飾符

          在可能的情況下為方法添加private, static和final修飾符

          在可能的情況下使get/set方法成為內聯的

          當接口只有一個實現類的時候,就取代它

          選擇性的刪除日志代碼

          實際的優化效果是依賴于你的代碼和執行代碼的虛擬機的。簡單的虛擬機比有復雜JIT編譯器的高級虛擬機更有效。無論如何,你的字節碼會變得更小。

          仍有一些明顯需要優化的技術不被支持:

          使非final的常量字段成為內聯

          像get/set方法一樣使其他方法成為內聯

          將常量表達式移到循環之外

          Optimizations that require escape analysis

          標簽: 代碼混淆 反編譯

          下載地址

          網友評論

          返回頂部
          出差巧干朋友娇妻小说

            <pre id="j1hhf"><ruby id="j1hhf"></ruby></pre><pre id="j1hhf"><track id="j1hhf"><ruby id="j1hhf"></ruby></track></pre>
            <track id="j1hhf"></track>
                  <track id="j1hhf"><strike id="j1hhf"><strike id="j1hhf"></strike></strike></track>