本發(fā)明涉及終端
技術(shù)領(lǐng)域:
:,特別涉及一種hook目標(biāo)內(nèi)核函數(shù)的方法及裝置。
背景技術(shù):
::hook(鉤子)函數(shù)是一個(gè)處理消息的代碼段,采用hook函數(shù)可以鉤住目標(biāo)函數(shù),此時(shí)如果有其他函數(shù)向該目標(biāo)函數(shù)發(fā)送消息時(shí),不會(huì)先運(yùn)行該目標(biāo)函數(shù),而是先運(yùn)行hook函數(shù),在hook函數(shù)運(yùn)行過(guò)程中,可以先對(duì)傳遞給目標(biāo)函數(shù)的消息進(jìn)行加工處理再傳遞給該目標(biāo)函數(shù),也可以直接將該消息傳遞給目標(biāo)函數(shù),也可以強(qiáng)制結(jié)束該消息的傳遞。操作系統(tǒng)通常分為兩部分:用戶空間和內(nèi)核空間,其中,用戶空間是進(jìn)程獨(dú)立的,相互之間不可訪問(wèn),而內(nèi)核空間是進(jìn)程共享的,操作系統(tǒng)中只有一份內(nèi)核空間。但是,用戶空間的hook函數(shù)只能hook用戶空間中的目標(biāo)函數(shù),而不能hook內(nèi)核空間中的目標(biāo)函數(shù),hook功能較為局限。技術(shù)實(shí)現(xiàn)要素:為了解決現(xiàn)有技術(shù)的問(wèn)題,本發(fā)明實(shí)施例提供了一種hook目標(biāo)內(nèi)核函數(shù)的方法及裝置。所述技術(shù)方案如下:第一方面,提供了一種hook目標(biāo)內(nèi)核函數(shù)的方法,所述方法包括:根據(jù)目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)調(diào)用框架文件時(shí),跳轉(zhuǎn)至第一指定函數(shù),所述框架文件由所述第一指定函數(shù)、入口函數(shù)和第二指定函數(shù)封裝得到,所述框架文件用于hook所述目標(biāo)內(nèi)核函數(shù),所述目標(biāo)內(nèi)核函數(shù)位于內(nèi)核空間,所述第一指定函數(shù)和所述入口函數(shù)位于用戶空間;在所述第一指定函數(shù)的運(yùn)行過(guò)程中,將系統(tǒng)調(diào)用表中第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為所述入口函數(shù)的地址,并根據(jù)所述第二系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用,跳轉(zhuǎn)至所述入口函數(shù),所述系統(tǒng)調(diào)用表位于所述內(nèi)核空間,且所述系統(tǒng)調(diào)用表包 括系統(tǒng)調(diào)用號(hào)、函數(shù)與函數(shù)地址之間的對(duì)應(yīng)關(guān)系;在所述入口函數(shù)的運(yùn)行過(guò)程中,將所述系統(tǒng)調(diào)用表中所述第一系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為所述第二指定函數(shù)的起始地址,使得根據(jù)所述第一系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用時(shí)運(yùn)行所述第二指定函數(shù)。第二方面,提供了一種hook目標(biāo)內(nèi)核函數(shù)的裝置,所述裝置包括:文件調(diào)用模塊,用于根據(jù)目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)調(diào)用框架文件時(shí),跳轉(zhuǎn)至第一指定函數(shù),所述框架文件由所述第一指定函數(shù)、入口函數(shù)和第二指定函數(shù)封裝得到,所述框架文件用于hook所述目標(biāo)內(nèi)核函數(shù),所述目標(biāo)內(nèi)核函數(shù)位于內(nèi)核空間,所述第一指定函數(shù)和所述入口函數(shù)位于用戶空間;第一運(yùn)行模塊,用于在所述第一指定函數(shù)的運(yùn)行過(guò)程中,將系統(tǒng)調(diào)用表中第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為所述入口函數(shù)的地址,并根據(jù)所述第二系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用,跳轉(zhuǎn)至所述入口函數(shù),所述系統(tǒng)調(diào)用表位于所述內(nèi)核空間,且所述系統(tǒng)調(diào)用表包括系統(tǒng)調(diào)用號(hào)、函數(shù)與函數(shù)地址之間的對(duì)應(yīng)關(guān)系;第二運(yùn)行模塊,用于在所述入口函數(shù)的運(yùn)行過(guò)程中,將所述系統(tǒng)調(diào)用表中所述第一系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為所述第二指定函數(shù)的起始地址,使得根據(jù)所述第一系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用時(shí)運(yùn)行所述第二指定函數(shù)。本發(fā)明實(shí)施例提供的技術(shù)方案帶來(lái)的有益效果是:本發(fā)明實(shí)施例提供的方法及裝置,通過(guò)根據(jù)目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)調(diào)用框架文件,能夠運(yùn)行用戶空間中的第一指定函數(shù),將內(nèi)核空間中的系統(tǒng)調(diào)用表中第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為入口函數(shù)的地址,從而保證入口函數(shù)具有訪問(wèn)內(nèi)核空間的權(quán)限,并跳轉(zhuǎn)至入口函數(shù),在運(yùn)行入口函數(shù)的過(guò)程中將系統(tǒng)調(diào)用表中目標(biāo)內(nèi)核函數(shù)的地址修改為第二指定函數(shù)的起始地址,從而能夠在要調(diào)用內(nèi)核空間中的目標(biāo)內(nèi)核函數(shù)時(shí)跳轉(zhuǎn)至運(yùn)行第二指定函數(shù),實(shí)現(xiàn)了利用第二指定函數(shù)hook目標(biāo)內(nèi)核函數(shù)的目的,擴(kuò)展了hook功能的范圍,提高了靈活性。附圖說(shuō)明為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所 需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實(shí)施例提供的一種hook目標(biāo)內(nèi)核函數(shù)的方法的流程圖;圖2是本發(fā)明實(shí)施例提供的一種hook目標(biāo)內(nèi)核函數(shù)的方法的流程圖;圖3是本發(fā)明實(shí)施例提供的一種運(yùn)行過(guò)程示意圖;圖4是本發(fā)明實(shí)施例提供的一種運(yùn)行過(guò)程示意圖;圖5是本發(fā)明實(shí)施例提供的一種運(yùn)行過(guò)程示意圖;圖6是本發(fā)明實(shí)施例提供的一種hook目標(biāo)內(nèi)核函數(shù)的裝置結(jié)構(gòu)示意圖;圖7是本發(fā)明實(shí)施例提供的一種終端的結(jié)構(gòu)示意圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。圖1是本發(fā)明實(shí)施例提供的一種hook目標(biāo)內(nèi)核函數(shù)的方法的流程圖。參見(jiàn)圖1,該方法包括:101、根據(jù)目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)調(diào)用框架文件時(shí),跳轉(zhuǎn)至第一指定函數(shù)。102、在第一指定函數(shù)的運(yùn)行過(guò)程中,將系統(tǒng)調(diào)用表中第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為入口函數(shù)的地址,并根據(jù)第二系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用,跳轉(zhuǎn)至該入口函數(shù)。103、在該入口函數(shù)的運(yùn)行過(guò)程中,將該系統(tǒng)調(diào)用表中目標(biāo)內(nèi)核函數(shù)的地址修改為第二指定函數(shù)的起始地址,使得根據(jù)該目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用時(shí)運(yùn)行該第二指定函數(shù)。其中,該框架文件由第一指定函數(shù)、入口函數(shù)和第二指定函數(shù)封裝得到,該框架文件用于hook該目標(biāo)內(nèi)核函數(shù);該目標(biāo)內(nèi)核函數(shù)位于內(nèi)核空間,第一指定函數(shù)和入口函數(shù)位于用戶空間,該系統(tǒng)調(diào)用表位于內(nèi)核空間;該系統(tǒng)調(diào)用表包括系統(tǒng)調(diào)用號(hào)、函數(shù)與函數(shù)地址之間的對(duì)應(yīng)關(guān)系。本發(fā)明實(shí)施例提供的方法,通過(guò)根據(jù)目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)調(diào)用框架文件,能夠運(yùn)行用戶空間中的第一指定函數(shù),將內(nèi)核空間中的系統(tǒng)調(diào)用表中第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為入口函數(shù)的地址,從而保證入口函數(shù)具有訪問(wèn)內(nèi)核空間的權(quán)限,并跳轉(zhuǎn)至入口函數(shù),在運(yùn)行入口函數(shù)的過(guò)程中將系統(tǒng)調(diào)用表中目標(biāo)內(nèi)核函數(shù)的地址修改為第二指定函數(shù)的起始地址,從而能夠在要調(diào)用內(nèi)核空間中的目標(biāo)內(nèi)核函數(shù)時(shí)跳轉(zhuǎn)至運(yùn)行第二指定函數(shù),實(shí)現(xiàn)了利用第二指定函數(shù)hook目標(biāo)內(nèi)核函數(shù)的目的,擴(kuò)展了hook功能的范圍,提高了靈活性??蛇x地,該入口函數(shù)的運(yùn)行過(guò)程包括:在該內(nèi)核空間中分配內(nèi)存;在分配的內(nèi)存中存儲(chǔ)該第二指定函數(shù),并將該內(nèi)存的起始地址作為該第二指定函數(shù)的起始地址;將該系統(tǒng)調(diào)用表中該目標(biāo)內(nèi)核函數(shù)的地址修改為該第二指定函數(shù)的起始地址,使得根據(jù)該目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用時(shí)運(yùn)行該第二指定函數(shù)。可選地,該在分配的內(nèi)存中存儲(chǔ)該第二指定函數(shù),包括:該在分配的內(nèi)存中存儲(chǔ)該第二指定函數(shù),包括:在分配的內(nèi)存中,存儲(chǔ)該第二指定函數(shù)所需的參數(shù)、該第二指定函數(shù)所需的內(nèi)核函數(shù)地址以及該第二指定函數(shù)??蛇x地,該入口函數(shù)的運(yùn)行過(guò)程還包括:在將該系統(tǒng)調(diào)用表中該目標(biāo)內(nèi)核函數(shù)的地址修改為該第二指定函數(shù)的起始地址之后,將該系統(tǒng)調(diào)用表中該第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址還原為原始地址??蛇x地,該在該第一指定函數(shù)的運(yùn)行過(guò)程中,將系統(tǒng)調(diào)用表中第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為入口函數(shù)的地址,包括:在該第一指定函數(shù)的運(yùn)行過(guò)程中,獲取該系統(tǒng)調(diào)用表的地址,并利用該內(nèi)核空間的漏洞,根據(jù)該系統(tǒng)調(diào)用表的地址,將該系統(tǒng)調(diào)用表中該第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為該入口函數(shù)的地址??蛇x地,該在該入口函數(shù)的運(yùn)行過(guò)程中,將該系統(tǒng)調(diào)用表中目標(biāo)內(nèi)核函數(shù)的地址修改為第二指定函數(shù)的起始地址之后,該方法還包括:當(dāng)任一函數(shù)根據(jù)該第一系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用時(shí),根據(jù)該系統(tǒng)調(diào)用表中該第 一系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址,運(yùn)行該第二指定函數(shù)。上述所有可選技術(shù)方案,可以采用任意結(jié)合形成本發(fā)明的可選實(shí)施例,在此不再一一贅述。圖2是本發(fā)明實(shí)施例提供的一種hook目標(biāo)內(nèi)核函數(shù)的方法的流程圖。參見(jiàn)圖2,該方法包括:201、根據(jù)目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)調(diào)用框架文件時(shí),跳轉(zhuǎn)至第一指定函數(shù)。本發(fā)明實(shí)施例可以應(yīng)用于計(jì)算機(jī)或者手機(jī)等終端中,該終端的操作系統(tǒng)可以為安卓系統(tǒng)或者其他系統(tǒng),本發(fā)明實(shí)施例對(duì)此不做限定。該終端的操作系統(tǒng)包括用戶空間和內(nèi)核空間,用戶空間是進(jìn)程獨(dú)立的,相互之間不可訪問(wèn),而內(nèi)核空間是進(jìn)程共享的,操作系統(tǒng)中只有一份內(nèi)核空間。其中,該框架文件由第一指定函數(shù)、入口函數(shù)和第二指定函數(shù)封裝得到,且該框架文件用于hook內(nèi)核函數(shù),可以包括接口文件interface.h和庫(kù)文件librace.a等,本實(shí)施例對(duì)此不做限定。那么,在技術(shù)人員的開發(fā)過(guò)程中,該終端可以為技術(shù)人員提供框架文件,技術(shù)人員要hook目標(biāo)內(nèi)核函數(shù)時(shí),可以輸入調(diào)用該框架文件的指令,該指令攜帶目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào),則該終端根據(jù)目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)調(diào)用框架文件,此時(shí)即跳轉(zhuǎn)至第一指定函數(shù),第一指定函數(shù)開始運(yùn)行。其中,該第一指定函數(shù)和該入口函數(shù)位于用戶空間,該目標(biāo)內(nèi)核函數(shù)位于內(nèi)核空間,該目標(biāo)內(nèi)核函數(shù)可以由技術(shù)人員根據(jù)需求確定,可以為內(nèi)核空間中的任一內(nèi)核函數(shù),本實(shí)施例對(duì)此不做限定。202、在第一指定函數(shù)的運(yùn)行過(guò)程中,將系統(tǒng)調(diào)用表中第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為入口函數(shù)的地址,并根據(jù)該第二系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用,從而跳轉(zhuǎn)至該入口函數(shù)。其中,該系統(tǒng)調(diào)用表位于內(nèi)核空間,且該系統(tǒng)調(diào)用表包括系統(tǒng)調(diào)用號(hào)、函數(shù)與函數(shù)地址之間的對(duì)應(yīng)關(guān)系,其中的函數(shù)地址是指函數(shù)的入口地址,當(dāng)根據(jù)系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用時(shí),會(huì)根據(jù)該系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的函數(shù)地址進(jìn)行跳轉(zhuǎn),開始運(yùn)行該系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的函數(shù)。例如,該系統(tǒng)調(diào)用表sys_call_table可以如下表1所示,當(dāng)根據(jù)系統(tǒng)調(diào)用號(hào)20進(jìn)行調(diào)用時(shí),會(huì)根據(jù)函數(shù)地址0xe0112214,運(yùn)行sys_getpid函數(shù)。表1系統(tǒng)調(diào)用號(hào)函數(shù)函數(shù)地址20sys_getpid0xe0112214333sys_fchmodat0xe011228c通常情況下,該系統(tǒng)調(diào)用表中的函數(shù)為位于內(nèi)核空間的內(nèi)核函數(shù),用戶空間的函數(shù)并不能hook系統(tǒng)調(diào)用表中的內(nèi)核函數(shù)。而在本發(fā)明實(shí)施例中,為了實(shí)現(xiàn)在用戶空間hook內(nèi)核空間中的目標(biāo)內(nèi)核函數(shù),可以先運(yùn)行用戶空間中的第一指定函數(shù)。在第一指定函數(shù)的運(yùn)行過(guò)程中,獲取位于內(nèi)核空間的系統(tǒng)調(diào)用表的地址,并利用內(nèi)核空間的漏洞,根據(jù)該系統(tǒng)調(diào)用表的地址,將系統(tǒng)調(diào)用表中第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為入口函數(shù)的地址,該入口函數(shù)位于用戶空間。具體地,第一指定函數(shù)可以采用exp(導(dǎo)出數(shù)據(jù)庫(kù))命令,利用操作系統(tǒng)的futex漏洞或者putuser漏洞等,改寫該系統(tǒng)調(diào)用表中系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的函數(shù)地址,將系統(tǒng)調(diào)用表中第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為入口函數(shù)的地址。修改地址之后,第一指定函數(shù)可以對(duì)第二系統(tǒng)調(diào)用號(hào)執(zhí)行系統(tǒng)調(diào)用指令,根據(jù)該第二系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用,由于此時(shí)該系統(tǒng)調(diào)用表中存儲(chǔ)的該第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址為該入口函數(shù)的地址,則根據(jù)該第二系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用時(shí)會(huì)由第一指定函數(shù)跳轉(zhuǎn)至入口函數(shù),并運(yùn)行入口函數(shù),相當(dāng)于該入口函數(shù)就具備了訪問(wèn)內(nèi)核空間的權(quán)限。其中,該第二系統(tǒng)調(diào)用號(hào)可以隨機(jī)確定,或者由第一指定函數(shù)默認(rèn)確定,入口函數(shù)以及入口函數(shù)的地址也可以由終端預(yù)先確定,本發(fā)明實(shí)施例對(duì)此不做限定?;诒?的舉例,參見(jiàn)圖3,該第一指定函數(shù)的運(yùn)行過(guò)程可以如下:khookfunction(){1、獲取sys_call_table地址2、利用exp改寫sys_call_table中的地址3、syscall(333);}第一指定函數(shù)在運(yùn)行過(guò)程中將系統(tǒng)調(diào)用表sys_call_table中的系統(tǒng)調(diào)用號(hào) 333對(duì)應(yīng)的地址由0xe011228c修改為入口函數(shù)的地址0x1011228c,如下表2所示。執(zhí)行syscall(333)指令進(jìn)行調(diào)用時(shí),就會(huì)由第一指定函數(shù)跳轉(zhuǎn)至入口函數(shù),開始運(yùn)行入口函數(shù)。表2系統(tǒng)調(diào)用號(hào)函數(shù)函數(shù)地址20sys_getpid0xe0112214333sys_fchmodat0x1011228c203、在該入口函數(shù)的運(yùn)行過(guò)程中,將該系統(tǒng)調(diào)用表中目標(biāo)內(nèi)核函數(shù)的地址修改為第二指定函數(shù)的起始地址。其中,該第二指定函數(shù)是指要hook目標(biāo)內(nèi)核函數(shù)的函數(shù),位于內(nèi)核空間中,可以包括至少一個(gè)代碼段,且該第二指定函數(shù)可以為二進(jìn)制代碼段,具體可以由技術(shù)人員在開發(fā)時(shí)設(shè)置,本實(shí)施例對(duì)該第二指定函數(shù)的具體內(nèi)容不做限定。為了便于利用第二指定函數(shù)hook內(nèi)核空間中的目標(biāo)內(nèi)核函數(shù),在該入口函數(shù)的運(yùn)行過(guò)程中,可以獲取該系統(tǒng)調(diào)用表的地址,在該內(nèi)核空間中分配內(nèi)存,在分配的內(nèi)存中存儲(chǔ)該第二指定函數(shù),并獲取該第二指定函數(shù)的起始地址,根據(jù)該系統(tǒng)調(diào)用表的地址,將該系統(tǒng)調(diào)用表中存儲(chǔ)的該目標(biāo)內(nèi)核函數(shù)的地址修改為該第二指定函數(shù)的起始地址,那么,當(dāng)后續(xù)根據(jù)該目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用時(shí),不會(huì)運(yùn)行該目標(biāo)內(nèi)核函數(shù),而是會(huì)根據(jù)該第二指定函數(shù)的起始地址,運(yùn)行該第二指定函數(shù)。其中,實(shí)現(xiàn)內(nèi)存的分配和第二指定函數(shù)的存儲(chǔ)均需要調(diào)用系統(tǒng)函數(shù),如vmalloc_exec函數(shù)等,則在該入口函數(shù)的運(yùn)行過(guò)程中,在分配內(nèi)存之前,可以先獲取kallsyms_lookup_name函數(shù)的地址,根據(jù)kallsyms_lookup_name函數(shù)的地址,運(yùn)行kallsyms_lookup_name函數(shù),該kallsyms_lookup_name用于尋找系統(tǒng)函數(shù)的地址,通過(guò)運(yùn)行kallsyms_lookup_name函數(shù)可以尋找到需要的系統(tǒng)函數(shù),調(diào)用尋找的系統(tǒng)函數(shù),從而實(shí)現(xiàn)內(nèi)存的分配和第二指定函數(shù)的存儲(chǔ)等過(guò)程。另外,為了降低運(yùn)行的計(jì)算量,可以將第二指定函數(shù)與第二指定函數(shù)運(yùn)行時(shí)所需的字符串等參數(shù)分開存儲(chǔ),將運(yùn)行時(shí)所需的參數(shù)也存儲(chǔ)于內(nèi)核空間中,以參數(shù)的形式傳遞給第二指定函數(shù),而且,由于第二指定函數(shù)在用戶空間中編譯,編譯過(guò)程中不可調(diào)用內(nèi)核空間的函數(shù),但第二指定函數(shù)需要在內(nèi)核空間中運(yùn)行,在運(yùn)行過(guò)程中又不可調(diào)用用戶空間的函數(shù),因此,在第二指定函數(shù)運(yùn)行 之前可以將內(nèi)核函數(shù)的地址存儲(chǔ)于內(nèi)核空間中,在運(yùn)行過(guò)程中即可采用尋址的方式,將第二指定函數(shù)運(yùn)行時(shí)所需的內(nèi)核函數(shù)的地址傳遞給該第二指定函數(shù)。因此,在入口函數(shù)的運(yùn)行過(guò)程中,在分配內(nèi)存之后,可以在該內(nèi)存中存儲(chǔ)該第二指定函數(shù)所需的參數(shù)、該第二指定函數(shù)所需的內(nèi)核函數(shù)地址以及該第二指定函數(shù)。進(jìn)一步地,可以先存儲(chǔ)該第二指定函數(shù)所需的參數(shù),在該第二指定函數(shù)所需的參數(shù)之后,存儲(chǔ)該第二指定函數(shù)所需的內(nèi)核函數(shù)地址,在該第二指定函數(shù)所需的內(nèi)核函數(shù)地址之后,存儲(chǔ)該第二指定函數(shù)?;诒?和表2的舉例,參見(jiàn)圖4,第一指定函數(shù)執(zhí)行syscall(333)指令進(jìn)行調(diào)用時(shí),入口函數(shù)k_sys_entry開始運(yùn)行,運(yùn)行過(guò)程中在內(nèi)核空間分配如圖4所示的內(nèi)存,即在內(nèi)核空間中分配4k的內(nèi)存,其中最前面的256字節(jié)用于存儲(chǔ)第二指定函數(shù)shellcode函數(shù)所需要的參數(shù),中間的768字節(jié)用于存儲(chǔ)shellcode函數(shù)所需要的內(nèi)核函數(shù)地址,最后的3k字節(jié)用于存儲(chǔ)shellcode函數(shù)本身。之后,將系統(tǒng)調(diào)用表sys_call_table中的系統(tǒng)調(diào)用號(hào)20對(duì)應(yīng)的地址由目標(biāo)內(nèi)核函數(shù)sys_getpid的地址0xe0112214修改為shellcode的起始地址0xe0114444。入口函數(shù)的運(yùn)行過(guò)程可以如下:k_sys_entry(){1、獲取sys_call_table地址2、獲取kallsyms_lookup_name地址3、尋找系統(tǒng)函數(shù),vmaloc_exec……4、在內(nèi)核空間中分配內(nèi)存5、拼接shellcode6、將shellcode與目標(biāo)系統(tǒng)調(diào)用號(hào)關(guān)聯(lián)7、還原khookfunction占用的系統(tǒng)調(diào)用號(hào)}另外,將該系統(tǒng)調(diào)用表中存儲(chǔ)的該目標(biāo)內(nèi)核函數(shù)的地址修改為該第二指定函數(shù)的起始地址之后,該入口函數(shù)即可將該系統(tǒng)調(diào)用表中該第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址還原為原始地址,即還未修改系統(tǒng)調(diào)用表時(shí)該系統(tǒng)調(diào)用表中該第二系統(tǒng)調(diào)用號(hào)所對(duì)應(yīng)的內(nèi)核函數(shù)地址。204、當(dāng)任一函數(shù)根據(jù)該第一系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用時(shí),根據(jù)該系統(tǒng)調(diào)用表中該第一系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的、該第二指定函數(shù)的起始地址,運(yùn)行該第二指定函數(shù)。入口函數(shù)運(yùn)行完成后,該系統(tǒng)調(diào)用表中該第一系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址為該第二指定函數(shù)的起始地址,則當(dāng)任一函數(shù)根據(jù)該第一系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用時(shí),會(huì)根據(jù)該系統(tǒng)調(diào)用表中存儲(chǔ)的該第一系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址運(yùn)行,即會(huì)運(yùn)行該第二指定函數(shù),而不是運(yùn)行該目標(biāo)內(nèi)核函數(shù),從而實(shí)現(xiàn)了hook該目標(biāo)內(nèi)核函數(shù)。參見(jiàn)圖5,當(dāng)myfunction函數(shù)要調(diào)用getpid函數(shù)時(shí),會(huì)根據(jù)系統(tǒng)調(diào)用表中的系統(tǒng)調(diào)用號(hào)20對(duì)應(yīng)的函數(shù)地址0xe0114444進(jìn)行調(diào)用,也即是myfunction函數(shù)會(huì)跳轉(zhuǎn)至第二指定函數(shù),開始運(yùn)行該第二指定函數(shù)。在運(yùn)行第二指定函數(shù)的過(guò)程中,會(huì)執(zhí)行該第二指定函數(shù)中的指令,此時(shí)需要根據(jù)第二指定函數(shù)中的指令來(lái)確定后續(xù)是否要運(yùn)行該目標(biāo)內(nèi)核函數(shù)。優(yōu)選地,為了保證程序的健壯性,第二指定函數(shù)可以包括回調(diào)至目標(biāo)內(nèi)核函數(shù)的指令,使得在第二指定函數(shù)運(yùn)行過(guò)程中可以回調(diào)至該目標(biāo)內(nèi)核函數(shù)?;谏鲜霾襟E中的舉例,第二指定函數(shù)可以包括“jump0xe0112244”指令,當(dāng)執(zhí)行到該指令時(shí),會(huì)跳轉(zhuǎn)至目標(biāo)內(nèi)核函數(shù)的地址0xe0112244,開始運(yùn)行目標(biāo)內(nèi)核函數(shù)。系統(tǒng)調(diào)用是用戶空間進(jìn)入內(nèi)核空間的唯一入口,可以把應(yīng)用程序的請(qǐng)求傳給內(nèi)核空間,調(diào)用相應(yīng)的內(nèi)核函數(shù)完成所需的處理后,將處理結(jié)果返回給應(yīng)用程序。本發(fā)明實(shí)施例利用了系統(tǒng)調(diào)用的功能,在操作系統(tǒng)漏洞的基礎(chǔ)上進(jìn)行。用戶空間中的第一指定函數(shù)利用漏洞對(duì)內(nèi)核空間的系統(tǒng)調(diào)用表進(jìn)行修改,將系統(tǒng)調(diào)用表中某個(gè)系統(tǒng)調(diào)用號(hào)指向新分配的內(nèi)存,在新分配的內(nèi)存中填充編輯好的第二指定函數(shù),從而通過(guò)系統(tǒng)調(diào)用達(dá)到了劫持系統(tǒng)調(diào)用的目的,實(shí)現(xiàn)了利用第二指定函數(shù)hook目標(biāo)內(nèi)核函數(shù)。本發(fā)明實(shí)施例提供的方法,通過(guò)將第一指定函數(shù)、入口函數(shù)和第二指定函數(shù)封裝得到框架文件,在技術(shù)人員的開發(fā)過(guò)程中為技術(shù)人員提供框架文件,當(dāng)技術(shù)人員要hook目標(biāo)內(nèi)核函數(shù)時(shí),可以根據(jù)目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)調(diào)用該框架文件時(shí),運(yùn)行用戶空間中的第一指定函數(shù),將內(nèi)核空間中的系統(tǒng)調(diào)用表中第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為入口函數(shù)的地址,從而保證入口函數(shù)具有訪問(wèn)內(nèi)核空間的權(quán)限,并跳轉(zhuǎn)至入口函數(shù),在運(yùn)行入口函數(shù)的過(guò)程中將系統(tǒng)調(diào)用表中目標(biāo)內(nèi)核函數(shù)的地址修改為第二指定函數(shù)的起始地址,從而能夠在要調(diào)用內(nèi)核空間中的目標(biāo)內(nèi)核函數(shù)時(shí)跳轉(zhuǎn)至運(yùn)行第二指定函數(shù),實(shí)現(xiàn)了利用第二指定函數(shù)hook目標(biāo)內(nèi)核函數(shù)的目的,擴(kuò)展了hook功能的范圍,提高了靈 活性。對(duì)于技術(shù)人員來(lái)說(shuō),在開發(fā)過(guò)程中無(wú)需關(guān)注框架的底層如何實(shí)現(xiàn),只需掌握如何使用框架即可完成對(duì)內(nèi)核空間的hook需求,操作非常簡(jiǎn)便。圖6是本發(fā)明實(shí)施例提供的一種hook目標(biāo)內(nèi)核函數(shù)的裝置結(jié)構(gòu)示意圖,參見(jiàn)圖6,該裝置包括:文件調(diào)用模塊601,用于根據(jù)目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)調(diào)用框架文件時(shí),跳轉(zhuǎn)至第一指定函數(shù),該框架文件由該第一指定函數(shù)、入口函數(shù)和第二指定函數(shù)封裝得到,該框架文件用于hook該目標(biāo)內(nèi)核函數(shù),該目標(biāo)內(nèi)核函數(shù)位于內(nèi)核空間,該第一指定函數(shù)和該入口函數(shù)位于用戶空間;第一運(yùn)行模塊602,用于在第一指定函數(shù)的運(yùn)行過(guò)程中,將系統(tǒng)調(diào)用表中第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為入口函數(shù)的地址,并根據(jù)該第二系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用,跳轉(zhuǎn)至該入口函數(shù),該系統(tǒng)調(diào)用表位于內(nèi)核空間,且該系統(tǒng)調(diào)用表包括系統(tǒng)調(diào)用號(hào)、函數(shù)與函數(shù)地址之間的對(duì)應(yīng)關(guān)系;第二運(yùn)行模塊603,用于在該入口函數(shù)的運(yùn)行過(guò)程中,將該系統(tǒng)調(diào)用表中目標(biāo)內(nèi)核函數(shù)的地址修改為第二指定函數(shù)的起始地址,使得根據(jù)該目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用時(shí)運(yùn)行該第二指定函數(shù),該目標(biāo)內(nèi)核函數(shù)位于該內(nèi)核空間。本發(fā)明實(shí)施例提供的裝置,通過(guò)根據(jù)目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)調(diào)用框架文件,能夠運(yùn)行用戶空間中的第一指定函數(shù),將內(nèi)核空間中的系統(tǒng)調(diào)用表中第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為入口函數(shù)的地址,從而保證入口函數(shù)具有訪問(wèn)內(nèi)核空間的權(quán)限,并跳轉(zhuǎn)至入口函數(shù),在運(yùn)行入口函數(shù)的過(guò)程中將系統(tǒng)調(diào)用表中目標(biāo)內(nèi)核函數(shù)的地址修改為第二指定函數(shù)的起始地址,從而能夠在要調(diào)用內(nèi)核空間中的目標(biāo)內(nèi)核函數(shù)時(shí)跳轉(zhuǎn)至運(yùn)行第二指定函數(shù),實(shí)現(xiàn)了利用第二指定函數(shù)hook目標(biāo)內(nèi)核函數(shù)的目的,擴(kuò)展了hook功能的范圍,提高了靈活性??蛇x地,該第二運(yùn)行模塊603還包括:分配單元,用于在該內(nèi)核空間中分配內(nèi)存;存儲(chǔ)單元,用于在分配的內(nèi)存中存儲(chǔ)該第二指定函數(shù),并將該內(nèi)存的起始地址作為該第二指定函數(shù)的起始地址;修改地址單元,用于將該系統(tǒng)調(diào)用表中該目標(biāo)內(nèi)核函數(shù)的地址修改為該第 二指定函數(shù)的起始地址,使得根據(jù)該目標(biāo)內(nèi)核函數(shù)對(duì)應(yīng)的第一系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用時(shí)運(yùn)行該第二指定函數(shù)??蛇x地,該存儲(chǔ)單元用于在分配的內(nèi)存中,存儲(chǔ)該第二指定函數(shù)所需的參數(shù)、該第二指定函數(shù)所需的內(nèi)核函數(shù)地址以及該第二指定函數(shù)。可選地,該第二運(yùn)行模塊603還包括:還原單元,用于在將該系統(tǒng)調(diào)用表中該目標(biāo)內(nèi)核函數(shù)的地址修改為該第二指定函數(shù)的起始地址之后,將該系統(tǒng)調(diào)用表中該第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址還原為原始地址??蛇x地,該第一運(yùn)行模塊602還用于在該第一指定函數(shù)的運(yùn)行過(guò)程中,獲取該系統(tǒng)調(diào)用表的地址,并利用該內(nèi)核空間的漏洞,根據(jù)該系統(tǒng)調(diào)用表的地址,將該系統(tǒng)調(diào)用表中該第二系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址修改為該入口函數(shù)的地址??蛇x地,該裝置還包括:第三運(yùn)行模塊,用于當(dāng)任一函數(shù)根據(jù)該第一系統(tǒng)調(diào)用號(hào)進(jìn)行調(diào)用時(shí),根據(jù)該系統(tǒng)調(diào)用表中該第一系統(tǒng)調(diào)用號(hào)對(duì)應(yīng)的地址,運(yùn)行該第二指定函數(shù)。上述所有可選技術(shù)方案,可以采用任意結(jié)合形成本發(fā)明的可選實(shí)施例,在此不再一一贅述。需要說(shuō)明的是:上述實(shí)施例提供的hook目標(biāo)內(nèi)核函數(shù)的裝置在hook目標(biāo)內(nèi)核函數(shù)時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說(shuō)明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將終端的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的hook目標(biāo)內(nèi)核函數(shù)的裝置與hook目標(biāo)內(nèi)核函數(shù)的方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過(guò)程詳見(jiàn)方法實(shí)施例,這里不再贅述。圖7是本發(fā)明實(shí)施例提供的一種終端的結(jié)構(gòu)示意圖。該終端可以用于實(shí)施上述實(shí)施例所示出的hook目標(biāo)內(nèi)核函數(shù)的方法中終端所執(zhí)行的功能。具體來(lái)講:終端700可以包括rf(radiofrequency,射頻)電路110、包括有一個(gè)或一個(gè)以上計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的存儲(chǔ)器120、輸入單元130、顯示單元140、傳感器150、音頻電路160、傳輸模塊170、包括有一個(gè)或者一個(gè)以上處理核心的 處理器180、以及電源190等部件。本領(lǐng)域技術(shù)人員可以理解,圖7中示出的終端結(jié)構(gòu)并不構(gòu)成對(duì)終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:rf電路110可用于收發(fā)信息或通話過(guò)程中,信號(hào)的接收和發(fā)送,特別地,將基站的下行信息接收后,交由一個(gè)或者一個(gè)以上處理器180處理;另外,將涉及上行的數(shù)據(jù)發(fā)送給基站。通常,rf電路110包括但不限于天線、至少一個(gè)放大器、調(diào)諧器、一個(gè)或多個(gè)振蕩器、用戶身份模塊(sim)卡、收發(fā)信機(jī)、耦合器、lna(lownoiseamplifier,低噪聲放大器)、雙工器等。此外,rf電路110還可以通過(guò)無(wú)線通信與網(wǎng)絡(luò)和其他終端通信。所述無(wú)線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于gsm(globalsystemofmobilecommunication,全球移動(dòng)通訊系統(tǒng))、gprs(generalpacketradioservice,通用分組無(wú)線服務(wù))、cdma(codedivisionmultipleaccess,碼分多址)、wcdma(widebandcodedivisionmultipleaccess,寬帶碼分多址)、lte(longtermevolution,長(zhǎng)期演進(jìn))、電子郵件、sms(shortmessagingservice,短消息服務(wù))等。存儲(chǔ)器120可用于存儲(chǔ)軟件程序以及模塊,如上述示例性實(shí)施例所示出的終端所對(duì)應(yīng)的軟件程序以及模塊,處理器180通過(guò)運(yùn)行存儲(chǔ)在存儲(chǔ)器120的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,如實(shí)現(xiàn)基于視頻的交互等。存儲(chǔ)器120可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)終端700的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲(chǔ)器120可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤存儲(chǔ)器件、閃存器件、或其他易失性固態(tài)存儲(chǔ)器件。相應(yīng)地,存儲(chǔ)器120還可以包括存儲(chǔ)器控制器,以提供處理器180和輸入單元130對(duì)存儲(chǔ)器120的訪問(wèn)。輸入單元130可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設(shè)置以及功能控制有關(guān)的鍵盤、鼠標(biāo)、操作桿、光學(xué)或者軌跡球信號(hào)輸入。具體地,輸入單元130可包括觸敏表面131以及其他輸入終端132。觸敏表面131,也稱為觸摸顯示屏或者觸控板,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸敏表面131上或在觸敏表面131附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動(dòng)相應(yīng)的鏈接裝置??蛇x的,觸敏表面131 可包括觸摸檢測(cè)裝置和觸摸控制器兩個(gè)部分。其中,觸摸檢測(cè)裝置檢測(cè)用戶的觸摸方位,并檢測(cè)觸摸操作帶來(lái)的信號(hào),將信號(hào)傳送給觸摸控制器;觸摸控制器從觸摸檢測(cè)裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給處理器180,并能接收處理器180發(fā)來(lái)的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實(shí)現(xiàn)觸敏表面131。除了觸敏表面131,輸入單元130還可以包括其他輸入終端132。具體地,其他輸入終端132可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。顯示單元140可用于顯示由用戶輸入的信息或提供給用戶的信息以及終端700的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標(biāo)、視頻和其任意組合來(lái)構(gòu)成。顯示單元140可包括顯示面板141,可選的,可以采用lcd(liquidcrystaldisplay,液晶顯示器)、oled(organiclight-emittingdiode,有機(jī)發(fā)光二極管)等形式來(lái)配置顯示面板141。進(jìn)一步的,觸敏表面131可覆蓋顯示面板141,當(dāng)觸敏表面131檢測(cè)到在其上或附近的觸摸操作后,傳送給處理器180以確定觸摸事件的類型,隨后處理器180根據(jù)觸摸事件的類型在顯示面板141上提供相應(yīng)的視覺(jué)輸出。雖然在圖7中,觸敏表面131與顯示面板141是作為兩個(gè)獨(dú)立的部件來(lái)實(shí)現(xiàn)輸入和輸入功能,但是在某些實(shí)施例中,可以將觸敏表面131與顯示面板141集成而實(shí)現(xiàn)輸入和輸出功能。終端700還可包括至少一種傳感器150,比如光傳感器、運(yùn)動(dòng)傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來(lái)調(diào)節(jié)顯示面板141的亮度,接近傳感器可在終端700移動(dòng)到耳邊時(shí),關(guān)閉顯示面板141和/或背光。作為運(yùn)動(dòng)傳感器的一種,重力加速度傳感器可檢測(cè)各個(gè)方向上(一般為三軸)加速度的大小,靜止時(shí)可檢測(cè)出重力的大小及方向,可用于識(shí)別手機(jī)姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計(jì)姿態(tài)校準(zhǔn))、振動(dòng)識(shí)別相關(guān)功能(比如計(jì)步器、敲擊)等;至于終端700還可配置的陀螺儀、氣壓計(jì)、濕度計(jì)、溫度計(jì)、紅外線傳感器等其他傳感器,在此不再贅述。音頻電路160、揚(yáng)聲器161,傳聲器162可提供用戶與終端700之間的音頻接口。音頻電路160可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號(hào),傳輸?shù)綋P(yáng)聲器161,由揚(yáng)聲器161轉(zhuǎn)換為聲音信號(hào)輸出;另一方面,傳聲器162將收集的聲音信號(hào) 轉(zhuǎn)換為電信號(hào),由音頻電路160接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器180處理后,經(jīng)rf電路110以發(fā)送給比如另一終端,或者將音頻數(shù)據(jù)輸出至存儲(chǔ)器120以便進(jìn)一步處理。音頻電路160還可能包括耳塞插孔,以提供外設(shè)耳機(jī)與終端700的通信。終端700通過(guò)傳輸模塊170可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁(yè)和訪問(wèn)流式媒體等,它為用戶提供了無(wú)線或有線的寬帶互聯(lián)網(wǎng)訪問(wèn)。雖然圖7示出了傳輸模塊170,但是可以理解的是,其并不屬于終端700的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。處理器180是終端700的控制中心,利用各種接口和線路鏈接整個(gè)手機(jī)的各個(gè)部分,通過(guò)運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器120內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器120內(nèi)的數(shù)據(jù),執(zhí)行終端700的各種功能和處理數(shù)據(jù),從而對(duì)手機(jī)進(jìn)行整體監(jiān)控??蛇x的,處理器180可包括一個(gè)或多個(gè)處理核心;優(yōu)選的,處理器180可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無(wú)線通信??梢岳斫獾氖牵鲜稣{(diào)制解調(diào)處理器也可以不集成到處理器180中。終端700還包括給各個(gè)部件供電的電源190(比如電池),優(yōu)選的,電源可以通過(guò)電源管理系統(tǒng)與處理器180邏輯相連,從而通過(guò)電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。電源190還可以包括一個(gè)或一個(gè)以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測(cè)電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。盡管未示出,終端700還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。具體在本發(fā)明實(shí)施例中,終端的顯示單元是觸摸屏顯示器,終端還包括有存儲(chǔ)器,以及一個(gè)或者一個(gè)以上的程序,其中一個(gè)或者一個(gè)以上程序存儲(chǔ)于存儲(chǔ)器中,且經(jīng)配置以由一個(gè)或者一個(gè)以上處理器執(zhí)行上述一個(gè)或者一個(gè)以上程序包含用于實(shí)施上述實(shí)施例中終端所執(zhí)行操作的指令。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過(guò)硬件來(lái)完成,也可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12