[發(fā)明專利]智能終端android系統(tǒng)中防止應(yīng)用程序反編譯的方法在審
| 申請?zhí)枺?/td> | 201310630537.1 | 申請日: | 2013-12-02 |
| 公開(公告)號: | CN103745141A | 公開(公告)日: | 2014-04-23 |
| 發(fā)明(設(shè)計)人: | 金果 | 申請(專利權(quán))人: | 上海斐訊數(shù)據(jù)通信技術(shù)有限公司 |
| 主分類號: | G06F21/14 | 分類號: | G06F21/14 |
| 代理公司: | 上海信好專利代理事務(wù)所(普通合伙) 31249 | 代理人: | 張妍;張靜潔 |
| 地址: | 201620 上海市松*** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 智能 終端 android 系統(tǒng) 防止 應(yīng)用程序 反編譯 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及一種智能終端android(安卓)系統(tǒng)中防止應(yīng)用程序反編譯的方法。
背景技術(shù)
目前android程序如火如荼,在世界各地非常繁榮,andorid開發(fā)的程序采用java語言開發(fā),由于其開源性,開發(fā)商免交了高的專利費用,可以更好的融合世界上先進(jìn)芯片廠商,軟件廠商參與其中。由于android的應(yīng)用程序上層是使用java語言編寫的,為了繞過甲骨文公司的oracle(java)虛擬機(jī)授權(quán),Google公司設(shè)計了用于Android平臺的dalvik虛擬機(jī),利用dalvik虛擬機(jī),Java代碼經(jīng)過dx(dx是將java的classes文件編譯為字節(jié)碼dex文件的工具)工具轉(zhuǎn)化編譯后,變成Dex文件,Dex文件的指令碼就是Dalvik虛擬機(jī)專有的一套指令集,專門為嵌入式系統(tǒng)優(yōu)化過,相比標(biāo)準(zhǔn)java的.class文件,它體積小,運行效率高。
現(xiàn)有的Java是一種跨平臺的、解釋型語言。Java編譯工具將Java源代碼被編譯成為Java字節(jié)碼文件,由Java虛擬機(jī)負(fù)責(zé)對Java字節(jié)碼文件進(jìn)行解釋執(zhí)行。與本地目標(biāo)代碼不同,Java字節(jié)碼文件中仍然保留了方法名稱、變量名稱,并且通過這些名稱來訪問變量和方法,這些符號往往帶有許多語義信息。因此,對Java字節(jié)碼文件進(jìn)行反編譯就顯得比較容易。有許多Java的反編譯工具都能夠從Java字節(jié)碼文件生成高質(zhì)量的源代碼。有很多針對java語言編寫的程序采用反編譯等一些方法,就能獲得相應(yīng)應(yīng)用程序的代碼,這樣就導(dǎo)致軟件的發(fā)明專利情況,以及軟件的知識產(chǎn)權(quán)情況得不到保護(hù)。
為阻止對Java字節(jié)碼文件進(jìn)行反編譯,目前市場上相近的方案有:
1、對要發(fā)布的Java字節(jié)碼文件進(jìn)行加密;
2、用Java虛擬機(jī)工具接口監(jiān)聽其它初始化事件;
3、為Java虛擬機(jī)初始化事件指定Hook函數(shù);
4、Java虛擬機(jī)初始化完成時自動調(diào)用Hook函數(shù),并在的Hook函數(shù)中使用Java本地接口將Java虛擬機(jī)在生成類對象時調(diào)用的函數(shù)注冊為自定義的代理函數(shù);
5、Java虛擬機(jī)在生成某個類對象時調(diào)用自定義的代理函數(shù),在自定義的代理函數(shù)中對加密過的Java字節(jié)碼文件進(jìn)行解密處理;
6、將解密后的Java字節(jié)碼文件生成相應(yīng)的類對象后返回給Java虛擬機(jī)。
上述技術(shù)主要是針對java平臺針對java標(biāo)準(zhǔn)虛擬機(jī)(JVM)實現(xiàn)的技術(shù),但是在智能終端android移動研究領(lǐng)域,有著明顯的不足,畢竟android開發(fā)的應(yīng)用程序,雖然使用java語言書寫的,但是其運行環(huán)境不是傳統(tǒng)意義的java虛擬機(jī)(JVM),而是dalvik虛擬機(jī)設(shè)備,有著自己的堆棧與編譯環(huán)境。
目前市場上,已有的java技術(shù)主要從如下方式進(jìn)行防止java程序進(jìn)行反編譯:
1、隔離程序:將關(guān)鍵的代碼放服務(wù)器,通過遠(yuǎn)程訪問方式獲得服務(wù),這樣就無法破譯程序代碼,但這種方法必須依賴于網(wǎng)絡(luò),并且網(wǎng)絡(luò)方式獲取也具有一定不安全性,并且成本較其他方式比較高。
2、代碼混淆:主要是通過將定義的類、變量、方法和包的名字改為無意義的字符串、使用非法的字符代替變量符號和在軟件中添加一些無關(guān)的指令或永遠(yuǎn)執(zhí)行不到的指令等手段來增加反編譯和對反編譯后源代碼閱讀的難度。但這種方法并不能真正阻止反編譯,而且混淆都有一定規(guī)律可尋。
3、轉(zhuǎn)換本地代碼:即將Java程序像C/C++程序一樣編譯成本機(jī)可執(zhí)行的二進(jìn)制代碼。但是這樣做使得Java程序失去其跨平臺的特性,而且這種技術(shù)目前并不十分成熟,因此不適用于大型應(yīng)用程序。
4、自定義類加載器:是指首先將Java字節(jié)碼文件進(jìn)行加密處理,然后自已編寫一個Java類裝載器在Java字節(jié)碼文件裝載時再進(jìn)行解密處理。這種方法的缺點在于雖然經(jīng)過加密的Java字節(jié)碼文件無法被反編譯,但自定義的類加載器本身卻不能防止被反編譯。因此,加密過的Java字節(jié)碼文件仍然是不安全的。
發(fā)明內(nèi)容
本發(fā)明提供一種智能終端android系統(tǒng)中防止應(yīng)用程序反編譯的方法,在android系統(tǒng)中引入加密算法,防止軟件程序被反編譯,能極大的提高android程序的安全性。
為了達(dá)到上述目的,本發(fā)明提供一種智能終端android系統(tǒng)中防止應(yīng)用程序反編譯的方法,該方法包含以下步驟:
步驟1、對android程序進(jìn)行加密;
步驟2、將經(jīng)過加密后的android程序加載到dalvik虛擬機(jī);
步驟3、對加載后的android程序進(jìn)行解密。
所述的步驟1包含以下步驟:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于上海斐訊數(shù)據(jù)通信技術(shù)有限公司,未經(jīng)上海斐訊數(shù)據(jù)通信技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310630537.1/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F21-00 防止未授權(quán)行為的保護(hù)計算機(jī)或計算機(jī)系統(tǒng)的安全裝置
G06F21-02 .通過保護(hù)計算機(jī)的特定內(nèi)部部件
G06F21-04 .通過保護(hù)特定的外圍設(shè)備,如鍵盤或顯示器
G06F21-06 .通過感知越權(quán)操作或外圍侵?jǐn)_
G06F21-20 .通過限制訪問計算機(jī)系統(tǒng)或計算機(jī)網(wǎng)絡(luò)中的節(jié)點
G06F21-22 .通過限制訪問或處理程序或過程
- 一種Android設(shè)備之間遠(yuǎn)程桌面控制的方法
- 一種Android程序的執(zhí)行路徑的還原方法
- 基于ANCS協(xié)議兼容多平臺的通知消息獲取方法
- 基于字節(jié)碼插樁的Android程序監(jiān)控系統(tǒng)及方法
- 一種減少Android設(shè)備功耗的優(yōu)化方法及裝置
- 一種縮短無屏Android設(shè)備開機(jī)啟動時間的設(shè)置方法
- 一種基于Android雙系統(tǒng)的系統(tǒng)間通知同步方法
- 基于移動操作系統(tǒng)的Android兼容層實現(xiàn)方法和系統(tǒng)
- 一種Android智能設(shè)備APK安全管控方法
- 一種應(yīng)用程序開發(fā)中創(chuàng)建Android庫模塊依賴關(guān)系的方法及裝置





