精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

小妙招:如何防止你的 jar 包被反編譯?

開發 后端
本文介紹了幾種常用的方法,用于保護Java字節碼不被反編譯。通常,這些方法不能夠絕對防止程序被反編譯,而是加大反編譯的難度而已,因為這些方法都有自己的使用環境和弱點。

[[441010]]

 序

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

隔離Java程序

最簡單的方法就是讓用戶不能夠訪問到Java Class程序,這種方法是最根本的方法,具體實現有多種方式。例如,開發人員可以將關鍵的Java Class放在服務器端,客戶端通過訪問服務器的相關接口來獲得服務,而不是直接訪問Class文件。

這樣黑客就沒有辦法[反編譯Class文件。目前,通過接口提供服務的標準和協議也越來越多,例如 HTTP、Web Service、RPC等。但是有很多應用都不適合這種保護方式,例如對于單機運行的程序就無法隔離Java程序。這種保護方式見圖1所示。

圖1-隔離Java程序

Part3對Class文件進行加密

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

在實現時,開發人員往往通過自定義ClassLoader類來完成加密類的裝載(注意由于安全性的原因,Applet不能夠支持自定義的 ClassLoader)。自定義的ClassLoader首先找到加密的類,而后進行解密,最后將解密后的類裝載到JVM當中。

在這種保護方式中,自定義的ClassLoader是非常關鍵的類。由于它本身不是被加密的,因此它可能成為黑客最先攻擊的目標。如果相關的解密密鑰和算法被攻克,那么被加密的類也很容易被解密。這種保護方式示意圖見圖2。

圖2-對Class文件進行加密

Part4轉換成本地代碼

將程序轉換成本地代碼也是一種防止反編譯的有效方法。因為本地代碼往往難以被反編譯。開發人員可以選擇將整個應用程序轉換成本地代碼,也可以選擇關鍵模塊轉換。如果僅僅轉換關鍵部分模塊,Java程序在使用這些模塊時,需要使用JNI技術進行調用。

當然,在使用這種技術保護Java程序的同時,也犧牲了Java的跨平臺特性。對于不同的平臺,我們需要維護不同版本的本地代碼,這將加重軟件支持和維護的工作。不過對于一些關鍵的模塊,有時這種方案往往是必要的。

為了保證這些本地代碼不被修改和替代,通常需要對這些代碼進行數字簽名。在使用這些本地代碼之前,往往需要對這些本地代碼進行認證,確保這些代碼沒有被黑客更改。如果簽名檢查通過,則調用相關JNI方法。這種保護方式示意圖見圖3。

圖3-轉換成本地代碼

Part5代碼混淆

代碼混淆是對Class文件進行重新組織和處理,使得處理后的代碼與處理前代碼完成相同的功能(語義)。但是混淆后的代碼很難被[反編譯,即[反編譯后得出的代碼是非常難懂、晦澀的,因此[反編譯人員很難得出程序的真正語義。

從理論上來說,黑客如果有足夠的時間,被混淆的代碼仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是從實際情況來看,由于混淆技術的多元化發展,混淆理論的成熟,經過混淆的Java代碼還是能夠很好地防止[反編譯。下面我們會詳細介紹混淆技術,因為混淆是一種保護Java程序的重要技術。

圖4-代碼混淆示意圖

1.幾種技術的總結

以上幾種技術都有不同的應用環境,各自都有自己的弱點,表1是相關特點的比較。

2.混淆技術介紹

到目前為止,對于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開始編號。

這將對反編譯帶來一定的困難。對于私有函數、局部變量,通常可以改變它們的符號,而不影響程序的運行。但是對于一些接口名稱、公有函數、成員變量,如果有其它外部模塊需要引用這些符號,我們往往需要保留這些名稱,否則外部模塊找不到這些名稱的方法和變量。因此,多數的混淆工具對于符號混淆,都提供了豐富的選項,讓用戶選擇是否、如何進行符號混淆。

數據混淆

圖5-改變數據訪問

數據混淆是對程序使用的數據進行混淆。混淆的方法也有多種,主要可以分為改變數據存儲及編碼(Store and Encode Transform)、改變數據訪問(Access Transform)。

改變數據存儲和編碼可以打亂程序使用的數據存儲方式。例如將一個有10個成員的數組,拆開為10個變量,并且打亂這些變量的名字;將一個兩維數組轉化為一個一維數組等。對于一些復雜的數據結構,我們將打亂它的數據結構,例如用多個類代替一個復雜的類等。

另外一種方式是改變數據訪問。例如訪問數組的下標時,我們可以進行一定的計算,圖5就是一個例子。

在實踐混淆處理中,這兩種方法通常是綜合使用的,在打亂數據存儲的同時,也打亂數據訪問的方式。經過對數據混淆,程序的語義變得復雜了,這樣增大了反編譯的難度。

控制混淆

控制混淆就是對程序的控制流進行混淆,使得程序的控制流更加難以[反編譯,通常控制流的改變需要增加一些額外的計算和控制流,因此在性能上會給程序帶來一定的負面影響。有時,需要在程序的性能和混淆程度之間進行權衡。控制混淆的技術最為復雜,技巧也最多。這些技術可以分為如下幾類:

增加混淆控制通過增加額外的、復雜的控制流,可以將程序原來的語義隱藏起來。例如,對于按次序執行的兩個語句A、B,我們可以增加一個控制條件,以決定B的執行。通過這種方式加大反匯編的難度。但是所有的干擾控制都不應該影響B的執行。圖6就給出三種方式,為這個例子增加混淆控制。

圖6-增加混淆控制的三種方式

控制流重組重組控制流也是重要的混淆方法。例如,程序調用一個方法,在混淆后,可以將該方法代碼嵌入到調用程序當中。反過來,程序中的一段代碼也可以轉變為一個函數調用。另外,對于一個循環的控制流,為可以拆分多個循環的控制流,或者將循環轉化成一個遞歸過程。這種方法最為復雜,研究的人員也非常多。

預防性混淆

這種混淆通常是針對一些專用的反編譯器而設計的,一般來說,這些技術利用反編譯器的弱點或者Bug來設計混淆方案。例如,有些反編譯器對于 Return后面的指令不進行反編譯,而有些混淆方案恰恰將代碼放在Return語句后面。這種混淆的有效性對于不同反編譯器的作用也不太相同的。一個好的混淆工具,通常會綜合使用這些混淆技術。

Part6案例分析

在實踐當中,保護一個大型Java程序經常需要綜合使用這些方法,而不是單一使用某一種方法。這是因為每種方法都有其弱點和應用環境。綜合使用這些方法使得Java程序的保護更加有效。另外,我們經常還需要使用其它的相關安全技術,例如安全認證、數字簽名、PKI等。

本文給出的例子是一個Java應用程序,它是一個SCJP(Sun Certificate Java Programmer)的模擬考試軟件。該應用程序帶有大量的模擬題目,所有的題目都被加密后存儲在文件中。由于它所帶的題庫是該軟件的核心部分,所以關于題庫的存取和訪問就成為非常核心的類。一旦這些相關的類被反編譯,則所有的題庫將被破解。現在,我們來考慮如何保護這些題庫及相關的類。

在這個例子中,我們考慮使用綜合保護技術,其中包括本地代碼和混淆技術。因為該軟件主要發布在Windows上,因此轉換成本地代碼后,僅僅需要維護一個版本的本地代碼。另外,混淆對Java程序也是非常有效的,適用于這種獨立發布的應用系統。

在具體的方案中,我們將程序分為兩個部分,一個是由本地代碼編寫的題庫訪問的模塊,另外一個是由Java開發的其它模塊。這樣可以更高程度地保護題目管理模塊不被[反編譯。對于Java開發的模塊,我們仍然要使用混淆技術。該方案的示意圖參見圖7。

圖7-SCJP保護技術方案圖

對于題目管理模塊,由于程序主要在Windows下使用,所以使用C++開發題庫訪問模塊,并且提供了一定的訪問接口。為了保護題庫訪問的接口,我們還增加了一個初始化接口,用于每次使用題庫訪問接口之前的初始化工作。它的接口主要分為兩類:

初始化接口

在使用題庫模塊之前,我們必須先調用初始化接口。在調用該接口時,客戶端需要提供一個隨機數作為參數。題庫管理模塊和客戶端通過這個隨機數,按一定的算法同時生成相同的SessionKey,用于加密以后輸入和輸出的所有數據。通過這種方式,只有授權(有效)的客戶端才能夠連接正確的連接,生成正確的 SessionKey,用于訪問題庫信息。非法的客戶很難生成正確的SessionKey,因此無法獲得題庫的信息。如果需要建立更高的保密級別,也可以采用雙向認證技術。

數據訪問接口

認證完成之后,客戶端就可以正常的訪問題庫數據。但是,輸入和輸出的數據都是由SessionKey所加密的數據。因此,只有正確的題庫管理模塊才能夠使用題庫管理模塊。圖8時序圖表示了題庫管理模塊和其它部分的交互過程。

圖8-時序圖 

 

責任編輯:龐桂玉 來源: Java知音
相關推薦

2024-09-14 07:00:28

SpringBoot代碼反編譯

2024-09-13 08:57:25

SpringJar項目

2024-11-25 16:29:23

2015-01-15 11:01:43

2016-12-16 09:59:38

2018-05-11 10:16:41

微信小程序反編譯

2017-02-20 13:54:14

Java代碼編譯

2021-05-09 09:57:26

MySQL數據庫索引

2010-09-25 10:32:52

Java字節碼

2025-04-02 07:42:49

2010-09-13 13:40:24

2018-05-11 10:22:05

小程序源碼分析

2021-05-19 15:18:00

2015-07-20 16:37:11

2021-12-10 10:05:27

Java反編譯jar

2011-05-31 14:52:13

Android 反編譯 方法

2011-04-20 10:32:44

java反編譯

2011-05-31 14:18:17

2020-03-17 16:15:01

Python編譯代碼

2021-06-24 07:54:20

vite 靜態處理public
點贊
收藏

51CTO技術棧公眾號

国产高清一区| 在线免费观看亚洲| 欧美国产精品v| 亚洲精品女av网站| 午夜精品三级久久久有码| 国产剧情在线观看一区| 日韩一区二区在线观看视频| 欧美色图另类小说| caopon在线免费视频| aa级大片欧美| 91久久精品国产91性色| 免费观看一区二区三区毛片| 精品久久美女| 亚洲激情视频在线播放| 奇米视频888| 中文字幕资源网在线观看免费| 国产精品理伦片| 久久亚洲综合网| 精品国精品国产自在久不卡| 视频一区二区不卡| 久久久999国产精品| 欧美一区二区三区成人精品| 麻豆久久一区| 欧美午夜理伦三级在线观看| 国产美女作爱全过程免费视频| 国产在线一二三区| 91色婷婷久久久久合中文| 18成人在线| 91禁在线观看| 日本欧美久久久久免费播放网| 97精品一区二区视频在线观看| 91麻豆免费视频网站| 欧美偷拍自拍| 亚洲人在线观看| 久久久久麻豆v国产精华液好用吗| 国产精品一区三区在线观看| 欧美午夜精品久久久| 草草久久久无码国产专区| 丝袜在线视频| 亚洲免费三区一区二区| 亚洲在线欧美| 色网站在线看| 中文字幕免费在线观看视频一区| 欧美成人dvd在线视频| 天天操天天射天天| av激情亚洲男人天堂| 国产99在线免费| 不卡av中文字幕| 国产aⅴ精品一区二区三区色成熟| 国产美女直播视频一区| 中文字幕乱码人妻无码久久| 日韩电影在线免费观看| 国产91精品久久久久久| 成人毛片在线播放| 夜夜夜久久久| 欧美亚洲在线视频| 国产一级做a爱片久久毛片a| 亚洲影视综合| 欧美在线视频一区| 无码人妻一区二区三区免费| 日欧美一区二区| 国产精品久久久久久久久| 无码人妻精品一区二区| 奇米四色…亚洲| 国产欧美韩国高清| 一级做a爱片性色毛片| 国内久久婷婷综合| 91青青草免费在线看| 亚洲av少妇一区二区在线观看| 国产黄色91视频| 国产综合欧美在线看| 香蕉av一区二区三区| 久久精子c满五个校花| 亚洲春色在线| 欧美日韩在线视频免费观看| 精品女同一区二区三区在线播放 | 中文字幕人妻熟女在线| 成人爽a毛片免费啪啪红桃视频| 欧美精品一区二区三区很污很色的| 精品久久久久久无码人妻| 精品精品国产毛片在线看| 日韩精品中文字幕有码专区| 久久久久久国产精品无码| 日韩av大片| 久久99精品久久久久久琪琪| 日产精品久久久久| 日韩有码一区二区三区| 91久久久久久久久| 日韩欧美电影在线观看| 国产精品女主播av| 999一区二区三区| 亚洲伦乱视频| 欧美一区二区人人喊爽| 免费在线观看你懂的| 99久久婷婷| 97碰在线观看| 国产精品女人久久久| 99精品在线观看视频| 亚洲午夜精品一区二区| av电影在线地址| 在线观看中文字幕不卡| 国产成人av片| 成人羞羞视频播放网站| 久久久久久国产精品美女| 中文无码av一区二区三区| 国产成人精品三级| 亚洲第一导航| 在线天堂新版最新版在线8| 在线播放国产精品二区一二区四区 | 欧美性xxxx69| av观看在线| 欧美在线你懂的| 艳妇乳肉豪妇荡乳xxx| 日韩欧美国产精品综合嫩v| 海角国产乱辈乱精品视频| 夜夜嗨aⅴ一区二区三区| 99免费精品视频| 超碰10000| 色999久久久精品人人澡69| 日韩精品在线看| 久久久久噜噜噜亚洲熟女综合| 日本午夜一本久久久综合| 久久精品女人的天堂av| h网站久久久| 欧美三电影在线| 无遮挡aaaaa大片免费看| 午夜久久美女| 亚洲自拍中文字幕| 欧美黄色激情| 欧美性生活一区| 高潮毛片无遮挡| 一区二区久久| 国产精品久久亚洲| 狂野欧美性猛交xxxxx视频| 欧美日韩国产片| 青青青视频在线播放| 久久高清国产| 免费精品视频一区二区三区| 欧美少妇网站| 国产视频久久网| 91视频免费网址| 99免费精品视频| 青青青免费在线| 精品国产一区二区三区不卡蜜臂| 欧美韩日一区二区| 精品人妻一区二区三区换脸明星 | 亚洲一区二区三区加勒比| 成人va天堂| 亚洲日本aⅴ片在线观看香蕉| 亚洲日本视频在线观看| 97久久精品人人爽人人爽蜜臀| 国产免费黄色小视频| 免费福利视频一区| 欧美一级淫片播放口| 久久视频www| 欧美在线播放高清精品| 91成人精品一区二区| 另类欧美日韩国产在线| dy888午夜| 999久久精品| 91av在线看| 国产h在线观看| 欧美人妇做爰xxxⅹ性高电影| 色老板免费视频| 国产精品66部| 亚洲熟妇无码另类久久久| 伊甸园亚洲一区| 国产精品视频一区国模私拍| 日本最新在线视频| 日韩一区二区在线看片| 日韩xxxxxxxxx| 国产视频不卡一区| 亚洲综合激情视频| 亚洲精品女人| 视频二区一区| 精品国产亚洲一区二区三区| 久久久久久网址| 欧美日韩在线精品一区二区三区激情综| 色狠狠色噜噜噜综合网| 亚洲AV成人无码网站天堂久久| 国产精品综合一区二区| 妞干网在线观看视频| 国产真实有声精品录音| 亚洲一区二区日本| jizz内谢中国亚洲jizz| 中文综合在线观看| 刘玥91精选国产在线观看| 欧洲色大大久久| 国产在线视频99| 欧美激情一区二区三区在线| 欧美xxxx黑人| 日韩精品电影在线| 无码人妻精品一区二区蜜桃百度| 岳的好大精品一区二区三区| 成人免费大片黄在线播放| 国产va在线视频| 日韩三级影视基地| 日本免费一区二区三区最新| 91精品国产日韩91久久久久久| av黄色在线播放| 亚洲精品视频一区| 久久久久久国产精品无码| 丁香婷婷深情五月亚洲| 超碰成人在线播放| 美女尤物久久精品| 欧美亚洲色图视频| 天堂美国久久| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 亚洲卡一卡二卡三| 欧美日韩精品欧美日韩精品一| 日韩成人在线免费视频| 中文字幕永久在线不卡| av电影在线不卡| 99久久久免费精品国产一区二区| 中文字幕色网站| 日韩高清一区在线| 伊人成色综合网| 欧美午夜a级限制福利片| 亚洲乱码一区二区三区三上悠亚| 台湾佬综合网| 国产精华一区| 久久av偷拍| 成人欧美在线观看| 久久亚洲精品人成综合网| 日本亚洲欧洲色α| 日本免费一区二区六区| 国产做受69高潮| 亚洲精品天堂| 久久国产精品久久国产精品| 女女色综合影院| 在线播放国产精品| 国产中文字幕在线观看| 亚洲码在线观看| 丝袜视频国产在线播放| 亚洲成人网av| 欧美 日韩 国产 成人 在线 | 婷婷亚洲一区二区三区| 欧美精品一区二区蜜臀亚洲| xxxx国产精品| 精品国内二区三区| www.99视频| 日韩精品中午字幕| 亚洲成人精品女人久久久| 日韩视频在线你懂得| www.久久久久久| 日韩一区二区电影| www.成人免费视频| 亚洲成年人在线播放| 秋霞av鲁丝片一区二区| 亚洲精品av在线播放| 亚州男人的天堂| 亚洲老板91色精品久久| 国产系列在线观看| 社区色欧美激情 | 欧美18一19xxx性| 欧美裸身视频免费观看| 后进极品白嫩翘臀在线播放| 久久久免费高清电视剧观看| 国产调教在线| 日韩av毛片网| 久久av影院| 2019国产精品视频| 国产精品乱战久久久| 国产亚洲情侣一区二区无| 亚欧日韩另类中文欧美| 日韩精品在在线一区二区中文| 欧美www视频在线观看| 成人在线免费观看网址| 黄色成人在线网站| 无码人妻h动漫| 日本va欧美va瓶| 无人码人妻一区二区三区免费| 成人网在线免费视频| 无码熟妇人妻av| 国产精品蜜臀在线观看| 欧美成人三级在线观看| 日韩欧美国产免费播放| 中文字幕网址在线| 欧美tk—视频vk| 国产香蕉在线| 欧美激情国内偷拍| 3d欧美精品动漫xxxx无尽| 91精品久久久久久久久不口人| 91精品啪在线观看国产爱臀| 久久人人九九| 亚洲视频电影在线| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 欧美69wwwcom| 国产午夜福利视频在线观看| 激情欧美日韩一区二区| 亚洲男人在线天堂| 国产精品久久久久影院老司| 国产精品第二十页| 欧美日韩国产经典色站一区二区三区| www国产一区| 中文字幕欧美日韩va免费视频| 欧美78videosex性欧美| 国产成人精品一区二区三区| 日本一区二区乱| 日韩和欧美的一区二区| 在线观看的日韩av| 午夜啪啪小视频| 国产亚洲精久久久久久| 精品无码免费视频| 51精品国自产在线| 日本亚洲欧美| 97精品国产aⅴ7777| 久久久国产精品入口麻豆| 欧美一区二区三区电影在线观看 | 日韩美女久久久| 亚洲va在线观看| 亚洲国产精品999| √天堂8在线网| 国产欧亚日韩视频| 欧美久久综合网| 国产成人在线免费看| 国产成人精品免费| 国产盗摄一区二区三区在线| 欧美少妇一区二区| 欧美成熟毛茸茸| 91av在线影院| 精品视频在线你懂得| 国产精品久久久影院| 久久97超碰色| 亚洲不卡的av| 在线免费精品视频| 欧美捆绑视频| 欧洲成人免费视频| 欧美自拍一区| 日本一道本久久| av中文字幕不卡| 日韩美女一级片| 精品国产精品网麻豆系列| 18视频在线观看网站| 成人免费直播live| 偷拍欧美精品| 中文字幕色网站| 亚洲手机成人高清视频| 97视频免费在线| 久久精品国产96久久久香蕉| 96sao精品免费视频观看| 亚洲免费不卡| 激情综合五月婷婷| 亚洲欧美精品aaaaaa片| 欧美军同video69gay| 黄色在线播放网站| 91免费看片在线| 欧美国产高潮xxxx1819| 成人啪啪18免费游戏链接| 一区二区在线免费| 粉嫩小泬无遮挡久久久久久| 欧美激情按摩在线| 农村少妇一区二区三区四区五区| 国产精品沙发午睡系列| 国产亚洲精品中文字幕| 成人黄色片在线观看| 日韩一区二区三区xxxx| 高清一区二区中文字幕| www.国产二区| av资源站一区| 国产精品xxxxxx| y97精品国产97久久久久久| 国产一区二区三区| 久久久久久www| 国产性色一区二区| 国产又粗又长视频| 欧美精品www| 国产成人精品一区二区免费看京| 成人亚洲视频在线观看| 成人欧美一区二区三区在线播放| wwwav网站| 国产福利视频一区二区| 999精品视频| 性高潮免费视频| 在线精品视频免费播放| 中文字幕有码在线视频| 精品一区日韩成人| 精品一二线国产| 国产污视频在线看| 在线免费观看羞羞视频一区二区| 99久久99九九99九九九| 欧美日韩福利在线| 亚洲国产精品精华液2区45| 99精品视频免费看| 欧美一级大片视频| 99久久99热这里只有精品 | 国产黄色大片网站| 91av在线国产| 一区二区三区四区在线观看国产日韩| 又黄又爽的网站| 欧美日韩一区久久| 日本蜜桃在线观看视频| 一区二区三区一级片| 91丨porny丨中文| 国产精品嫩草影院桃色| 日韩美女视频免费看| 国产精品久久| 午夜影院黄色片| 日韩av在线电影网| 国产精品成人3p一区二区三区|