亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

用于安卓系統(tǒng)的共享對象文件的加載方法與裝置與流程

文檔序號:12035021閱讀:210來源:國知局
本申請涉及計(jì)算機(jī)
技術(shù)領(lǐng)域
:,具體涉及數(shù)據(jù)安全
技術(shù)領(lǐng)域
:,尤其涉及用于安卓系統(tǒng)的共享對象文件的加載方法與裝置。
背景技術(shù)
::隨著互聯(lián)網(wǎng)技術(shù)和終端設(shè)備的發(fā)展,安卓系統(tǒng)由于其功能接口的開放性也得到了迅猛的發(fā)展,已經(jīng)逐步成為移動終端最流行的操作系統(tǒng)。但同時(shí),開放的功能接口也為惡意軟件提供了便利,針對安卓系統(tǒng)的應(yīng)用的反編譯、逆向分析、二次打包等惡意行為也日益猖獗,給應(yīng)用程序的開發(fā)者和使用者帶來了非常嚴(yán)重的安全威脅。為了應(yīng)對惡意軟件,大多數(shù)安卓應(yīng)用會將其核心代碼封裝在共享對象(sharedobject,so)文件中。但so文件本身是標(biāo)準(zhǔn)的可執(zhí)行鏈接格式(executableandlinkableformat,elf)文件,可以被靜態(tài)反編譯軟件等工具進(jìn)行逆向分析。被逆向分析后的so文件可以被二次打包,也就是說,應(yīng)用程序仍然得不到保護(hù)。技術(shù)實(shí)現(xiàn)要素:本申請的目的在于提出一種改進(jìn)的用于安卓系統(tǒng)的共享對象文件的加載方法與裝置,來解決以上
背景技術(shù)
:部分提到的技術(shù)問題。一方面,本申請?zhí)峁┝艘环N用于安卓系統(tǒng)的共享對象文件的加載方法,所述方法包括:響應(yīng)于接收到終端發(fā)送的預(yù)處理請求,獲取所述共享對象文件的第一預(yù)定位置的第一原始參數(shù)以及第二預(yù)定位置的第二原始參數(shù);修改所述共享對象文件的所述第一原始參數(shù)與所述第二原始參數(shù)為自定義參數(shù);生成用于隔離所述共享對象文件的隔離文件,所述隔離文件包括用于加載包含所述自定義參數(shù)的共享對象文件的加載函數(shù),所述加載函數(shù)包括用于解析所述自定義參數(shù)的解析函數(shù); 將所述隔離文件的預(yù)定位置的參數(shù)設(shè)置為所述第一原始參數(shù);將包含所述第一原始參數(shù)的隔離文件及包含所述自定義參數(shù)的共享對象文件打包發(fā)送給終端,以使所述終端基于所述隔離文件及所述自定義參數(shù)對所述共享對象文件進(jìn)行加載。第二方面,一種用于安卓系統(tǒng)的共享對象文件的加載方法,所述方法包括向服務(wù)器發(fā)送預(yù)處理請求,以及接收服務(wù)器基于所述預(yù)處理請求返回的包括包含第一原始參數(shù)的隔離文件及包含自定義參數(shù)的共享對象文件的打包文件;加載所述隔離文件至內(nèi)存,所述隔離文件包括用于加載包含自定義參數(shù)的共享對象文件的加載函數(shù),所述加載函數(shù)包括用于解析所述包含自定義參數(shù)的共享對象文件的自定義參數(shù)為所述共享對象文件的原始參數(shù)的解析函數(shù),其中,所述自定義參數(shù)是對所述原始參數(shù)經(jīng)預(yù)定處理后生成的;運(yùn)行所述加載函數(shù),所述加載函數(shù)首先根據(jù)所述解析函數(shù)將所述自定義參數(shù)解析為所述原始參數(shù);其次,所述加載函數(shù)根據(jù)所述原始參數(shù)加載所述共享對象文件至內(nèi)存。第三方面,本申請?zhí)峁┝艘环N用于安卓系統(tǒng)的共享對象文件的加載裝置,所述裝置包括:獲取模塊,配置用于響應(yīng)于接收到終端發(fā)送的預(yù)處理請求,獲取所述共享對象文件的第一預(yù)定位置的第一原始參數(shù)以及第二預(yù)定位置的第二原始參數(shù);配置用于修改所述共享對象文件的所述第一原始參數(shù)與所述第二原始參數(shù)為自定義參數(shù);生成模塊,配置用于生成用于隔離所述共享對象文件的隔離文件,所述隔離文件包括用于加載包含所述自定義參數(shù)的共享對象文件的加載函數(shù),所述加載函數(shù)包括用于解析所述自定義參數(shù)的解析函數(shù);設(shè)置模塊,配置用于將所述隔離文件的預(yù)定位置的參數(shù)設(shè)置為所述第一原始參數(shù)。第四方面,本申請?zhí)峁┝艘环N用于安卓系統(tǒng)的共享對象文件的加載裝置預(yù)處理請求模塊,配置用于向服務(wù)器發(fā)送預(yù)處理請求,以及接收服務(wù)器基于所述預(yù)處理請求返回的包括包含第一原始參數(shù)的隔離文件及包含自定義參數(shù)的共享對象文件的打包文件;加載模塊,配置用于加載所述包含第一原始參數(shù)的隔離文件至內(nèi)存,所述隔離文件包括用于加載所述包含自定義參數(shù)的共享對象文件的加載函數(shù),所述加載函數(shù)包括用于解析所述自定義參數(shù)為所述共享對象文件的原始參數(shù)的 解析函數(shù),其中,所述自定義參數(shù)是對所述原始參數(shù)預(yù)定處理后生成的;運(yùn)行模塊,配置用于運(yùn)行所述加載函數(shù),所述加載函數(shù)首先根據(jù)所述解析函數(shù)將所述自定義參數(shù)解析為所述原始參數(shù);其次,所述加載函數(shù)根據(jù)所述原始參數(shù)加載所述共享對象文件至內(nèi)存。本申請?zhí)峁┑墓蚕韺ο笪募虞d方法與裝置,通過響應(yīng)于接收到終端發(fā)送的預(yù)處理請求,獲取所述共享對象文件的第一預(yù)定位置的第一原始參數(shù)以及第二預(yù)定位置的第二原始參數(shù),接著修改所述共享對象文件的所述第一原始參數(shù)與所述第二原始參數(shù)為自定義參數(shù),然后生成用于隔離所述共享對象文件的隔離文件,所述隔離文件包括用于加載包含所述自定義參數(shù)的共享對象文件的加載函數(shù),所述加載函數(shù)包括用于解析所述自定義參數(shù)的解析函數(shù),接著將所述隔離文件的預(yù)定位置的參數(shù)設(shè)置為所述第一原始參數(shù),最后將包含所述第一原始參數(shù)的隔離文件及包含所述自定義參數(shù)的共享對象文件打包發(fā)送給終端,以使所述終端基于所述隔離文件及所述自定義參數(shù)對所述共享對象文件進(jìn)行加載??梢詫⒐蚕韼煳募蓸?biāo)準(zhǔn)的可執(zhí)行鏈接格式設(shè)置成非標(biāo)準(zhǔn)的可執(zhí)行鏈接格式,使得靜態(tài)反編譯軟件無法對共享庫文件進(jìn)行反編譯及分析;同時(shí)使用隔離文件將該非標(biāo)準(zhǔn)的可執(zhí)行鏈接格式的共享庫文件進(jìn)行隔離,進(jìn)一步提高了共享文件的安全等級,實(shí)現(xiàn)了對基于安卓系統(tǒng)的應(yīng)用的加固保護(hù)。附圖說明通過閱讀參照以下附圖所作的對非限制性實(shí)施例的詳細(xì)描述,本申請的其它特征、目的和優(yōu)點(diǎn)將會變得更明顯:圖1示出了可以應(yīng)用本申請實(shí)施例的示例性系統(tǒng)架構(gòu);圖2是根據(jù)本申請的用于安卓系統(tǒng)的共享對象文件的加載方法的一個(gè)實(shí)施例的示例性流程圖;圖3是根據(jù)本申請的用于安卓系統(tǒng)的共享對象文件的加載方法另一個(gè)實(shí)施例的示例性流程圖;圖4是根據(jù)本申請的用于安卓系統(tǒng)的共享對象文件的加載裝置的一個(gè)實(shí)施例的示例性結(jié)構(gòu)圖;圖5根據(jù)本申請的用于安卓系統(tǒng)的共享對象文件的加載裝置的另一個(gè)實(shí)施例的示例性結(jié)構(gòu)圖;圖6示出了適于用來實(shí)現(xiàn)本申請實(shí)施例的各裝置的計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖。具體實(shí)施方式下面結(jié)合附圖和實(shí)施例對本申請作進(jìn)一步的詳細(xì)說明??梢岳斫獾氖?,此處所描述的具體實(shí)施例僅僅用于解釋相關(guān)發(fā)明,而非對該發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關(guān)發(fā)明相關(guān)的部分。需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本申請。圖1示出了可以應(yīng)用本申請實(shí)施例的示例性系統(tǒng)架構(gòu)100。如圖1所示,系統(tǒng)架構(gòu)100可以包括終端設(shè)備101、102、103、網(wǎng)絡(luò)104和服務(wù)器105。網(wǎng)絡(luò)104用以在終端設(shè)備101、102、103和服務(wù)器105之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)104可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。用戶可以使用終端設(shè)備101、102、103通過網(wǎng)絡(luò)104與服務(wù)器105交互,以方便終端設(shè)備101、102、103向服務(wù)器105上傳對應(yīng)用的預(yù)處理請求,終端設(shè)備101、102、103下載經(jīng)服務(wù)器105預(yù)處理后的打包文件等。用戶可以是應(yīng)用的開發(fā)者,也可是應(yīng)用的使用者。終端設(shè)備101、102、103可以是具有數(shù)據(jù)處理功能的電子設(shè)備。終端設(shè)備101、102、103上可以安裝有安卓操作系統(tǒng),以及基于安卓操作系統(tǒng)開發(fā)的各種客戶端應(yīng)用,例如網(wǎng)頁瀏覽器、郵箱客戶端等以便將未預(yù)處理的共享對象文件上傳至服務(wù)器105進(jìn)行預(yù)處理。終端設(shè)備101、102、103可以是支持網(wǎng)頁瀏覽器以及各種應(yīng)用安裝于其上的各種電子設(shè)備,包括但不限于智能手機(jī)、智能手表、平板電腦、個(gè)人數(shù)字助理、膝上型便攜計(jì)算機(jī)和臺式計(jì)算機(jī)等等。服務(wù)器105可以是提供各種服務(wù)的服務(wù)器。服務(wù)器105可以通過 網(wǎng)絡(luò)104連通其他服務(wù)器對接收到的共享對象文件進(jìn)行預(yù)處理,并向終端設(shè)備101、102、103提供上傳共享對象文件、下載共享對象文件等服務(wù)。需要說明的是,本申請實(shí)施例所提供的用于安卓系統(tǒng)的共享對象文件的加載方法可以由終端設(shè)備101、102、103執(zhí)行,用于安卓系統(tǒng)的共享對象文件的加載裝置也通常設(shè)置于終端設(shè)備101、102、103中。應(yīng)該理解,圖1中的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器的數(shù)目僅僅是示意性的。根據(jù)實(shí)現(xiàn)需要,可以具有任意數(shù)目的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器。請參考圖2,其示出了根據(jù)本申請的用于安卓系統(tǒng)的共享對象文件的加載方法的一個(gè)實(shí)施例的示例性流程200。于安卓系統(tǒng)的共享對象文件的加載方法,包括以下步驟:步驟201,響應(yīng)于接收到終端發(fā)送的預(yù)處理請求,獲取共享對象文件的第一預(yù)定位置的第一原始參數(shù)以及第二預(yù)定位置的第二原始參數(shù)。在本實(shí)施例中,用于安卓系統(tǒng)的共享對象文件的加載方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的服務(wù)器105)可以通過有線連接方式或者無線連接方式從用戶終端(例如圖1所示的終端設(shè)備101、102、103)接收預(yù)處理請求。在接收到的預(yù)處理請求中,包括應(yīng)用的共享對象文件。具體而言,電子設(shè)備可以接收來自用戶終端的一個(gè)應(yīng)用安裝包文件,該安裝包文件中可以包含資源文件和共享對象文件。共享對象文件可以為可執(zhí)行鏈接格式的文件,其擴(kuò)展名為“.so”。在本實(shí)施例中,共享對象文件的格式包括文件頭,程序頭、區(qū)段頭以及各區(qū)段。其中,文件頭位于共享對象文件的最前面,包括文件類型、文件支持的處理器型號以及程序頭和區(qū)段頭開始的地址,即程序代碼及區(qū)段內(nèi)容的入口地址。程序頭、區(qū)段頭包括定位程序代碼及各區(qū)段內(nèi)容的偏移量。各區(qū)段分別存儲類型相同的內(nèi)容,例如存儲代碼的區(qū)段、存儲被初始化數(shù)據(jù)的區(qū)段及存儲未被初始化數(shù)據(jù)的區(qū)段等。上述無線連接方式包括但不限于3g/4g連接、wifi連接、藍(lán)牙連接、wimax連接、zigbee連接、uwb(ultrawideband)連接、以及 其他現(xiàn)在已知或?qū)黹_發(fā)的無線連接方式。在接收到用戶終端的預(yù)處理請求之后,電子設(shè)備從安裝包文件中找到共享對象文件。然后對共享對象文件利用各種處理方法進(jìn)行處理。具體而言,電子設(shè)備首先獲取上述共享對象文件的第一預(yù)定位置的第一原始參數(shù)以及第二預(yù)定位置的第二原始參數(shù)。在本實(shí)施例中,第一預(yù)定位置可以為共享對象文件中任意指定的位置,例如第一預(yù)定位置可以為共享對象文件的擴(kuò)展名。第一原始參數(shù)例如可以為共享對象文件的原始擴(kuò)展名。在本實(shí)施例中,第二預(yù)定位置可以為共享對象文件中任意指定的位置,例如,第二預(yù)定位置可以為共享對象文件中的存放代碼的區(qū)段。第二原始參數(shù)可以為區(qū)段中的代碼。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,獲取共享對象文件的第一預(yù)定位置的第一原始參數(shù)包括獲取共享對象文件的文件頭的原始參數(shù)以及共享對象文件的擴(kuò)展名。也就是說,第一原始參數(shù)可以為共享對象文件的文件頭的原始參數(shù)。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,獲取共享對象文件的第二預(yù)定位置的第二原始參數(shù)包括獲取共享對象文件的區(qū)段頭表與程序頭表的原始參數(shù)。也就是說,第二原始參數(shù)可以為共享對象文件的區(qū)段頭表與程序頭表中的原始參數(shù)。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,在獲取共享對象文件的文件頭的原始參數(shù)以及程序頭表、區(qū)段頭表的原始參數(shù)之前,對共享對象文件進(jìn)行加殼。例如,可以利用常用的加殼工具對原始的共享對象文件進(jìn)行加殼。使得惡意軟件需要對可進(jìn)行破解后才能分析共享對象文件的明文代碼,增加了共享對象文件的安全等級。步驟202,修改共享對象文件的第一原始參數(shù)與第二原始參數(shù)為自定義參數(shù)。電子設(shè)備可以對在步驟201中得到的第一原始參數(shù)與第二原始參數(shù)利用各種加固方法進(jìn)行處理。具體的,在本實(shí)施例中,可以將共享對象文件的第一原始參數(shù)與第二原始參數(shù)進(jìn)行修改,得到自定義參數(shù)。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,首先去掉共享對象文件的文 件頭的原始參數(shù),然后對區(qū)段頭表與程序頭表的原始參數(shù)進(jìn)行預(yù)定處理生成自定義參數(shù)。這里的預(yù)定處理例如可以為對區(qū)段頭表與程序頭表的原始參數(shù)使用各種加密算法進(jìn)行加密。加密算法可以包括但不限于:高級加密標(biāo)準(zhǔn)(advancedencryptionstandard,aes)算法、rsa加密算法、橢圓曲線密碼編碼(ellipticcurvescryptography,ecc)算法、迪菲-赫爾曼(diffie-hellman,dh)算法、安全散列算法(securehashalgorithm,sha)等。將上述對區(qū)段頭表與程序頭表的原始參數(shù)進(jìn)行預(yù)定處理得到的自定義參數(shù)作為上述去掉第一原始參數(shù)后的共享對象文件的文件頭的參數(shù)。共享對象文件的文件頭已經(jīng)變成了自定義文件頭,標(biāo)準(zhǔn)的安卓系統(tǒng)的鏈接器無法加載包含自定義文件頭的共享對象文件。另外,在本實(shí)施例中,還可以對程序頭表以及區(qū)段頭表中的參數(shù)進(jìn)行加密,使得惡意軟件不能直接讀取上述程序頭表及區(qū)段頭表中的內(nèi)容,進(jìn)一步起到了對共享對象文件的保護(hù)作用。另外,可以將包含自定義參數(shù)的共享對象文件的擴(kuò)展名修改后放入該應(yīng)用安裝包中的資源文件夾中,該資源文件夾例如可以為安裝包中的“assets”文件夾。放入資源文件夾“assets”中的包含自定義文件頭的共享對象文件的修改后的擴(kuò)展名例如可以為“.txt”。步驟203,生成用于隔離共享對象文件的隔離文件。在本實(shí)施例中,為了進(jìn)一步保護(hù)共享對象文件,在共享對象文件原來所處的位置處生成用于隔離共享對象文件的隔離文件。由于存放于assets資源文件中的文件不會被編譯器編譯到,可以在上述隔離文件中設(shè)置加載函數(shù),在加載函數(shù)中指定路徑對包含自定義參數(shù)的共享對象文件進(jìn)行訪問。另外,加載函數(shù)包括用于解析自定義參數(shù)的解析函數(shù)。具體的,可以在對區(qū)段頭表與程序頭表的原始參數(shù)進(jìn)行預(yù)定處理的過程中根據(jù)預(yù)定處理的各個(gè)步驟生成解析函數(shù)。解析函數(shù)為上述預(yù)定處理的反過程,可以將上述自定義參數(shù)解析為共享對象文件的程序頭表及區(qū)段頭表的原始參數(shù)。加載函數(shù)可以根據(jù)由解析函數(shù)得到的共享對象文件的程序頭表及 區(qū)段頭表的原始參數(shù),得到程序代碼段及數(shù)據(jù)段等的偏移量。并根據(jù)偏移量將程序代碼及數(shù)據(jù)等讀取到內(nèi)存或緩存中。步驟204,將隔離文件的預(yù)定位置的參數(shù)設(shè)置為第一原始參數(shù)。為了使系統(tǒng)加載器在加載共享對象文件時(shí)首先加載隔離文件,可以將未經(jīng)預(yù)定處理的共享對象文件的文件頭設(shè)置在隔離文件的最前面作為隔離文件的文件頭。同時(shí)將隔離文件的擴(kuò)展名修改為共享對象文件的原始擴(kuò)展名(.so)。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,在將未經(jīng)預(yù)定處理的共享對象文件的文件頭設(shè)置在隔離文件的最前面作為隔離文件的文件頭之后,對隔離文件使用常用的加殼工具對其進(jìn)行加殼。使得惡意軟件在破解隔離文件時(shí),首先需要對隔離文件加的殼進(jìn)行破解,增加了破解隔離文件的難度。步驟205,將包含第一原始參數(shù)的隔離文件及包含自定義參數(shù)的共享對象文件打包發(fā)送給終端,以使終端基于隔離文件及自定義參數(shù)對共享對象文件進(jìn)行加載。終端設(shè)備在加載應(yīng)用安裝包中的共享對象文件即共享庫文件時(shí),實(shí)際加載的是偽裝成共享對象文件的隔離文件。再將隔離文件加載到內(nèi)存后,隔離文件中的加載函數(shù)運(yùn)行,加載函數(shù)將包含自定義參數(shù)的偽裝成資源文件的共享對象文件讀取到內(nèi)存。根據(jù)本申請上述實(shí)施例提供的方法,由于將共享對象文件的格式由標(biāo)準(zhǔn)的可執(zhí)行鏈接格式設(shè)置成了自定義格式,使得靜態(tài)反編譯軟件無法對共享對象文件進(jìn)行編譯分析。同時(shí)該方法還設(shè)置了用于隔離共享對象文件的隔離文件,進(jìn)一步增加了共享對象文件的逆向破解難度。可以對基于安卓系統(tǒng)的應(yīng)用進(jìn)行有效保護(hù)。接下來請參考圖3,其示出了根據(jù)本申請的用于安卓系統(tǒng)的共享對象文件的加載方法另一個(gè)實(shí)施例的示例性流程300。該流程300包括以下步驟:步驟301,向服務(wù)器發(fā)送預(yù)處理請求,以及接收服務(wù)器基于預(yù)處理請求返回的包括包含第一原始參數(shù)的隔離文件及包含自定義參數(shù)的 共享對象文件的打包文件。在本實(shí)施例中,用于安卓系統(tǒng)的共享對象文件的加載方法運(yùn)行于其上的電子設(shè)備(如圖1所示的終端設(shè)備101、102、103)首先可以通過有線連接方式或者無線連接方式向服務(wù)器(如圖1所示的服務(wù)器105)發(fā)送預(yù)處理請求。在發(fā)送的預(yù)處理請求中包括一個(gè)應(yīng)用的共享對象文件。具體而言,電子設(shè)備可以向服務(wù)器發(fā)送一個(gè)應(yīng)用安裝包文件,該安裝包文件中可以包含資源文件和共享對象文件。服務(wù)器對共享對象文件進(jìn)行預(yù)定處理,生成偽裝成資源文件的共享對象文件以及偽裝成共享對象文件的用于隔離偽裝成資源文件的共享對象文件的隔離文件。其中,偽裝成資源文件(例如“assets”文件夾中的文件)的共享對象文件包含自定義參數(shù)的文件頭。隔離文件的文件頭包含共享對象文件的原始文件頭的所有參數(shù)。電子設(shè)備通過有線連接方式或者無線連接方式從服務(wù)器接收對共享對象文件進(jìn)行預(yù)定處理后的應(yīng)用安裝包文件,其中經(jīng)過預(yù)定處理后的應(yīng)用安裝包文件包括打包在一起的包含共享對象文件的原始文件頭的隔離文件及包含自定義文件頭的共享對象文件。步驟302,加載隔離文件至內(nèi)存。在本實(shí)施例中,電子設(shè)備在步驟301中從服務(wù)器得到的隔離文件的格式為標(biāo)準(zhǔn)的共享對象文件的格式。由于被保護(hù)的共享對象文件被偽裝成資源文件存放于資源文件夾中,例如資源文件夾“assets”中。由于資源文件夾“assets”中的文件不會被編譯器編譯,所以隔離文件包括用于加載包含自定義參數(shù)的共享對象文件的加載函數(shù)。在該加載函數(shù)中可以指定路徑對包含自定義參數(shù)的共享對象文件進(jìn)行訪問。另外,加載函數(shù)包括將自定義參數(shù)解析成共享對象文件的原始區(qū)段頭表參數(shù)及程序頭表參數(shù)的解析函數(shù),以獲取共享對象文件中的代碼段、數(shù)據(jù)及參數(shù)的區(qū)段的偏移量。并根據(jù)偏移量將共享對象文件的程序代碼及數(shù)據(jù)等讀取到內(nèi)存或緩存中。在本實(shí)施例中,由于隔離文件具有標(biāo)準(zhǔn)的共享對象文件的格式,所以終端設(shè)備加載器在加載共享對象文件至內(nèi)存時(shí),首先把隔離文件 加載至內(nèi)存或緩存中。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,隔離文件為服務(wù)器使用加殼工具對其進(jìn)行加殼后的隔離文件。另外,在加殼后的隔離文件中預(yù)先設(shè)置了脫殼函數(shù),使得在加載加殼后的隔離文件至內(nèi)存的過程中,脫殼函數(shù)自動運(yùn)行并對加殼后的隔離文件進(jìn)行脫殼。步驟303,運(yùn)行加載函數(shù),加載函數(shù)首先根據(jù)解析函數(shù)將自定義參數(shù)解析為原始參數(shù);其次,加載函數(shù)根據(jù)原始參數(shù)加載共享對象文件至內(nèi)存。在本實(shí)施例中,加載隔離文件至內(nèi)存或緩存之后,運(yùn)行隔離文件中的加載函數(shù)。也即由加載函數(shù)中的指定路徑訪問被偽裝成資源文件的具有自定義參數(shù)的共享對象文件。在本實(shí)施例中,在訪問到具有自定義參數(shù)的共享對象文件之后,加載函數(shù)中的解析函數(shù)首先對自定義參數(shù)進(jìn)行解析,將自定義參數(shù)解析為共享對象文件的程序頭表及區(qū)段頭表的原始的各項(xiàng)參數(shù)。然后,加載函數(shù)根據(jù)程序頭表及各區(qū)段頭表的原始的各項(xiàng)參數(shù)指定的偏移量對共享對象文件中的代碼段、已初始化的數(shù)據(jù)及未初始化的數(shù)據(jù)等的存放位置進(jìn)行定位,并將原共享對象文件中的代碼、已初始化數(shù)據(jù)及未初始化數(shù)據(jù)等讀取到內(nèi)存或緩存中。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,包含自定義參數(shù)的共享對象文件為經(jīng)過加殼函數(shù)加殼后的共享對象文件。加殼后的共享對象文件還包括預(yù)先存儲在其中的脫殼函數(shù),以使得加載函數(shù)加載包含自定義參數(shù)的共享對象文件至內(nèi)存的過程中,脫殼函數(shù)自動運(yùn)行并對加殼后的共享對象文件進(jìn)行脫殼。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,隔離文件還包括與加載函數(shù)預(yù)先綁定的反調(diào)試函數(shù),使得在運(yùn)行加載函數(shù)之前先運(yùn)行反調(diào)試函數(shù)。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,隔離文件還包括與加載函數(shù)預(yù)先綁定的反二次打包函數(shù),使得在運(yùn)行加載函數(shù)之前先運(yùn)行反二次打包函數(shù)。根據(jù)本申請上述實(shí)施例提供的方法,由于在終端加載共享對象文件時(shí)首先加載隔離文件,再由隔離文件加載被偽裝成資源文件的共享 對象文件使得靜態(tài)反編譯軟件無法對共享對象文件進(jìn)行編譯分析。另外,由于隔離文件預(yù)先綁定了反調(diào)試函數(shù)及反二次打包函數(shù),使得惡意軟件及惡意人員無法對共享對象文件進(jìn)行動態(tài)反編譯。使得應(yīng)用得到了有效保護(hù)。請參考圖4,作為對上述圖2所示方法的實(shí)現(xiàn),本申請?zhí)峁┝艘环N用于安卓系統(tǒng)的共享對象文件的加載裝置的一個(gè)實(shí)施例,該裝置具體可以應(yīng)用于各種電子設(shè)備中。進(jìn)一步參考圖4,作為對上述圖2所示方法的實(shí)現(xiàn),本申請?zhí)峁┝艘环N用于安卓系統(tǒng)的共享對象文件的加載裝置的一個(gè)實(shí)施例,具體可以應(yīng)用于各種電子設(shè)備中。如圖4所示,用于安卓系統(tǒng)的共享對象文件的加載裝置400可以包括但不限于:獲取模塊401,修改模塊402,生成模塊403,設(shè)置模塊404以及發(fā)送模塊405。其中,獲取模塊401,配置用于響應(yīng)于接收到終端發(fā)送的預(yù)處理請求,獲取共享對象文件的第一預(yù)定位置的第一原始參數(shù)以及第二預(yù)定位置的第二原始參數(shù)。修改模塊402,配置用于修改共享對象文件的第一原始參數(shù)與第二原始參數(shù)為自定義參數(shù)。生成模塊403,配置用于生成用于隔離共享對象文件的隔離文件,隔離文件包括用于加載包含自定義參數(shù)的共享對象文件的加載函數(shù),加載函數(shù)包括用于解析自定義參數(shù)的解析函數(shù)。設(shè)置模塊404,配置用于將隔離文件的預(yù)定位置的參數(shù)設(shè)置為第一原始參數(shù)。發(fā)送模塊405,配置用于將包含第一原始參數(shù)的隔離文件及包含自定義參數(shù)的共享對象文件打包發(fā)送給終端,以使終端基于隔離文件及自定義參數(shù)對共享對象文件進(jìn)行加載。在本實(shí)施例中,用于安卓系統(tǒng)的共享對象文件的加載裝置400的獲取模塊401可以通過有線連接方式或者無線連接方式從用戶終端(例如圖1所示的終端設(shè)備101、102、103)接收預(yù)處理請求。在接收到的預(yù)處理請求中,包括一個(gè)應(yīng)用的共享對象文件。具體而言,獲取模塊401可以從用戶終端接收來自用戶終端的一個(gè)應(yīng)用安裝包文件,該安裝包文件中可以包含資源文件和共享對象文件。在本實(shí)施例中,發(fā)送模塊405可以通過有線連接方式或者無線連接方式向用戶終端(例如圖1所示的終端設(shè)備101、102、103)發(fā)送對共享對象文件經(jīng)過預(yù)定處理后的應(yīng)用安裝包文件。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,獲取模塊401進(jìn)一步配置用于獲取共享對象文件的文件頭的原始參數(shù)以及共享對象文件的區(qū)段頭表與程序頭表的原始參數(shù)。修改模塊402進(jìn)一步配置用于去掉共享對象文件的文件頭的原始參數(shù),以及將區(qū)段頭表與程序頭表的的原始參數(shù)進(jìn)行預(yù)定處理生成自定義參數(shù)。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,用于安卓系統(tǒng)的共享對象文件的加載裝置400還包括加殼模塊(圖中未畫出)。加殼模塊配置用于在獲取模塊401獲取共享對象文件的原始文件頭參數(shù)及原始程序頭表及區(qū)段頭表的參數(shù)之前,對共享對象文件進(jìn)行加殼。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,加殼模塊進(jìn)一步配置用于在設(shè)置模塊將隔離文件的預(yù)定位置的參數(shù)設(shè)置為共享對象文件的原始文件頭之后,對隔離文件進(jìn)行加殼。本領(lǐng)域技術(shù)人員可以理解,上述用于安卓系統(tǒng)的共享對象文件的加載裝置400還包括一些其他公知結(jié)構(gòu),例如處理器、存儲器等,為了不必要地模糊本公開的實(shí)施例,這些公知的結(jié)構(gòu)在圖4中未示出。請進(jìn)一步參考圖5,作為對上述圖3所示方法的實(shí)現(xiàn),本申請?zhí)峁┝艘环N用于安卓系統(tǒng)的共享對象文件的加載裝置的另一個(gè)實(shí)施例,該裝置具體可以應(yīng)用于各種電子設(shè)備中。如圖5所示,用于安卓系統(tǒng)的共享對象文件的加載裝置500可以包括但不限于:預(yù)處理請求及接收模塊501,加載模塊502,運(yùn)行模塊503。其中,預(yù)處理請求及接收模塊501,配置用于向服務(wù)器發(fā)送預(yù)處理請求,以及接收服務(wù)器基于預(yù)處理請求返回的包括包含原始參數(shù)的隔離文件及包含自定義參數(shù)的共享對象文件的打包文件。加載模塊502,配置用于加載包含原始參數(shù)的隔離文件至內(nèi)存,隔離文件包括用于加載包含自定義參數(shù)的共享對象文件的加載函數(shù),加載函數(shù)包括用于解析自定義參數(shù)為共享對象文件的原始參數(shù)的解析函數(shù),其中,自 定義參數(shù)是對原始參數(shù)預(yù)定處理后生成的。運(yùn)行模塊503,配置用于運(yùn)行加載函數(shù),加載函數(shù)首先根據(jù)解析函數(shù)將自定義參數(shù)解析為原始參數(shù);其次,加載函數(shù)根據(jù)原始參數(shù)加載共享對象文件至內(nèi)存。在本實(shí)施例中,用于安卓系統(tǒng)的共享對象文件的加載裝置500的預(yù)處理請求及接收模塊501可以通過有線連接方式或者無線連接方式向服務(wù)器發(fā)送預(yù)處理請求。在發(fā)送的預(yù)處理請求中,包括一個(gè)應(yīng)用的共享對象文件。具體而言,預(yù)處理請求及接收模塊501可以向服務(wù)器發(fā)送一個(gè)應(yīng)用安裝包文件以及對該應(yīng)用安裝包文件進(jìn)行預(yù)定處理的請求。在該應(yīng)用安裝包文件中可以包含資源文件和共享對象文件。并且,預(yù)處理請求及接收模塊501可以通過有線連接方式或者無線連接方式從服務(wù)器接收經(jīng)過對共享對象文件進(jìn)行預(yù)定處理后的應(yīng)用安裝包文件。經(jīng)過預(yù)定處理后的應(yīng)用安裝包文件包括包含共享對象文件的原始文件頭的隔離文件及包含自定義文件頭的共享對象文件的打包文件,其中,自定義文件頭包括自定義參數(shù)。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,隔離文件為經(jīng)過加殼函數(shù)加殼后的隔離文件,加殼后的隔離文件還包括預(yù)先存儲在其中的脫殼函數(shù);加載模塊502加載隔離文件至內(nèi)存的過程中,脫殼函數(shù)自動運(yùn)行并對加殼后的隔離文件進(jìn)行脫殼;加載模塊502將經(jīng)過脫殼的隔離文件加載到內(nèi)存。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,包含自定義參數(shù)的共享對象文件為經(jīng)過加殼函數(shù)加殼后的共享對象文件,加殼后的共享對象文件還包括預(yù)先存儲在其中的脫殼函數(shù);在運(yùn)行模塊503運(yùn)行時(shí),由加載函數(shù)加載加殼后的共享對象文件至內(nèi)存的過程中,脫殼函數(shù)自動運(yùn)行并對加殼后的共享對象文件進(jìn)行脫殼;加載函數(shù)加載脫殼后的共享對象文件至內(nèi)存。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,隔離文件還包括與加載函數(shù)預(yù)先綁定的反調(diào)試函數(shù),使得在運(yùn)行模塊503運(yùn)行加載函數(shù)之前運(yùn)行反調(diào)試函數(shù)。在本實(shí)施例的一些可選實(shí)現(xiàn)方式中,隔離文件還包括與加載函數(shù)預(yù)先綁定的反二次打包函數(shù),使得在運(yùn)行模塊503運(yùn)行加載函數(shù)之前 運(yùn)行反二次打包函數(shù)。下面參考圖6,其示出了適于用來實(shí)現(xiàn)本申請實(shí)施例的各裝置的計(jì)算機(jī)系統(tǒng)600的結(jié)構(gòu)示意圖。如圖6所示,計(jì)算機(jī)系統(tǒng)600包括中央處理單元(cpu)601,其可以根據(jù)存儲在只讀存儲器(rom)602中的程序或者從存儲部分608加載到隨機(jī)訪問存儲器(ram)603中的程序而執(zhí)行各種適當(dāng)?shù)膭幼骱吞幚?。在ram603中,還存儲有系統(tǒng)600操作所需的各種程序和數(shù)據(jù)。cpu601、rom602以及ram603通過總線604彼此相連。輸入/輸出(i/o)接口605也連接至總線604。以下部件連接至i/o接口605:包括鍵盤、鼠標(biāo)等的輸入部分606;包括諸如陰極射線管(crt)、液晶顯示器(lcd)等以及揚(yáng)聲器等的輸出部分607;包括硬盤等的存儲部分608;以及包括諸如lan卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分609。通信部分609經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動器610也根據(jù)需要連接至i/o接口605??刹鹦督橘|(zhì)611,諸如磁盤、光盤、磁光盤、半導(dǎo)體存儲器等等,根據(jù)需要安裝在驅(qū)動器610上,以便于從其上讀出的計(jì)算機(jī)程序根據(jù)需要被安裝入存儲部分608。特別地,根據(jù)本申請的實(shí)施例,上文參考流程圖描述的過程可以被實(shí)現(xiàn)為計(jì)算機(jī)軟件程序。例如,本申請的實(shí)施例包括一種計(jì)算機(jī)程序產(chǎn)品,其包括有形地包含在機(jī)器可讀介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實(shí)施例中,該計(jì)算機(jī)程序可以通過通信部分609從網(wǎng)絡(luò)上被下載和安裝,和/或從可拆卸介質(zhì)611被安裝。本申請實(shí)施例中所涉及到的模塊可以通過軟件的方式實(shí)現(xiàn),也可以通過硬件的方式來實(shí)現(xiàn)。所描述的模塊也可以設(shè)置在處理器中,例如,可以描述為:一種處理器包括獲取模塊,修改模塊,生成模塊和設(shè)置模塊。其中,這些模塊的名稱在某種情況下并不構(gòu)成對該模塊本身的限定,例如,獲取模塊還可以被描述為“配置用于獲取所述共享對象文件的第一預(yù)定位置的第一原始參數(shù)以及第二預(yù)定位置的第二原 始參數(shù)的模塊”。作為另一方面,本申請還提供了一種非易失性計(jì)算機(jī)存儲介質(zhì),該非易失性計(jì)算機(jī)存儲介質(zhì)可以是上述實(shí)施例中所述裝置中所包含的非易失性計(jì)算機(jī)存儲介質(zhì);也可以是單獨(dú)存在,未裝配入終端或服務(wù)器中的非易失性計(jì)算機(jī)存儲介質(zhì)。上述非易失性計(jì)算機(jī)存儲介質(zhì)存儲有一個(gè)或者多個(gè)程序,當(dāng)所述一個(gè)或者多個(gè)程序被一個(gè)設(shè)備執(zhí)行時(shí),使得所述設(shè)備:?;蛘?,上述非易失性計(jì)算機(jī)存儲介質(zhì)存儲有一個(gè)或者多個(gè)程序,當(dāng)所述一個(gè)或者多個(gè)程序被一個(gè)設(shè)備執(zhí)行時(shí),使得所述設(shè)備:。以上描述僅為本申請的較佳實(shí)施例以及對所運(yùn)用技術(shù)原理的說明。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本申請中所涉及的發(fā)明范圍,并不限于上述技術(shù)特征的特定組合而成的技術(shù)方案,同時(shí)也應(yīng)涵蓋在不脫離所述發(fā)明構(gòu)思的情況下,由上述技術(shù)特征或其等同特征進(jìn)行任意組合而形成的其它技術(shù)方案。例如上述特征與本申請中公開的(但不限于)具有類似功能的技術(shù)特征進(jìn)行互相替換而形成的技術(shù)方案。當(dāng)前第1頁12當(dāng)前第1頁12
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1