[發(fā)明專利]安卓平臺(tái)上可執(zhí)行程序的保護(hù)方法有效
| 申請(qǐng)?zhí)枺?/td> | 201710257478.6 | 申請(qǐng)日: | 2017-04-19 |
| 公開(kāi)(公告)號(hào): | CN108733988B | 公開(kāi)(公告)日: | 2023-01-24 |
| 發(fā)明(設(shè)計(jì))人: | 闞志剛;陳彪;王衛(wèi)民;朱丹;程顯龍;盧佐華 | 申請(qǐng)(專利權(quán))人: | 北京梆梆安全科技有限公司 |
| 主分類號(hào): | G06F21/14 | 分類號(hào): | G06F21/14 |
| 代理公司: | 北京國(guó)昊天誠(chéng)知識(shí)產(chǎn)權(quán)代理有限公司 11315 | 代理人: | 李瀟 |
| 地址: | 100083 北京市海淀區(qū)學(xué)*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 平臺(tái) 可執(zhí)行 程序 保護(hù) 方法 | ||
本申請(qǐng)?zhí)峁┮环N安卓平臺(tái)上可執(zhí)行程序的保護(hù)方法,包括:確定APK文件包中的classes.dex文件中要保護(hù)的函數(shù),修改后形成新的classes.dex文件;編寫函數(shù)的C/C++語(yǔ)言實(shí)現(xiàn);將函數(shù)的C/C++語(yǔ)言實(shí)現(xiàn)編譯為動(dòng)態(tài)庫(kù);在APK文件包中,用新的classes.dex文件替換原classes.dex文件,將動(dòng)態(tài)庫(kù)加入APK文件包。本發(fā)明不但加大了逆向分析的難度,而且極大增加了還原代碼的難度。
技術(shù)領(lǐng)域
本發(fā)明涉及軟件處理技術(shù),更具體地,涉及一種用于安卓平臺(tái)的可執(zhí)行程序的保護(hù)方法。
背景技術(shù)
Android平臺(tái)上采用Java語(yǔ)言進(jìn)行開(kāi)發(fā),Java語(yǔ)言是一種跨平臺(tái)的,解釋性的語(yǔ)言,Java的源代碼編譯為一種“字節(jié)碼”形式的中間代碼,這種字節(jié)碼保留了很多源代碼的信息,例如方法名,變量名等,從而Java字節(jié)碼的反編譯變得非常容易。為了保護(hù)Android程序的應(yīng)用版權(quán)等,需要對(duì)應(yīng)用程序進(jìn)行保護(hù)。
1.Android平臺(tái)基本介紹
APK是android平臺(tái)上的可執(zhí)行程序,其本質(zhì)是一個(gè)zip文件,主要包括以下幾類文件:classes.dex、so文件、AndroidManifest.xml、其他資源文件(圖片、xml等)
(1)classes.dex是Dalvik的可執(zhí)行程序,該文件里面存放了所有的java源代碼經(jīng)過(guò)編譯后的字節(jié)碼。也是本發(fā)明要保護(hù)的對(duì)象。
Dalvik是Google公司自己設(shè)計(jì)用于Android平臺(tái)的虛擬機(jī)。Dalvik虛擬機(jī)是Google等廠商合作開(kāi)發(fā)的Android移動(dòng)設(shè)備平臺(tái)的核心組成部分之一。它可以支持已轉(zhuǎn)換為.dex(即Dalvik Executable)格式的Java應(yīng)用程序的運(yùn)行,.dex格式是專為Dalvik設(shè)計(jì)的一種壓縮格式,適合內(nèi)存和處理器速度有限的系統(tǒng)。Dalvik經(jīng)過(guò)優(yōu)化,允許在有限的內(nèi)存中同時(shí)運(yùn)行多個(gè)虛擬機(jī)的實(shí)例,并且每一個(gè)Dalvik應(yīng)用作為一個(gè)獨(dú)立的Linux進(jìn)程執(zhí)行。獨(dú)立的進(jìn)程可以防止在虛擬機(jī)崩潰的時(shí)候所有程序都被關(guān)閉。
Java源代碼編譯為dex文件的過(guò)程如圖1所示。在Android平臺(tái)上,Java的源代碼通過(guò)Javac編譯器先編譯為.class文件(標(biāo)準(zhǔn)的Java字節(jié)碼),然后利用Android提供的工具dx將多個(gè)class文件轉(zhuǎn)換為一個(gè)dex文件
Classes.dex的格式如圖2所示,主要由幾個(gè)部分組成----頭部(Dex Header)、各類表(Table)、數(shù)據(jù)段(Data Section)等。頭部包含了每個(gè)區(qū)域的大小及偏移信息,各類表包含各種數(shù)據(jù),如字符串表、類名表、函數(shù)表等等,字節(jié)碼里面通過(guò)表的索引來(lái)進(jìn)行編碼。
數(shù)據(jù)段包括了字節(jié)碼等信息,例如以下語(yǔ)句
100b64:1a01 9408|0002:const-string v1,Hello world//string@0894
1a01 9408是真正的Raw的字節(jié)碼,1a為OPCode,表示const-string,01代表寄存器v1,9408代表在字符串表中的第894項(xiàng)
(2)So文件。Android平臺(tái)除了Java平臺(tái)外,還允許使用C/C++語(yǔ)言進(jìn)行混合編程。同時(shí)提供了JNI接口(Java native interface)。JNI接口提供了一系列的接口允許從C/C++語(yǔ)言中操作Java語(yǔ)言中的對(duì)象,如設(shè)置某個(gè)Java對(duì)象的域(Field)、調(diào)用Java中的函數(shù)(method)等。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京梆梆安全科技有限公司,未經(jīng)北京梆梆安全科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710257478.6/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F21-00 防止未授權(quán)行為的保護(hù)計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)的安全裝置
G06F21-02 .通過(guò)保護(hù)計(jì)算機(jī)的特定內(nèi)部部件
G06F21-04 .通過(guò)保護(hù)特定的外圍設(shè)備,如鍵盤或顯示器
G06F21-06 .通過(guò)感知越權(quán)操作或外圍侵?jǐn)_
G06F21-20 .通過(guò)限制訪問(wèn)計(jì)算機(jī)系統(tǒng)或計(jì)算機(jī)網(wǎng)絡(luò)中的節(jié)點(diǎn)
G06F21-22 .通過(guò)限制訪問(wèn)或處理程序或過(guò)程
- 從多形態(tài)可執(zhí)行程序到多形態(tài)操作系統(tǒng)
- 操作可執(zhí)行非易失性存儲(chǔ)器中的部分可執(zhí)行程序的方法
- 一種實(shí)現(xiàn)編譯器錯(cuò)誤的自動(dòng)定位方法和裝置
- 參數(shù)傳遞方法、單板加載器、單板和單板仿真器
- 一種可執(zhí)行模塊的提供、加載方法及終端
- 調(diào)用重定向機(jī)制構(gòu)建Unix可信平臺(tái)的方法
- 用于運(yùn)行可執(zhí)行代碼的方法、處理模塊及系統(tǒng)
- 用于系統(tǒng)適配的動(dòng)態(tài)程序評(píng)估系統(tǒng)和方法
- 一種用于管控可執(zhí)行程序的方法和裝置
- 一種安全運(yùn)行可執(zhí)行文件的方法及系統(tǒng)
- 功能限制程序、安裝程序生成程序和程序存儲(chǔ)介質(zhì)
- 程序生成系統(tǒng)、程序生成程序和程序生成模塊
- 程序生成系統(tǒng)、程序生成程序和程序生成模塊
- 程序創(chuàng)建裝置,程序創(chuàng)建方法和程序
- 程序生成裝置、程序生產(chǎn)方法及程序
- 程序生成裝置、程序生成程序以及程序生成方法
- 程序生成裝置、程序生成方法及程序生成程序
- 程序開(kāi)發(fā)支持裝置、程序開(kāi)發(fā)支持方法以及存儲(chǔ)介質(zhì)
- 程序執(zhí)行輔助裝置、程序執(zhí)行輔助方法及程序執(zhí)行輔助程序
- 程序?qū)φ昭b置、程序?qū)φ辗椒俺绦驅(qū)φ粘绦?/a>





