一種防止截獲系統(tǒng)接口的系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息安全技術(shù)領(lǐng)域,尤其涉及一種防止Xposed開(kāi)源框架動(dòng)態(tài)截獲系統(tǒng)接口的系統(tǒng)及方法。
【背景技術(shù)】
[0002]在Android系統(tǒng)快速發(fā)展的同時(shí),用戶的使用水平也不斷的增強(qiáng),由于Android有用戶權(quán)限之分,所以很多用戶通過(guò)軟件截獲獲取系統(tǒng)的Root權(quán)限稱為超級(jí)用戶(Root用戶)。然而在獲取Root權(quán)限的同時(shí)也讓一些惡意軟件有機(jī)可乘。通過(guò)Root權(quán)限截獲系統(tǒng)接口,以獲取用戶在日常行為中的一些隱私信息,對(duì)用戶的隱私造成危害。例如通過(guò)Xposed開(kāi)源替換原系統(tǒng)中的/system/bin/app_process文件,并且通過(guò)注冊(cè)鉤子函數(shù)來(lái)勾取系統(tǒng)接口進(jìn)而實(shí)現(xiàn)系統(tǒng)接口的截獲。
【發(fā)明內(nèi)容】
[0003]針對(duì)現(xiàn)有的Android系統(tǒng)存在的上述問(wèn)題,現(xiàn)提供一種旨在實(shí)現(xiàn)防止惡意程序截獲系統(tǒng)接口的防止截獲系統(tǒng)接口的系統(tǒng)及方法。
[0004]具體技術(shù)方案如下:
[0005]—種防止截獲系統(tǒng)接口的系統(tǒng),應(yīng)用于Android中,包括:
[0006]—獲取單元,用以獲取用戶發(fā)送的執(zhí)行指令;
[0007]—判斷單元,連接所述獲取單元,用以判斷所述用戶是否為超級(jí)用戶,以獲取判斷結(jié)果;
[0008]—識(shí)別單元,分別連接所述獲取單元和所述判斷單元,提供一預(yù)設(shè)條件,所述識(shí)別單元用以根據(jù)所述判斷結(jié)果將所述執(zhí)行指令與所述預(yù)設(shè)條件進(jìn)行匹配,以獲取匹配結(jié)果;
[0009]—處理單元,分別連接所述判斷單元和所述識(shí)別單元,用以根據(jù)所述判斷結(jié)果和/或所述匹配結(jié)果,執(zhí)行所述執(zhí)行指令;或
[0010]根據(jù)所述匹配結(jié)果停止執(zhí)行所述執(zhí)行指令。
[0011 ] 優(yōu)選的,所述執(zhí)行指令包括執(zhí)行主體和復(fù)數(shù)個(gè)參數(shù);
[0012]所述識(shí)別單元將所述執(zhí)行指令的所述執(zhí)行主體與預(yù)設(shè)主體進(jìn)行匹配;
[0013]當(dāng)不匹配時(shí),所述處理單元執(zhí)行所述執(zhí)行指令;
[0014]當(dāng)匹配時(shí),所述識(shí)別單元將所述復(fù)數(shù)個(gè)參數(shù)依次與預(yù)設(shè)參數(shù)進(jìn)行匹配;
[0015]當(dāng)所述復(fù)數(shù)個(gè)參數(shù)均與所述預(yù)設(shè)參數(shù)不匹配時(shí),所述處理單元執(zhí)行所述執(zhí)行指令;
[0016]當(dāng)所述參數(shù)與所述預(yù)設(shè)參數(shù)匹配時(shí),所述處理單元停止執(zhí)行所述執(zhí)行指令。
[0017]優(yōu)選的,還包括:
[0018]—存儲(chǔ)單元,分別連接所述獲取單元和所述識(shí)別單元,用以將所述復(fù)數(shù)個(gè)參數(shù)存入一預(yù)設(shè)的字符串?dāng)?shù)組中;
[0019]當(dāng)所述執(zhí)行主體與預(yù)設(shè)主體匹配時(shí),所述識(shí)別單元將所述存儲(chǔ)單元中的所述字符串?dāng)?shù)組中的所述復(fù)數(shù)個(gè)參數(shù)依次與所述預(yù)設(shè)參數(shù)進(jìn)行匹配,以獲取每個(gè)所述匹配結(jié)果;
[0020]當(dāng)所述匹配結(jié)果為匹配時(shí),所述處理單元停止執(zhí)行所述執(zhí)行指令;
[0021]當(dāng)所述復(fù)數(shù)個(gè)參數(shù)的匹配結(jié)果均為不匹配時(shí),所述處理單元執(zhí)行所述執(zhí)行指令。
[0022]優(yōu)選的,所述預(yù)設(shè)主體為拷貝命令。
[0023]優(yōu)選的,所述預(yù)設(shè)參數(shù)為app-process。
[0024]—種防止截獲系統(tǒng)接口的方法,應(yīng)用于Android中,包括下述步驟:
[0025]S1.獲取用戶發(fā)送的執(zhí)行指令;
[0026]S2.判斷所述用戶是否為超級(jí)用戶,若是,執(zhí)行步驟S3 ;若否,執(zhí)行步驟S4 ;
[0027]S3.將所述執(zhí)行指令與所述條件進(jìn)行匹配,若匹配,執(zhí)行步驟S5 ;若不匹配,執(zhí)行步驟S4 ;
[0028]S4.執(zhí)行所述執(zhí)行指令;
[0029]S5.停止執(zhí)行所述執(zhí)行指令。
[0030]優(yōu)選的,所述執(zhí)行指令包括執(zhí)行主體和復(fù)數(shù)個(gè)參數(shù),所述步驟S3包括:
[0031]S31.將所述執(zhí)行指令的所述執(zhí)行主體與預(yù)設(shè)主體進(jìn)行匹配,若匹配,執(zhí)行所述步驟S4 ;若不匹配,執(zhí)行步驟S32 ;
[0032]S32.將所述復(fù)數(shù)個(gè)參數(shù)依次與預(yù)設(shè)參數(shù)進(jìn)行匹配;
[0033]當(dāng)所述復(fù)數(shù)個(gè)參數(shù)均與所述預(yù)設(shè)參數(shù)不匹配時(shí),執(zhí)行所述步驟S4 ;
[0034]當(dāng)所述參數(shù)與所述預(yù)設(shè)參數(shù)匹配時(shí),執(zhí)行所述步驟S5。
[0035]優(yōu)選的,提供一存儲(chǔ)單元用以將所述復(fù)數(shù)個(gè)參數(shù)存入一預(yù)設(shè)的字符串?dāng)?shù)組中,在所述步驟S32中,將所述存儲(chǔ)單元中的所述字符串?dāng)?shù)組中所述復(fù)數(shù)個(gè)參數(shù)依次與所述預(yù)設(shè)參數(shù)進(jìn)行匹配,以獲取每個(gè)所述匹配結(jié)果;
[0036]當(dāng)所述匹配結(jié)果為匹配時(shí),執(zhí)行所述步驟S5 ;
[0037]當(dāng)所述復(fù)數(shù)個(gè)參數(shù)的匹配結(jié)果均為不匹配時(shí),執(zhí)行所述步驟S4。
[0038]優(yōu)選的,所述預(yù)設(shè)主體為拷貝命令。
[0039]優(yōu)選的,所述預(yù)設(shè)參數(shù)為app-process。
[0040]上述技術(shù)方案的有益效果:
[0041]本技術(shù)方案中,防止截獲系統(tǒng)接口的系統(tǒng)通過(guò)判斷單元判斷用戶的權(quán)限,通過(guò)識(shí)別單元識(shí)別執(zhí)行指令的風(fēng)險(xiǎn),以防止惡意程序截獲系統(tǒng)接口。防止截獲系統(tǒng)接口的方法通過(guò)獲取用戶的權(quán)限及對(duì)執(zhí)行指令進(jìn)行識(shí)別,以修改替換文件指令的流程來(lái)拒絕惡意程序替換體Andro i d系統(tǒng)中的文件,從而避免用戶隱私泄露。
【附圖說(shuō)明】
[0042]圖1為本發(fā)明所述的防止截獲系統(tǒng)接口的系統(tǒng)的一種實(shí)施例的模塊圖;
[0043]圖2為本發(fā)明所述的防止截獲系統(tǒng)接口的方法的一種實(shí)施例的方法流程圖。
【具體實(shí)施方式】
[0044]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0045]需要說(shuō)明的是,在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互組合。
[0046]下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,但不作為本發(fā)明的限定。
[0047]本發(fā)明基于如下發(fā)現(xiàn):
[0048]現(xiàn)有的Android系統(tǒng)中所有進(jìn)程從根本上都是由init進(jìn)程開(kāi)啟的,在Android系統(tǒng)init進(jìn)程開(kāi)啟后會(huì)執(zhí)行init.rc腳本,此腳本中有如下一段腳本代碼:
[0049]Service zygote/system/bin/app_proces_Xzygote/system/bin—zygote—start-system-server,
[0050]通過(guò)此腳本代碼可以知init.rc腳本中會(huì)創(chuàng)建一個(gè)zygote進(jìn)程。zygote進(jìn)程是Android系統(tǒng)中最核心的進(jìn)程,它會(huì)為每一個(gè)用戶進(jìn)程創(chuàng)建一個(gè)Dalvik虛擬機(jī),通過(guò)Dalvik虛擬機(jī)來(lái)處理用戶進(jìn)程。zygote進(jìn)程要執(zhí)行的主程序是系統(tǒng)中的/system/bin/app_process,由此可知 /system/bin/app_process 是 zygote 進(jìn)程的主體。采用 zygote處理用戶進(jìn)程的流程都是在app_process中完成。如果app_process文件在系統(tǒng)中被替換成一個(gè)注冊(cè)了一些系統(tǒng)接口對(duì)應(yīng)的鉤子函數(shù)的同名文件且執(zhí)行,即可通過(guò)被替換的app_process中注冊(cè)的鉤子函數(shù)來(lái)截獲系統(tǒng)接口,則會(huì)威脅到用戶的個(gè)人隱私。所謂鉤子函數(shù)就是鉤住系統(tǒng)接口,簡(jiǎn)單來(lái)說(shuō)就是系統(tǒng)在調(diào)用系統(tǒng)接口時(shí)被鉤子函數(shù)截獲,強(qiáng)行在調(diào)用系統(tǒng)接口的前后執(zhí)行一些鉤子函數(shù)自己的操作。在Android系統(tǒng)中Xposed框架由于其自身的特性容易被一些惡意程序所利用,通過(guò)Xposed框架會(huì)替換掉系統(tǒng)中的app_process文件,當(dāng)Android系統(tǒng)開(kāi)啟,zygote進(jìn)程執(zhí)行已被替換了的app_process時(shí),通過(guò)執(zhí)行此app_process來(lái)加載XposedBridge.jar包,注冊(cè)對(duì)應(yīng)系統(tǒng)接口的鉤子函數(shù)來(lái)實(shí)現(xiàn)對(duì)系統(tǒng)接口的截獲,以獲取用戶的隱私信息,造成用戶信息泄露。
[0051]基于上述問(wèn)題,本發(fā)明旨在提供一種防止app_process被替換的防止截獲系統(tǒng)接口的系統(tǒng)及方法。
[0052]如圖1所示,一種防止截獲系統(tǒng)接口的系統(tǒng),應(yīng)用于Android中,包括:
[0053]—獲取單元1,用以獲取用戶發(fā)送的執(zhí)行指令;
[0054]—判斷單元2,連接獲取單元1,用以判斷用戶是否為超級(jí)用戶,以獲取判斷結(jié)果;
[0055]—識(shí)別單元4,分別連接獲取單元I和判斷單元2,提供一預(yù)設(shè)條件,識(shí)別單元4用以根據(jù)判斷結(jié)果將執(zhí)行指令與預(yù)設(shè)條件進(jìn)行匹配,以獲取匹配結(jié)果;
[0056]—處理單元5,分別連接判斷單元2和識(shí)別單元4,用以根據(jù)判斷結(jié)果和/或匹配結(jié)果,執(zhí)行執(zhí)行指令;或
[0057]根據(jù)匹配結(jié)果停止執(zhí)行執(zhí)行指令。
[0058]在本實(shí)施例中,通過(guò)判斷單元2判斷用戶的權(quán)限,通過(guò)識(shí)別單元4識(shí)別執(zhí)行指令的風(fēng)險(xiǎn),以防止惡意程序截獲系統(tǒng)接口。
[0059]在優(yōu)選的實(shí)施例中,執(zhí)行指令包括執(zhí)行主體和復(fù)數(shù)個(gè)參數(shù);
[0060]識(shí)別單元4將執(zhí)行指令的執(zhí)行主體與預(yù)設(shè)主體進(jìn)行匹配;
[0061]當(dāng)不匹配時(shí),處理單元5執(zhí)行執(zhí)行指令;
[0062]當(dāng)匹配時(shí),識(shí)別單元4將復(fù)數(shù)個(gè)參數(shù)依次與預(yù)設(shè)參數(shù)進(jìn)行匹配;
[0063]當(dāng)復(fù)數(shù)個(gè)參數(shù)均與預(yù)設(shè)參數(shù)不匹配時(shí),處理單元5執(zhí)行執(zhí)行指令;
[0064]當(dāng)參數(shù)與預(yù)設(shè)參數(shù)匹配時(shí),處理單元5停止執(zhí)行執(zhí)行指令。
[0065]進(jìn)一步地,預(yù)設(shè)主體可采用拷貝命令:cp,預(yù)設(shè)參數(shù)為app-process。
[0066]在本實(shí)施例中,拷貝命令主要指將相同文件名的文件拷貝到需要替換的原文件名所在的地址中,以實(shí)現(xiàn)將原文件替換掉的目的,也可是通過(guò)移動(dòng)等操作將相同文件名的文件替換。
[0067]在Android系統(tǒng)中可通過(guò)拷貝指令來(lái)替換一個(gè)文件??截愇募闹噶畹母袷揭话愣际怯伞懊钪黧w參數(shù)I參數(shù)2..”來(lái)呈現(xiàn)??截愇募畹母袷綖椤懊钪黧w,參數(shù)1,參數(shù)2..”其中“命令”為指令的主體,“參數(shù)I”和“參數(shù)2”為執(zhí)行指令時(shí)傳入的參數(shù)。當(dāng)程序執(zhí)行指令時(shí)會(huì)按照命令的流程來(lái)執(zhí)行,其中會(huì)使用到傳入的參數(shù)。比如Xposed框架中會(huì)將框架中的app_process文件替換掉Android系統(tǒng)中/system/bin/目錄下的原app_process文件。這種替換是通過(guò)執(zhí)行替換文件的命令來(lái)實(shí)現(xiàn)的。通過(guò)拷貝可以作為替換命令的一種方法完成替換文件,命令的格式如下:
[0068]cp app_process/system/bin/,
[0069]在上述的命令中“cp”為拷貝文件命令的主體,實(shí)質(zhì)是一段程序。“app_pr0CeSS”作為傳入命令主體的參數(shù)I是Xpos