一種基于代碼注入的隱私信息保護(hù)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及面向移動(dòng)終端的應(yīng)用及權(quán)限管理問題,尤其涉及一種基于代碼注入的隱私信息保護(hù)方法,屬于隱私保護(hù)領(lǐng)域范疇。
【背景技術(shù)】
[0002]2014年,是中國正式接入國際互聯(lián)網(wǎng)第20周年。移動(dòng)通信技術(shù)的快速發(fā)展使得移動(dòng)設(shè)備的數(shù)量呈指數(shù)級(jí)增長,2014年手機(jī)網(wǎng)民大概有5億人。手機(jī)病毒的指數(shù)級(jí)增長無疑是移動(dòng)安全的爆發(fā)點(diǎn),移動(dòng)支付安全成為移動(dòng)互聯(lián)網(wǎng)新的挑戰(zhàn)。新的移動(dòng)應(yīng)用和新功能,如網(wǎng)上銀行、游戲、手機(jī)收費(fèi)等,為用戶帶來方便的同時(shí),也帶來了私人隱私泄露等安全風(fēng)險(xiǎn)。相較于1S的封閉系統(tǒng),靈活開放的Android系統(tǒng)更加容易受到隱私泄露的影響。央視在2013年的3.15晚會(huì)中曝光了安卓系統(tǒng)手機(jī)軟件收集用戶信息造成信息泄露事件。高德地圖、公信衛(wèi)士、藍(lán)盒子科技等軟件公司以及移動(dòng)互聯(lián)網(wǎng)廣告平臺(tái)力美廣告、掌闊移動(dòng)等公司的產(chǎn)品都在央視的調(diào)查中相繼出現(xiàn)。雖然Android本身擁有很完整的權(quán)限控制系統(tǒng),但Google只是把應(yīng)用權(quán)限列出來,卻沒給用戶選擇的機(jī)會(huì),大多數(shù)軟件為了自身開發(fā)方便或其他原因,申請(qǐng)了大量的無關(guān)權(quán)限,用戶并沒有相應(yīng)的權(quán)限去控制軟件申請(qǐng)相關(guān)權(quán)限。從用戶的角度,大部分應(yīng)用在安裝時(shí)申請(qǐng)不必要的、甚至根本與應(yīng)用無關(guān)的權(quán)限。近年來,面對(duì)Android復(fù)雜的應(yīng)用環(huán)境,各種應(yīng)用對(duì)于系統(tǒng)權(quán)限無節(jié)制的索取,莫名的廣告、防不勝防的隱私外泄等問題,這些問題可以說一直存在,毫無改善。
[0003]如今有著很多權(quán)限管理的軟件例如App ops,Xprivacy,App Shield以及手機(jī)管家,但是效果卻不盡如人意,有些通過在后臺(tái)保持相應(yīng)的服務(wù)程序,周期性地將駐留進(jìn)程殺死,以防止隱私泄漏,但此方法對(duì)電池消耗較大,同時(shí)杜絕其他應(yīng)用仍然能夠獲取用戶的隱私信息。有些程序通過修改系統(tǒng)底層,拒絕向未授權(quán)的程序提供隱私API接口,但此種方法會(huì)造成程序的崩潰,用戶體驗(yàn)不佳。
【發(fā)明內(nèi)容】
[0004]為了克服已有隱私保護(hù)方式的適用性較差、操作復(fù)雜、可靠性較差的不足,本發(fā)明提供一種適用性良好、操作方便、可靠性良好的基于代碼注入的隱私信息保護(hù)方法。
[0005]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
[0006]—種基于代碼注入的隱私信息保護(hù)方法,所述方法包括以下步驟:
[0007]101取得安卓系統(tǒng)的最高root權(quán)限;
[0008]102通過文件管理器將安卓系統(tǒng)的zygote程序進(jìn)行替換,通過系統(tǒng)調(diào)用fork()函數(shù)增加新的進(jìn)程,使得在生成新進(jìn)程時(shí)能對(duì)新進(jìn)程進(jìn)行反射攔截,為特定的函數(shù)調(diào)用注入新的代碼;
[0009]103在替換掉zygote程序后將系統(tǒng)反root;
[0010]104檢測(cè)應(yīng)用提出的特定請(qǐng)求,其中,特定請(qǐng)求的內(nèi)容涉及賬戶信息讀取、瀏覽器調(diào)用、日歷內(nèi)容讀取、電話記錄讀取、聯(lián)系人信息讀取與修改、郵件讀取、位置信息讀取以及MAC或頂EI信息讀??;
[0011]105采用反射的方式攔截請(qǐng)求,對(duì)請(qǐng)求中需要欺騙的程序在程序啟動(dòng)時(shí)為特定的權(quán)限訪問添加基于Xposed框架的鉤子函數(shù):
[0012]public Hook ( String restrict1nName,String methodName,Stringpermiss1ns,int sdk,String replaces);
[0013]其中,restrict1nName為限制訪問類別、methodName為待替換函數(shù)名、permiss1ns為能否訪問的權(quán)限清單、sdk為標(biāo)識(shí)sdk版本、replaces為替換后的函數(shù)名;
[0014]106在應(yīng)用程序運(yùn)行時(shí),在隱私函數(shù)訪問前對(duì)讀入?yún)?shù)數(shù)據(jù)進(jìn)行處理,過程如下:首先對(duì)步驟(4)中隱私項(xiàng)目數(shù)據(jù)進(jìn)行處理,返回能夠進(jìn)行偽造的方法,防止直接透露相應(yīng)數(shù)據(jù),并將原始數(shù)據(jù)和虛假參數(shù)記錄于系統(tǒng)中,將修改后的參數(shù)數(shù)據(jù)傳遞給系統(tǒng)進(jìn)行調(diào)用;
[0015]107函數(shù)結(jié)束后對(duì)獲取的真實(shí)返回值按用戶預(yù)先設(shè)置的虛假值進(jìn)行修改、欺騙。
[0016]進(jìn)一步,所述步驟107中,在執(zhí)行的函數(shù)結(jié)束之后將相應(yīng)的返回值進(jìn)行修改,并將修改后的數(shù)據(jù)提供給調(diào)用程序,從而隱藏真實(shí)值,達(dá)到隱私信息保護(hù)的目的。
[0017]本發(fā)明的有益效果主要表現(xiàn)在:(I)具有普適性,能針對(duì)用戶的需求對(duì)權(quán)限進(jìn)行管理。主要涉及隱私相關(guān)的權(quán)限,類型非常詳細(xì),如賬戶信息讀取、瀏覽器調(diào)用、日歷內(nèi)容讀取、電話記錄讀取、聯(lián)系人信息讀取與修改、郵件讀取、位置信息讀取以及MAC或頂EI信息讀取。同時(shí)借助Xposed可以在不修改APK的情況下影響程序運(yùn)行(修改系統(tǒng))的框架服務(wù),可以輕松地對(duì)Android系統(tǒng)進(jìn)行深度優(yōu)化。
[0018](2)簡單易操作??梢酝ㄟ^生成包括序列號(hào)、MAC地址、頂EI以及Android ID的隨機(jī)數(shù)值,來阻止應(yīng)用用戶追蹤SDK獲取能唯一識(shí)別設(shè)備的標(biāo)識(shí)符(MEKAndroid ID、MAC等),從而阻止了應(yīng)用程序不能獲取任何非必要的信息。
[0019](3)保證大量未授權(quán)軟件正常運(yùn)行的同時(shí),將重要應(yīng)用和隱私數(shù)據(jù)進(jìn)行隔離。在工業(yè)應(yīng)用時(shí)能夠保證用戶正常運(yùn)行所有應(yīng)用,但又保證用戶的隱私數(shù)據(jù)的安全與可靠。
[0020]總之,該方法能夠攔截未知的用戶軟件對(duì)關(guān)鍵隱私數(shù)據(jù)的訪問請(qǐng)求,并在用戶軟件無察覺的情況下更改請(qǐng)求數(shù)據(jù),有效地確保了智能手機(jī)用戶使用第三方應(yīng)用軟件的安全性。
【附圖說明】
[0021]圖1是一種基于代碼注入的隱私信息保護(hù)方法的流程圖。
【具體實(shí)施方式】
[0022]下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述。
[0023]參照?qǐng)D1,一種基于代碼注入的隱私信息保護(hù)方法,包括以下步驟:
[0024]101取得安卓系統(tǒng)的最高root權(quán)限;
[0025]102通過文件管理器將安卓系統(tǒng)的zygote程序(參考文獻(xiàn)1:《Android系統(tǒng)進(jìn)程Zygote啟動(dòng)過程的源代碼分析》,文獻(xiàn)來源為:http: //blog.csdn.net/luoshengyang/article/details/6768304)進(jìn)行替換,通過系統(tǒng)調(diào)用fork()函數(shù)(參考文獻(xiàn)2: ((Fork(system call)》,文南犬來源為:https://en.wikipedia.0rg/wiki/Fork_(system_call))創(chuàng)建一個(gè)新進(jìn)程,使得在生成新進(jìn)程時(shí)能對(duì)新進(jìn)程進(jìn)行反射攔截,為特定的函數(shù)調(diào)用注入新的代碼;
[0026]103在替換掉zygote程序后將系統(tǒng)反root ;
[0027]104檢測(cè)應(yīng)用提出的檢測(cè)網(wǎng)絡(luò)地址請(qǐng)求,如獲取NetworkInfo;
[0028]105通過反射的方式攔截請(qǐng)求,具體實(shí)施方法如下:獲取NetworkInf O請(qǐng)求會(huì)自動(dòng)調(diào)用系統(tǒng)函數(shù)getNetworkInfo(),其訪問權(quán)限包括 android.permiss1n.ACCESS_NETWORK_STATE和android.permiss1n.ACCESS_WIFI_STATE,因此,需對(duì)該函數(shù)在程序啟動(dòng)時(shí)為特定的權(quán)限訪問添加基于Xposed框架的鉤子函數(shù)(參考文獻(xiàn)3:《Android Hook神器:XPosed入門與登陸劫持演示》,文獻(xiàn)來源為:http://blog.csdn.net/d j 0379/article/de tails/47755325):
[0029]public Hook ( String restrict1nName,String methodName,Stringpermiss1ns,int sdk,String replaces);
[0030]其中,restrict1nName為限制訪問類別、methodName為待替換函數(shù)名、permiss1ns為能否訪問的權(quán)限清單、sdk為標(biāo)識(shí)sdk版本、replaces為替換后的函數(shù)名。鉤子函數(shù)能實(shí)現(xiàn)對(duì)方法getNetworklnfoO的攔截,使得程序在訪問隱私數(shù)據(jù)之前和之后能夠?qū)υL問參數(shù)和返回值進(jìn)行修改;
[0031]106在待攔截的應(yīng)用程序運(yùn)行時(shí),在隱私函數(shù)getNetworkInfo()訪問前對(duì)讀入?yún)?shù)數(shù)據(jù)進(jìn)行處理,處理方法如下:首先對(duì)NetworkInf ο數(shù)據(jù)進(jìn)行處理,返回能夠進(jìn)行偽造的方法,此時(shí)原始數(shù)據(jù)已被替換,可防止直接透露隱私數(shù)據(jù),然后將原始數(shù)據(jù)NetworkInfo和虛假參數(shù)XNetworkInfο記錄于系統(tǒng)中,將修改后的參數(shù)數(shù)據(jù)XNetworkInfο傳遞給系統(tǒng)進(jìn)行調(diào)用;
[0032]107函數(shù)結(jié)束后對(duì)獲取的真實(shí)返回值NetworkInf ο按用戶預(yù)先設(shè)置的虛假值XNetworkInfo進(jìn)行修改、欺騙。操作方法如下:在執(zhí)行的函數(shù)結(jié)束之后將相應(yīng)的返回值進(jìn)行修改,并將修改后的數(shù)據(jù)XNetworkInfo提供給調(diào)用程序,從而隱藏真實(shí)值,達(dá)到隱私信息保護(hù)的目的。
[0033]當(dāng)請(qǐng)求為獲取NetworkInfo的詳細(xì)狀態(tài)時(shí),修改后的返回值為詳細(xì)信息的未連接狀態(tài)NetworkInfο.DetailedState.DISCONNECTED ;當(dāng)請(qǐng)求為獲取NetworkInfο的附加信息時(shí),修改后的返回值為對(duì)方的UID;當(dāng)請(qǐng)求為獲取NetworkInfο的狀態(tài)時(shí),修改后的返回值為未連接狀態(tài)NetworkInfο.State.DISCONNECTED;當(dāng)請(qǐng)求為判斷NetworkInfο是否已經(jīng)連接或判斷NetworkInf ο是否已經(jīng)連接還是正在連接時(shí),修改后的返回值一律為否。
[0034]本實(shí)施例為系統(tǒng)級(jí)的解決方案,無需用戶安裝和獲取root權(quán)限,在保證未授權(quán)軟件的正常運(yùn)行時(shí)對(duì)隱私數(shù)據(jù)進(jìn)行修改、欺騙。
【主權(quán)項(xiàng)】
1.一種基于代碼注入的隱私信息保護(hù)方法,其特征在于:所述方法包括以下步驟: 101取得安卓系統(tǒng)的最高root權(quán)限; 102通過文件管理器將安卓系統(tǒng)的zygote程序進(jìn)行替換,通過系統(tǒng)調(diào)用fork()函數(shù)增加新的進(jìn)程,使得在生成新進(jìn)程時(shí)能對(duì)新進(jìn)程進(jìn)行反射攔截,為特定的函數(shù)調(diào)用注入新的代碼; 103在替換掉zygote程序后將系統(tǒng)反root ; 104檢測(cè)應(yīng)用提出的特定請(qǐng)求,其中,特定請(qǐng)求的內(nèi)容涉及賬戶信息讀取、瀏覽器調(diào)用、日歷內(nèi)容讀取、電話記錄讀取、聯(lián)系人信息讀取與修改、郵件讀取、位置信息讀取以及MAC或MEI信息讀取; 105采用反射的方式攔截請(qǐng)求,對(duì)請(qǐng)求中需要欺騙的程序在程序啟動(dòng)時(shí)為特定的權(quán)限訪問添加基于Xposed框架的鉤子函數(shù): public Hook(String restrict1nName,String methodName,String permiss1ns,int sdk,String replaces); 其中,restrict1nName為限制訪問類別、methodName為待替換函數(shù)名、permiss1ns為能否訪問的權(quán)限清單、s dk為標(biāo)識(shí)s dk版本、replaces為替換后的函數(shù)名; 106在待攔截的應(yīng)用程序運(yùn)行時(shí),在隱私函數(shù)訪問前對(duì)讀入?yún)?shù)數(shù)據(jù)進(jìn)行處理,過程如下:首先對(duì)步驟(4)中隱私項(xiàng)目數(shù)據(jù)進(jìn)行處理,返回能夠進(jìn)行偽造的方法,防止直接透露相應(yīng)數(shù)據(jù),并將原始數(shù)據(jù)和虛假參數(shù)記錄于系統(tǒng)中,將修改后的參數(shù)數(shù)據(jù)傳遞給系統(tǒng)進(jìn)行調(diào)用; 107函數(shù)結(jié)束后對(duì)獲取的真實(shí)返回值按用戶預(yù)先設(shè)置的虛假值進(jìn)行修改、欺騙。2.如權(quán)利要求1所述的一種基于代碼注入的隱私信息保護(hù)方法,其特征在于:所述步驟107中,在執(zhí)行的函數(shù)結(jié)束之后將相應(yīng)的返回值進(jìn)行修改,并將修改后的數(shù)據(jù)提供給調(diào)用程序,從而隱藏真實(shí)值,達(dá)到隱私信息保護(hù)的目的。
【專利摘要】一種基于代碼注入的隱私信息保護(hù)方法,包括以下步驟:(1)取得安卓系統(tǒng)的最高root權(quán)限;(2)通過文件管理器將安卓系統(tǒng)的zygote程序進(jìn)行替換,通過系統(tǒng)調(diào)用fork()函數(shù)增加新的進(jìn)程;(3)將系統(tǒng)反root;(4)檢測(cè)應(yīng)用提出的特定請(qǐng)求;(5)采用反射的方式攔截請(qǐng)求,對(duì)請(qǐng)求中需要欺騙的程序在程序啟動(dòng)時(shí)為特定的權(quán)限訪問添加基于Xposed框架的鉤子函數(shù);(6)在應(yīng)用程序運(yùn)行時(shí),在隱私函數(shù)訪問前對(duì)讀入?yún)?shù)數(shù)據(jù)進(jìn)行處理;(7)函數(shù)結(jié)束后對(duì)獲取的真實(shí)返回值進(jìn)行修改、欺騙,從而達(dá)到隱私信息保護(hù)的目的。本發(fā)明適用性良好、操作方便、可靠性良好。
【IPC分類】G06F21/62
【公開號(hào)】CN105653979
【申請(qǐng)?zhí)枴?br>【發(fā)明人】溫曉岳, 樊錦祥, 王毅, 柳展, 陳才君
【申請(qǐng)人】銀江股份有限公司
【公開日】2016年6月8日
【申請(qǐng)日】2015年12月29日