成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java反編譯的幾種常用方法

開發 后端
由于Java字節碼的抽象級別較高,因此它們較容易被反編譯。本文講述了四種常用的Java反編譯的方法,它們分別是隔離Java程序、對Class文件進行加密、轉換成本地代碼和代碼混淆。

由于Java字節碼的抽象級別較高,因此它們較容易被反編譯。下面介紹了幾種常用的Java反編譯的方法,用于保護Java字節碼不被反編譯。通常,這些方法不能夠絕對防止程序被反編譯,而是加大反編譯的難度而已,因為這些方法都有自己的使用環境和弱點。
一、隔離Java程序

最簡單的方法就是讓用戶不能夠訪問到Java Class程序,這種方法是最根本的方法,具體實現有多種方式。例如,開發人員可以將關鍵的Java Class放在服務器端,客戶端通過訪問服務器的相關接口來獲得服務,而不是直接訪問Class文件。這樣黑客就沒有辦法反編譯Class文件。目前,通過接口提供服務的標準和協議也越來越多,例如 HTTP、Web Service、RPC等。但是有很多應用都不適合這種保護方式,例如對于單機運行的程序就無法隔離Java程序。

二、對Class文件進行加密

為了防止Class文件被直接反編譯,許多開發人員將一些關鍵的Class文件進行加密,例如對注冊碼、序列號管理相關的類等。在使用這些被加密的類之前,程序首先需要對這些類進行解密,而后再將這些類裝載到JVM當中。這些類的解密可以由硬件完成,也可以使用軟件完成。

在實現時,開發人員往往通過自定義ClassLoader類來完成加密類的裝載(注意由于安全性的原因,Applet不能夠支持自定義的ClassLoader)。自定義的ClassLoader首先找到加密的類,而后進行解密,最后將解密后的類裝載到JVM當中。在這種保護方式中,自定義的ClassLoader是非常關鍵的類。由于它本身不是被加密的,因此它可能成為黑客最先攻擊的目標。如果相關的解密密鑰和算法被攻克,那么被加密的類也很容易被解密。

三、轉換成本地代碼

將程序轉換成本地代碼也是一種防止反編譯的有效方法。因為本地代碼往往難以被反編譯。開發人員可以選擇將整個應用程序轉換成本地代碼,也可以選擇關鍵模塊轉換。如果僅僅轉換關鍵部分模塊,Java程序在使用這些模塊時,需要使用JNI技術進行調用。當然,在使用這種技術保護Java程序的同時,也犧牲了Java的跨平臺特性。對于不同的平臺,我們需要維護不同版本的本地代碼,這將加重軟件支持和維護的工作。不過對于一些關鍵的模塊,有時這種方案往往是必要的。為了保證這些本地代碼不被修改和替代,通常需要對這些代碼進行數字簽名。在使用這些本地代碼之前,往往需要對這些本地代碼進行認證,確保這些代碼沒有被黑客更改。如果簽名檢查通過,則調用相關JNI方法。

四、代碼混淆

代碼混淆是對Class文件進行重新組織和處理,使得處理后的代碼與處理前代碼完成相同的功能(語義)。但是混淆后的代碼很難被反編譯,即反編譯后得出的代碼是非常難懂、晦澀的,因此反編譯人員很難得出程序的真正語義。從理論上來說,黑客如果有足夠的時間,被混淆的代碼仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是從實際情況來看,由于混淆技術的多元化發展,混淆理論的成熟,經過混淆的Java代碼還是能夠很好地防止反編譯。下面我們會詳細介紹混淆技術,因為混淆是一種保護Java程序的重要技術。

以上便是四種最常用的Java反編譯的方法。

 

【編輯推薦】

  1. 20個開發人員非常有用的Java功能代碼
  2. 走進Java 7中的模塊系統
  3. JavaFX 1.2 已經發布 主要新功能一覽
  4. 2009年十大Java技術解決方案
  5. 2008最值得學習的五種JAVA技術

 

責任編輯:仲衡 來源: jethro的個人主頁
相關推薦

2015-01-15 11:01:43

2011-05-31 14:52:13

Android 反編譯 方法

2011-05-31 14:18:17

2017-02-20 13:54:14

Java代碼編譯

2011-04-20 10:32:44

java反編譯

2021-12-17 14:27:52

jar反編譯Java

2016-09-06 22:16:42

JavaDOCXPDF

2010-05-17 15:17:06

MySQL常用操作

2020-08-25 08:53:02

Linux端口轉發

2021-03-07 16:31:35

Java編譯反編譯

2009-09-14 18:11:23

C#排序方法

2010-05-04 15:49:24

Oracle修改

2011-06-30 14:58:16

偽原創

2021-06-30 06:10:31

數組去重方法數組變量

2009-06-11 14:11:33

代碼混淆Java反編譯

2010-01-25 15:57:34

Android保存數據

2018-08-09 20:47:41

2009-06-09 10:05:41

jQuery

2021-12-10 10:05:27

Java反編譯jar

2009-08-06 17:24:08

C#字符串
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一道本在线 | 亚洲精品99久久久久久 | 狠狠插天天干 | 国精品一区二区 | 国产精品高清一区二区三区 | 欧美专区在线 | 日韩一区二区精品 | 伊人性伊人情综合网 | 国内精品久久久久久 | 老妇激情毛片免费 | 国产精品久久久久久妇女6080 | 日韩免费在线视频 | 精品久久久久久亚洲精品 | 国产精品极品美女在线观看免费 | 欧美一级二级三级 | 欧美阿v | 亚洲一区在线日韩在线深爱 | 久久机热 | 99这里只有精品视频 | 麻豆国产一区二区三区四区 | 日韩中文一区 | 一级毛片在线播放 | 日韩在线不卡 | 国产日韩久久 | 亚洲国产精品一区二区久久 | 精品视频一区二区在线观看 | 日韩午夜电影 | 91精品国产综合久久久动漫日韩 | 欧美一级大片免费观看 | 久久久免费电影 | 国产视频一区二区三区四区五区 | 黄色激情毛片 | 精品成人一区二区 | 99热首页 | 国产97久久 | 在线免费观看黄网 | 青青草一区 | 欧美成人精品欧美一级 | 欧美成人免费 | 日本久久精品视频 | 熟女毛片 |