偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

防止JAVA字節(jié)碼反編譯問題解決方案

開發(fā) 后端
防止JAVA字節(jié)碼反編譯這個問題在java語言雛形期就有了,盡管市面上存在一些反編譯的工具可以利用,但是JAVA程序員還是不斷的努力尋找新的更有效的方法來保護他們的智慧結(jié)晶。

這里向大家描述一下Java字節(jié)碼加密問題,Class文件能被很輕松的重構(gòu)生成JAVA源文件與最初JAVA字節(jié)碼的設(shè)計目的和商業(yè)交易有緊密地聯(lián)系。

深入Java字節(jié)碼加密

  問:

  如果我把我的class文件加密,在運行時用指定的類加載器(classloader)裝入并解密它,這樣子能防止被反編譯嗎?
  
  答:

  防止JAVA字節(jié)碼反編譯這個問題在java語言雛形期就有了,盡管市面上存在一些反編譯的工具可以利用,但是JAVA程序員還是不斷的努力尋找新的更有效的方法來保護他們的智慧結(jié)晶。在此,我將詳細給大家解釋這一直來在論壇上有爭議的話題。
  
  Class文件能被很輕松的重構(gòu)生成JAVA源文件與最初JAVA字節(jié)碼的設(shè)計目的和商業(yè)交易有緊密地聯(lián)系。另外,JAVA字節(jié)碼被設(shè)計成簡潔、平臺獨立性、網(wǎng)絡(luò)靈活性,并且易于被字節(jié)碼解釋器和JIT(just-in-time)/HotSpot編譯器所分析??梢郧宄亓私獬绦騿T的目的,Class文件要比JAVA源文件更易于分析。
  
  如果不能阻止被反編譯的話,至少可以通過一些方法來增加它的困難性。例如:在一個分步編譯里,你可以打亂Class文件的數(shù)據(jù)以使其難讀或者難以被反編譯成正確的JAVA源文件,前者可以采用極端函數(shù)重載,后者用操作控制流建立控制結(jié)構(gòu)使其難以恢復正常次序。有更多成功的商業(yè)困惑者采用這些或其他的技術(shù)來保護自己的代碼。

  不幸的是,哪種方法都必須改變JVM運行的代碼,并且許多用戶害怕這種轉(zhuǎn)化會給他們的程序帶來新的Bug。而且,方法和字段重命名會調(diào)用反射從而使程序停止工作,改變類和包的名字會破壞其他的JAVAAPIS(JNDI,URLproviders,etc),除了改變名字,如果字節(jié)碼偏移量和源代碼行數(shù)之間的關(guān)系改變了,在恢復這有異常的堆棧將很困難。
  
  于是就有了一些打亂JAVA源代碼的選項,但是這將從本質(zhì)上導致一系列問題的產(chǎn)生。
  
加密而不打亂

  或許上述可能會使你問,假如我把字節(jié)碼加密而不是處理字節(jié)碼,并且JVM運行時自動將它解密并裝入類加載器,然后JVM運行解密后的字節(jié)碼文件,這樣就不會被反編譯了對嗎?
  
  考慮到你是第一個提出這種想法的并且它又能正常運行,我表示遺憾和不幸,這種想法是錯誤的。

【編輯推薦】

  1. JAVA字節(jié)碼文件操作技巧
  2. IBM發(fā)布Java字節(jié)碼配置工具包BIPTK
  3. JVM.dll裝載過程與源代碼分析
  4. 巧解使Eclipse崩潰的JVM terminated問題
  5. 解決JVM Terminated.ExitCode=-1問題行之有效的方法

 

責任編輯:佚名 來源: svn8.com
相關(guān)推薦

2012-05-09 10:08:41

跨機房

2010-09-27 13:14:42

JVM內(nèi)存限制

2010-03-30 16:04:34

Linux Nginx

2010-05-31 12:53:56

Nagios apac

2010-02-06 14:54:11

C++指針漂移

2010-10-08 13:09:38

JavaScript數(shù)

2010-04-28 19:24:17

Hp unix

2011-03-23 16:38:28

LAMP

2010-08-04 10:20:30

Flex組件開發(fā)

2021-01-13 10:18:29

SocketNetty粘包

2010-10-09 12:58:59

JS腳本兼容

2010-09-07 09:08:03

DIV彈出層

2010-04-06 09:33:37

CentOS系統(tǒng)

2010-08-26 08:45:32

margin:0pxa

2010-05-04 11:30:29

Oracle漢字長度

2010-09-15 14:14:29

IE6position

2010-02-23 17:49:56

WCF傳輸大數(shù)據(jù)

2010-08-26 10:56:16

CSStextarea

2010-02-24 10:55:01

WCF跨域訪問

2009-09-03 16:09:48

.net回車符
點贊
收藏

51CTO技術(shù)棧公眾號