• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            chenglong7997

            Java程序易遭受逆向工程攻擊的原因

             Java應用程序雖然能夠“編寫一次,隨處運行”(Write Once, Run Anywhere)是一個巨大的優勢,但這種環境的架構方式使其遠比本機應用程序更容易被黑客進行逆向工程。這意味著開發人員面臨著失去知識產權的非常真實的危險。基于應用程序的虛擬機比本機應用程序更容易逆向工程的原因有很多:
            JVM是開源的
              Sun已經免費提供JVM的源代碼。這使得黑客只需查看代碼即可弄清虛擬機的工作方式。
            Java .class文件格式是可公開獲取的
            如前所述,Java源代碼被編譯成字節碼,而字節碼存儲在Java .class文件中。Java .class文件格式的規范是可公開獲取的,因此有技術背景的任何人都能容易地編寫可以處理、修改或轉換.class文件的工具。
            JVM是軟件,而不是硬件
               與需要理解特定處理器的專家使用的標準編程語言不同,JVM是一個應用程序,它如同微處理器一樣運作,并使用操作系統和計算機硬件提供的內置功能。由于黑客不必深入到硬件級別,因此更容易取得對JVM的完全控制。
               因此,例如在使用標準本機系統開發語言進行調試時,暫停處理器極為困難,需要具備處理器、調試功能及可用環調試器的專家知識。但是,由于JVM 運行環境的源代碼是可公開獲取的,因此開發人員可以輕松地建立自己的虛擬機來完全控制虛擬處理器的各個方面。這樣可以容易地分析運行環境中運行的每個應用程序。
            Java的指令比本機代碼少
               然而,JVM代碼易于進行反向工程的另一個原因是它具有比本地應用程序更少的指令。這是出于性能考慮。JVM的使用在應用程序和本機處理器之間增加了一個軟件層,這會對性能產生負面影響。雖然現代處理器不斷提高的執行速度最終將緩解這一問題,但這一問題仍然很明顯。虛擬機開發人員提高執行速度的一種方法是使用比本機處理器匯編程序更小的字節碼指令集。本機應用程序可能包含多達400條指令,而Java應用程序通常使用不超過200條的指令。更少的指令意味著黑客可以更快地分析代碼以進行逆向工程。這些特性使得虛擬機遠比其它類型的應用程序更容易遭受逆向工程攻擊。
            第三方反匯編程序增加了漏洞
             不僅是JVM本身容易遭受逆向工程攻擊,商業和免費的Java字節碼反匯編程序也越來越多,從而進一步簡化了代碼逆向工程的過程。IDA和Eclipse字節碼插件是眾多Java字節碼反匯編程序中的兩種。作為商業產品,IDA是一種普遍的反匯編程序,可用于許多不同的處理器,包括80x86和MIPS。Eclipse字節碼插件是免費軟件。它能夠反編譯Java .class文件的字節碼并以適當的順序顯示所有操作碼指令。 盡管這些產品不大可能從字節碼完美地恢復原始代碼,但它們恢復的源代碼將等同于原始代碼,并且比字節碼更具可讀性。一旦恢復了源代碼,攻擊者可以容易地刪除部分代碼并將其非法地用于競爭對手的應用程序中,或在.class文件中定位打補丁。
            圖1提供了黑客可能如何在.class文件中打補丁的一個示例。屏幕的上半部分顯示了一小段Java源代碼。屏幕的下半部分顯示了字節碼反匯編的輸出,也就是一個字節碼指令列表。標記為紅色的區域是源代碼中IF結構的對應指令。字節碼指令“LCMP”的十六進制表示為0x94。該工具還指出了操作碼在.class文件中的位置。有了這些信息,黑客可以使用簡單的十六進制編輯器來改變該IF分支,而這只需不到一分鐘的時間。假設該IF條件用于許可證檢查,黑客可倒置該條件,指示即使在許可證被驗證為無效(如已過期)的情況下仍返回“True”,從而突破許可證檢查。在這種情況下,黑客使用一個字節的補丁即可完成所有工作。雖然大多數應用程序都比這個示例更加復雜,但即使在復雜的應用程序中,字節碼也非常簡單并且容易理解。
             Java應用程序雖然能夠“編寫一次,隨處運行”(Write Once, Run Anywhere)是一個巨大的優勢,但這種環境的架構方式使其遠比本機應用程序更容易被黑客進行逆向工程。這意味著開發人員面臨著失去知識產權的非常真實的危險。基于應用程序的虛擬機比本機應用程序更容易逆向工程的原因有很多:

            圖1 - 用于字節碼反匯編的Eclipse字節碼插件

            posted on 2012-04-11 13:43 Snape 閱讀(339) 評論(0)  編輯 收藏 引用 所屬分類: Java

            導航

            <2012年3月>
            26272829123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            統計

            常用鏈接

            留言簿

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            my

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            国内精品伊人久久久久777| 亚洲欧洲中文日韩久久AV乱码| 欧美精品久久久久久久自慰| 久久精品视频一| 99久久国产热无码精品免费| 色噜噜狠狠先锋影音久久| 久久福利青草精品资源站| 手机看片久久高清国产日韩 | 热久久国产欧美一区二区精品| 成人a毛片久久免费播放| 国内精品久久久久久久涩爱| 久久乐国产综合亚洲精品| 久久美女网站免费| 中文字幕人妻色偷偷久久| 天天综合久久久网| 色偷偷久久一区二区三区| 久久精品国产精品亚洲人人| 国产欧美一区二区久久| 国产成人精品久久| 久久国产热这里只有精品| 狠狠色丁香久久综合婷婷| 久久香综合精品久久伊人| 久久精品免费大片国产大片| 狠狠久久亚洲欧美专区 | 国产成人精品综合久久久久| 国产精品国色综合久久| 日韩欧美亚洲综合久久| 欧美粉嫩小泬久久久久久久 | 天堂无码久久综合东京热| 久久精品无码专区免费东京热| 久久久午夜精品福利内容| 狠狠久久亚洲欧美专区| av国内精品久久久久影院| 久久精品青青草原伊人| 久久亚洲精品无码VA大香大香| 亚洲午夜久久久| 久久精品免费网站网| 久久国产一片免费观看| 久久精品夜色噜噜亚洲A∨| 久久天天躁狠狠躁夜夜2020| 久久久久成人精品无码 |