亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

如何保護Java程序

2019-11-18 13:24:52
字體:
來源:轉載
供稿:網友

  java是一種跨平臺的、解釋型語言。Java 源代碼編譯中間“字節碼”存儲于class文件中。Class文件是一種字節碼形式的中間代碼,該字節碼中包括了很多源代碼的信息,例如變量名、方法名等。因此,Java中間代碼的反編譯就變得非常輕易。目前市場上有許多免費的、商用的反編譯軟件,都能夠生成高質量的反編譯后的源代碼。所以,對開發人員來說,如何保護Java程序就變成了一個非常重要的挑戰。本文首先討論了保護Java程序的基本方法,然后對代碼混淆問題進行深入研究,最后結合一個實際的應用程序,分析如何在實踐中保護Java程序。
  
  反編譯成為保護Java程序的最大挑戰
  
  通常C、C++等編程語言開發的程序都被編譯成目標代碼,這些目標代碼都是本機器的二進制可執行代碼。通常所有的源文件被編譯、鏈接成一個可執行文件。在這些可執行文件中,編譯器刪除了程序中的變量名稱、方法名稱等信息,這些信息往往是由內存地址表示,例如假如需要使用一個變量,往往是通過這個變量的地址來訪問的。因此,反編譯這些本地的目標代碼就是非常困難的。
  
  Java語言的出現,使得反編譯變得非常輕易而有效。原因如下:1.由于跨平臺的需求,Java的指令集比較簡單而通用,較輕易得出程序的語義信息;2.Java編譯器將每一個類編譯成一個單獨的文件,這也簡化了反編譯的工作;3.Java 的Class文件中,仍然保留所有的方法名稱、變量名稱,并且通過這些名稱來訪問變量和方法,這些符號往往帶有許多語義信息。由于Java程序自身的特點,對于不經過處理的Java程序反編譯的效果非常好。
  
  目前,市場上有許多Java的反編譯工具,有免費的,也有商業使用的,還有的是開放源代碼的。這些工具的反編譯速度和效果都非常不錯。好的反編譯軟件,能夠反編譯出非常接近源代碼的程序。因此,通過反編譯器,黑客能夠對這些程序進行更改,或者復用其中的程序。因此,如何保護Java程序不被反編譯,是非常重要的一個問題。
  
  常用的保護技術
  
  由于Java字節碼的抽象級別較高,因此它們較輕易被反編譯。本節介紹了幾種常用的方法,用于保護Java字節碼不被反編譯。通常,這些方法不能夠絕對防止程序被反編譯,而是加大反編譯的難度而已,因為這些方法都有自己的使用環境和弱點。
  
  隔離Java程序
  
  最簡單的方法就是讓用戶不能夠訪問到Java Class程序,這種方法是最根本的方法,具體實現有多種方式。例如,開發人員可以將要害的Java Class放在服務器端,客戶端通過訪問服務器的相關接口來獲得服務,而不是直接訪問Class文件。這樣黑客就沒有辦法反編譯Class文件。目前,通過接口提供服務的標準和協議也越來越多,例如 HTTP、Web Service、RPC等。但是有很多應用都不適合這種保護方式,例如對于單機運行的程序就無法隔離Java程序。這種保護方式見圖1所示。
  
   如何保護Java程序(圖一)
  圖1隔離Java程序示意圖
  
  對Class文件進行加密
  
  為了防止Class文件被直接反編譯,許多開發人員將一些要害的Class文件進行加密,例如對注冊碼、序列號治理相關的類等。在使用這些被加密的類之前,程序首先需要對這些類進行解密,而后再將這些類裝載到JVM當中。這些類的解密可以由硬件完成,也可以使用軟件完成。
  
  在實現時,開發人員往往通過自定義ClassLoader類來完成加密類的裝載(注重由于安全性的原因,Applet不能夠支持自定義的ClassLoader)。自定義的ClassLoader首先找到加密的類,而后進行解密,最后將解密后的類裝載到JVM當中。在這種保護方式中,自定義的ClassLoader是非常要害的類。由于它本身不是被加密的,因此它可能成為黑客最先攻擊的目標。假如相關的解密密鑰和算法被攻克,那么被加密的類也很輕易被解密。這種保護方式示意圖見圖2。
   如何保護Java程序(圖二)
  圖2 對Class文件進行加密示意圖
  
  轉換成本地代碼
  
  將程序轉換成本地代碼也是一種防止反編譯的有效方法。因為本地代碼往往難以被反編譯。開發人員可以選擇將整個應用程序轉換成本地代碼,也可以選擇要害模塊轉換。假如僅僅轉換要害部分模塊,Java程序在使用這些模塊時,需要使用JNI技術進行調用。
  
  當然,在使用這種技術保護Java程序的同時,也犧牲了Java的跨平臺特性。對于不同的平臺,我們需要維護不同版本的本地代碼,這將加重軟件支持和維護的工作。不過對于一些要害的模塊,有時這種方案往往是必要的。
  
  為了保證這些本地代碼不被修改和替代,通常需要對這些代碼進行數字簽名。在使用這些本地代碼之前,往往需要對這些本地代碼進行認證,確保這些代碼沒有被黑客更改。假如簽名檢查通過,則調用相關JNI方法。這種保護方式示意圖見圖3。
  
  代碼混淆
  
   如何保護Java程序(圖三)
  圖3 轉換成本地代碼示意圖
  
  代碼混淆是對Class文件進行重新組織和處理,使得處理后的代碼與處理前代碼完成相同的功能(語義)。但是混淆后的代碼很難被反編譯,即反編譯后得出的代碼是非常難懂、晦澀的,因此反編譯人員很難得出程序的真正語義。從理論上來說,黑客假如有足夠的時間,被混淆的代碼仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是從實際情況來看,由于混淆技術的多元化發展,混淆理論的成熟,經過混淆的Java代碼還是能夠很好地防止反編譯。下面我們會具體介紹混淆技術,因為混淆是一種保護Java程序的重要技術。圖4是代碼混淆的示意圖。
   如何保護Java程序(圖四)
  圖4 代碼混淆示意圖
  
  幾種技術的總結
  
  以上幾種技術都有不同的應用環境,各自都有自己的弱點,表1是相關特點的比較。
  
  混淆技術介紹
  
  表1 不同保護技術比較表
   如何保護Java程序(圖五)
  到目前為止,對于Java程序的保護,混淆技術還是最基本的保護方法。Java混淆工具也非常多,包括商業的、免費的、開放源代碼的。Sun公司也提供了自己的混淆工具。它們大多都是對Class文件進行混淆處理,也有少量工具首先對源代碼進行處理,然后再對Class進行處理,這樣加大了混淆處理的力度。目前,商業上比較成功的混淆工具包括JPRoof公司的1stBarrier系列、Eastridge公司的JShrink和4thpass.com的SourceGuard等。主要的混淆技術按照混淆目標可以進行如下分類,它們分別為符號混淆(Lexical Obfuscation)、數據混淆(Data Obfuscation)、控制混淆(Control Obfuscation)、預防性混淆(Prevent Transformation)。
  
  符號混淆
  
  在Class中存在許多與程序執行本身無關的信息,例如方法名稱、變量名稱,這些符號的名稱往往帶有一定的含義。例如某個方法名為getKeyLength(),那么這個方法很可能就是用來返回Key的長度。符號混淆就是將這些信息打亂,把這些信息變成無任何意義的表示,例如將所有的變量從vairant_001開始編號;對于所有的方法從method_001開始編號。這將對反編譯帶來一定的困難。對于私有函數、局部變量,通常可以改變它們的符號,而不影響程序的運行。但是對于一些接口名稱、公有函數、成員變量,假如有其它外部模塊需要引用這些符號,我們往往需要保留這些名稱,否則外部模塊找不到這些名稱的方法和變量。因此,多數的混淆工具對于符號混淆,都提供了豐富的選項,讓用戶選擇是否、如何進行符號混淆。
  
  數據混淆
   如何保護Java程序(圖六)
  圖5 改變數據訪問
  
  數據混淆是對程序使用的數據進行混淆。混淆的方法也有多種,主要可以分為改變數據存儲及編碼(Store and Encode Transform)、改變數據訪問(access Transform)。
  
  改變數據存儲和編碼可以打亂程序使用的數據存儲方式。例如將一個有10個成員的數組,拆開為10個變量,并且打亂這些變量的名字;將一個兩維數組轉化為一個一維數組等。對于一些復雜的數據結構,我們將打亂它的數據結構,例如用多個類代替一個復雜的類等。
  
  另外一種方式是改變數據訪問。例如訪問數組的下標時,我們可以進行一定的計算,圖5就是一個例子。
  
  在實踐混淆處理中,這兩種方法通常是綜合使用的,在打亂數據存儲的同時,也打亂數據訪問的方式。經過對數據混淆,程序的語義變得復雜了,這樣增大了反編譯的難度。
  
  控制混淆
  
  控制混淆就是對程序的控制流進行混淆,使得程序的控制流更加難以反編譯,通??刂屏鞯母淖冃枰黾右恍╊~外的計算和控制流,因此在性能上會給程序帶來一定的負面影響。有時,需要在程序的性能和混淆程度之間進行權衡??刂苹煜募夹g最為復雜,技巧也最多。這些技術可以分為如下幾類:
  
  增加混淆控制 通過增加額外的、復雜的控制流,可以將程序原來的語義隱藏起來。例如,對于按次序執行的兩個語句A、B,我們可以增加一個控制條件,以決定B的執行。通過這種方式加大反匯編的難度。但是所有的干擾控制都不應該影響B的執行。圖6就給出三種方式,為這個例子增加混淆控制。
   如何保護Java程序(圖七)
  圖6 增加混淆控制的三種方式
  
  控制流重組 重組控制流也是重要的混淆方法。例如,程序調用一個方法,在混淆后,可以將該方法代碼嵌入到調用程序當中。反過來,程

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲四色影视在线观看| 日韩av中文字幕在线| 2019精品视频| 91中文字幕在线观看| 日韩国产欧美精品在线| 日av在线播放中文不卡| 97视频在线观看播放| 日韩精品欧美激情| 亚洲国产婷婷香蕉久久久久久| 久久久久久亚洲精品中文字幕| 91精品在线影院| 国产999精品久久久| 欧美日韩在线免费| 91高潮在线观看| 美日韩精品视频免费看| 亚洲成人免费在线视频| 国产小视频国产精品| 97香蕉久久夜色精品国产| 亚洲美女在线视频| 久久全球大尺度高清视频| 国产中文字幕日韩| 国产精品高精视频免费| 色yeye香蕉凹凸一区二区av| 精品一区二区三区电影| 欧美激情精品久久久久久免费印度| 日韩av毛片网| 久久香蕉频线观| 国产精品伦子伦免费视频| 成人久久一区二区| 欧美二区乱c黑人| 国产精品一区二区久久| 国产精品久久久久久久久借妻| 国产精品免费一区豆花| 亚洲第一二三四五区| 亚洲人成网站在线播| 日韩av网站在线| 色无极影院亚洲| 国产精品色午夜在线观看| 色偷偷91综合久久噜噜| 欧美日韩综合视频| 欧美亚洲激情视频| 亚洲最大av在线| 亚洲国产精品久久久久秋霞蜜臀| 中文在线资源观看视频网站免费不卡| 国产经典一区二区| 韩剧1988免费观看全集| 国产97人人超碰caoprom| 欧美一级视频在线观看| 热草久综合在线| 欧美裸体xxxx极品少妇软件| 国产精品偷伦免费视频观看的| 亚洲女同精品视频| 亚洲成人在线视频播放| 日韩国产精品一区| 日韩免费观看网站| 国产一区二区三区视频在线观看| 日韩中文字幕亚洲| 亚洲免费视频观看| 国产免费一区视频观看免费| 91精品久久久久久综合乱菊| 亚洲一区二区少妇| 欧美成人一区二区三区电影| 亚洲欧洲av一区二区| 国产精品成人一区二区三区吃奶| 91九色视频在线| 国产精品久久久久77777| 97视频在线观看免费高清完整版在线观看| 国产91成人在在线播放| 久久人91精品久久久久久不卡| 国产精品永久免费| 色多多国产成人永久免费网站| 中文字幕不卡av| 久久久免费在线观看| 岛国av一区二区在线在线观看| 97视频人免费观看| 亚洲精品福利免费在线观看| 欧美激情免费视频| 姬川优奈aav一区二区| 日韩大片免费观看视频播放| 欧美日韩视频在线| 国产精品亚洲视频在线观看| 久久人人97超碰精品888| 亚洲一区二区三区视频播放| 久久国产一区二区三区| 日日狠狠久久偷偷四色综合免费| 性欧美xxxx视频在线观看| 国产在线视频91| 91精品国产777在线观看| 国产成人在线视频| 日韩av在线看| 亚洲区中文字幕| 成人黄色av免费在线观看| 欧美性20hd另类| 亚洲人午夜精品免费| 欧美日韩国产一区中文午夜| 亚洲有声小说3d| 日本精品久久久久久久| 91午夜理伦私人影院| 日韩欧美在线视频| 中文国产成人精品| 国产精品第2页| 成人免费激情视频| 日韩欧美999| 国产精品精品视频一区二区三区| 国产精品尤物福利片在线观看| 欧美又大又硬又粗bbbbb| 91精品成人久久| 国产噜噜噜噜久久久久久久久| 国产精品成人观看视频国产奇米| 欧美激情精品久久久久久免费印度| 欧美老女人性生活| 亚洲人成在线播放| 欧美精品电影免费在线观看| 欧美激情精品在线| 国产成人精品久久亚洲高清不卡| 狠狠躁夜夜躁人人爽天天天天97| 欧美日产国产成人免费图片| 久久91精品国产| 国产精品一区av| 在线精品视频视频中文字幕| 精品偷拍一区二区三区在线看| 国产精品白嫩美女在线观看| 91在线免费网站| 亚洲xxx大片| 日韩av不卡电影| 国产精品无码专区在线观看| 成人国产精品色哟哟| 亚洲情综合五月天| 欧美日韩在线视频一区二区| 久久综合色影院| 欧美日韩ab片| 国产成人欧美在线观看| 一本色道久久综合狠狠躁篇怎么玩| 国产精品户外野外| 日韩女在线观看| 久久免费在线观看| 欧美久久久精品| 狠狠综合久久av一区二区小说| 欧美日本国产在线| 美女国内精品自产拍在线播放| 午夜精品久久久久久久白皮肤| 久久久中文字幕| 成人妇女免费播放久久久| 国产一区视频在线播放| 91a在线视频| 日韩欧美亚洲成人| 色999日韩欧美国产| 国产精品黄色影片导航在线观看| 亚洲成成品网站| 尤物yw午夜国产精品视频| 2019亚洲男人天堂| 久久影视电视剧凤归四时歌| 国产精品久久久精品| 欧美成人免费在线视频| 欧美性受xxxx黑人猛交| 国产精品99久久久久久www| 久久国产精品久久久久| 久久久噜噜噜久久中文字免| 亚洲美女av在线播放| 欧美做爰性生交视频| 中文字幕最新精品| 亚洲美女性生活视频| 亚洲人午夜色婷婷| 亚洲欧美国产高清va在线播|