两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

應(yīng)用程序優(yōu)化方法、裝置及系統(tǒng)與流程

文檔序號(hào):11864447閱讀:379來源:國知局
應(yīng)用程序優(yōu)化方法、裝置及系統(tǒng)與流程

本發(fā)明涉及移動(dòng)互聯(lián)網(wǎng)應(yīng)用技術(shù)領(lǐng)域,尤指一種應(yīng)用程序優(yōu)化方法、裝置及系統(tǒng)。



背景技術(shù):

隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的發(fā)展,帶動(dòng)了線上到線下(Online To Offline,O2O)市場的發(fā)展,從而引發(fā)了移動(dòng)應(yīng)用程序(APP)的開發(fā)熱潮。許多開發(fā)人員熱衷于APP逆向工程,他們希望從逆向的角度去優(yōu)化移動(dòng)終端的系統(tǒng)或應(yīng)用,比如,網(wǎng)際操作系統(tǒng)(iOS)或安卓(Android)操作系統(tǒng)。

現(xiàn)有技術(shù)中優(yōu)化應(yīng)用程序的方法有插件應(yīng)用(Logos Tweak,簡稱tweak)方法。其原理如圖1所示,該方法需要在終端設(shè)備的操作系統(tǒng)上安裝一個(gè)tweak插件,可以鉤子(hook)系統(tǒng)的函數(shù)并加入自定義代碼,達(dá)到優(yōu)化系統(tǒng)或應(yīng)用程序的目的。Tweak方式需要以一個(gè)允許第三方開發(fā)者在運(yùn)行時(shí)進(jìn)行代碼替換擴(kuò)展操作系統(tǒng)的框架為基礎(chǔ),比如:MobieSubstrate框架。

該方法需要配置好Logos Tweak的開發(fā)環(huán)境,然后編寫tweak的代碼,代碼的主要內(nèi)容是通過hook鉤住APP的某個(gè)函數(shù)方法,并向其中添加自定義代碼,當(dāng)APP執(zhí)行到這個(gè)方法時(shí),便能按照已添加的代碼來運(yùn)控制程序的運(yùn)行。為了獲得其他APP的函數(shù)入口,需要利用頭文件導(dǎo)出工具(比如class-dump)導(dǎo)出APP的頭文件(.h文件),通過分析并多次嘗試,確定要hook的函數(shù),才能實(shí)現(xiàn)對APP的優(yōu)化。

這種方式需要在操作系統(tǒng)上預(yù)安裝Logos Tweak,這相當(dāng)于是一個(gè)沒有圖標(biāo)的APP,安裝后才能編寫優(yōu)化其他APP,實(shí)現(xiàn)起來比較麻煩;而且這種方式需要對待優(yōu)化的APP進(jìn)行繁瑣的分析,由于目前的移動(dòng)應(yīng)用比較復(fù)雜,包含大量的頭文件從這些頭文件中分析出需要的函數(shù)是一個(gè)耗時(shí)的過程。

由此可見,現(xiàn)有技術(shù)中用于實(shí)現(xiàn)對操作系統(tǒng)中安裝的APP進(jìn)行優(yōu)化的方式,其操作復(fù)雜,需要預(yù)安裝用于優(yōu)化的APP,且優(yōu)化過程中的分析操作繁復(fù),費(fèi)時(shí)費(fèi)力。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供一種應(yīng)用程序優(yōu)化方法、裝置及系統(tǒng),用以解決現(xiàn)有技術(shù)中存在的應(yīng)用程序優(yōu)化時(shí)操作復(fù)雜,分析繁復(fù),費(fèi)時(shí)費(fèi)力的問題。

一方面,本發(fā)明實(shí)施例提供了一種應(yīng)用程序優(yōu)化方法,包括:

應(yīng)用程序優(yōu)化方法,其特征在于,包括:

獲取待優(yōu)化的適用于移動(dòng)終端的應(yīng)用程序安裝包,從所述應(yīng)用程序安裝包中獲取用于應(yīng)用程序安裝的可執(zhí)行文件;

將預(yù)先生成的用于承載自定義代碼工具的動(dòng)態(tài)庫,注入到所述可執(zhí)行文件中;

在所述可執(zhí)行文件中嵌入用于替換原描述文件的新描述文件;

對包含所述動(dòng)態(tài)庫和所述新描述文件的可執(zhí)行文件進(jìn)行重新簽名;

將重新簽名后的可執(zhí)行文件進(jìn)行打包,得到優(yōu)化后的應(yīng)用程序安裝包;所述優(yōu)化后的應(yīng)用程序安裝包用于在移動(dòng)終端上安裝優(yōu)化后的應(yīng)用程序。

在一些可選的實(shí)施例中,所述將預(yù)先生成的用于承載自定義代碼工具的動(dòng)態(tài)庫,注入到所述可執(zhí)行文件中,具體包括:

根據(jù)動(dòng)態(tài)庫的存儲(chǔ)路徑,獲取預(yù)先生成的用于承載自定義代碼工具的動(dòng)態(tài)庫;

根據(jù)可執(zhí)行文件的存儲(chǔ)路徑,使用命令庫中加載類的加載動(dòng)態(tài)庫命令,將獲取的所述動(dòng)態(tài)庫注入到可執(zhí)行文件的存儲(chǔ)路徑下的可執(zhí)行文件中。

在一些可選的實(shí)施例中,在所述可執(zhí)行文件中嵌入用于替換原描述文件的新描述文件,具體包括:

創(chuàng)建包括新開發(fā)證書、可安裝設(shè)備信息、應(yīng)用程序標(biāo)識(shí)APPID的新描述文件;

用創(chuàng)建的新描述文件替換可執(zhí)行文件的存儲(chǔ)路徑下的原描述文件。

在一些可選的實(shí)施例中,對包含所述動(dòng)態(tài)庫和所述新描述文件的可執(zhí)行文件進(jìn)行重新簽名,具體包括:

讀取應(yīng)用程序信息文件,獲取應(yīng)用程序的唯一標(biāo)識(shí)串bundleID和新開發(fā)證書的組標(biāo)識(shí)taemID;

構(gòu)造一個(gè)以應(yīng)用唯一標(biāo)識(shí)application-identifier和開發(fā)團(tuán)隊(duì)標(biāo)識(shí)com.apple.developer.team-identifier為鍵,以bundleID和teamID為值的字典;

將構(gòu)造的字典寫入代碼簽名文件中;

使用簽名命令對代碼簽名文件進(jìn)行重新簽名,完成對可執(zhí)行文件的重新簽名。

在一些可選的實(shí)施例中,在個(gè)人計(jì)算機(jī)上使用集成開發(fā)工具Xcode創(chuàng)建所述動(dòng)態(tài)庫。

本發(fā)明實(shí)施例還提供一種應(yīng)用程序優(yōu)化裝置,包括:

獲取模塊,用于獲取待優(yōu)化的適用于移動(dòng)終端的應(yīng)用程序安裝包,從所述應(yīng)用程序安裝包中獲取用于應(yīng)用程序安裝的可執(zhí)行文件;

注入模塊,用于將預(yù)先生成的用于承載自定義代碼工具的動(dòng)態(tài)庫,注入到所述可執(zhí)行文件中;

替換模塊,用于在所述可執(zhí)行文件中嵌入用于替換原描述文件的新描述文件;

簽名模塊,用于對包含所述動(dòng)態(tài)庫和所述新描述文件的可執(zhí)行文件進(jìn)行重新簽名;

打包模塊,用于將重新簽名后的可執(zhí)行文件進(jìn)行打包,得到優(yōu)化后的應(yīng)用程序安裝包;所述優(yōu)化后的應(yīng)用程序安裝包用于在移動(dòng)終端上安裝優(yōu)化后的應(yīng)用程序。

在一些可選的實(shí)施例中,所述注入模塊,具體用于:

根據(jù)動(dòng)態(tài)庫的存儲(chǔ)路徑,獲取預(yù)先生成的用于承載自定義代碼工具的動(dòng)態(tài)庫;

根據(jù)可執(zhí)行文件的存儲(chǔ)路徑,使用命令庫中加載類的加載動(dòng)態(tài)庫命令,將獲取的所述動(dòng)態(tài)庫注入到可執(zhí)行文件的存儲(chǔ)路徑下的可執(zhí)行文件中。

在一些可選的實(shí)施例中,所述替換模塊,具體用于:

創(chuàng)建包括新開發(fā)證書、可安裝設(shè)備信息、應(yīng)用程序標(biāo)識(shí)APPID的新描述文件;

用創(chuàng)建的新描述文件替換可執(zhí)行文件的存儲(chǔ)路徑下的原描述文件。

在一些可選的實(shí)施例中,所述簽名模塊,具體用于:

讀取應(yīng)用程序信息文件,獲取應(yīng)用程序的唯一標(biāo)識(shí)串bundleID和新開發(fā)證書的組標(biāo)識(shí)taemID;

構(gòu)造一個(gè)以應(yīng)用唯一標(biāo)識(shí)application-identifier和開發(fā)團(tuán)隊(duì)標(biāo)識(shí)com.apple.developer.team-identifier為鍵,以bundleID和teamID為值的字典;

將構(gòu)造的字典寫入代碼簽名文件中;

使用簽名命令對代碼簽名文件進(jìn)行重新簽名,完成對可執(zhí)行文件的重新簽名。

本發(fā)明實(shí)施例還提供一種應(yīng)用程序優(yōu)化系統(tǒng),包括:移動(dòng)終端和個(gè)人計(jì)算機(jī);

所述個(gè)人計(jì)算機(jī)中包括上述的應(yīng)用程序優(yōu)化裝置;

所述移動(dòng)終端,用于安裝所述優(yōu)化后的應(yīng)用程序安裝包。

上述技術(shù)方案具有如下有益效果:對應(yīng)用程序安裝包中的可執(zhí)行文件添加動(dòng)態(tài)庫,并重新嵌入描述文件,重新簽名打包,得到新的應(yīng)用程序安裝包,該方法在不需要在終端設(shè)備操作系統(tǒng)上安裝優(yōu)化APP的情況下,實(shí)現(xiàn)對所要安裝的APP的優(yōu)化,其實(shí)現(xiàn)過程簡單方便,無需對應(yīng)用程序進(jìn)行繁復(fù)的分析操作,省時(shí)省力,通用性強(qiáng)。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是現(xiàn)有技術(shù)中應(yīng)用程序優(yōu)化方法的原理示意圖;

圖2是本發(fā)明實(shí)施例一中應(yīng)用程序優(yōu)化方法的流程圖;

圖3是本發(fā)明實(shí)施例二中應(yīng)用程序優(yōu)化方法的流程圖;

圖4是本發(fā)明實(shí)施例中應(yīng)用程序優(yōu)化系統(tǒng)的結(jié)構(gòu)示意圖;

圖5是本發(fā)明實(shí)施例中應(yīng)用程序優(yōu)化裝置的結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

為了解決現(xiàn)有技術(shù)中存在的應(yīng)用程序優(yōu)化時(shí),需要預(yù)安裝,分析繁復(fù),費(fèi)時(shí)費(fèi)力等問題,本發(fā)明實(shí)施例提供一種應(yīng)用程序優(yōu)化方法,能夠在不預(yù)安裝APP的情況下實(shí)現(xiàn)對應(yīng)用程序的優(yōu)化,且實(shí)現(xiàn)簡單、方便,通用性強(qiáng)。本發(fā)明方法主要包括生成動(dòng)態(tài)庫Dylib、動(dòng)態(tài)庫注入到APP中、在APP中嵌入描述文件(Moibleprovision)、對APP重新簽名和打包成新的安裝包,比如蘋果應(yīng)用程序文件(iPhoneApplication,IPA)等幾個(gè)處理步驟。下面通過具體的實(shí)施例進(jìn)行詳細(xì)描述。

實(shí)施例一

本發(fā)明實(shí)施例一提供的應(yīng)用程序優(yōu)化方法,其流程如圖2所示,包括如下步驟:

步驟S101:獲取待優(yōu)化的適用于移動(dòng)終端的應(yīng)用程序安裝包。

獲取待優(yōu)化的應(yīng)用程序安裝包,對獲取的應(yīng)用程序安裝包進(jìn)行轉(zhuǎn)換或解壓,比如IPA包,是一個(gè)以ipa為后綴名的文件,實(shí)際上一個(gè)壓縮包(zip包),可以將其轉(zhuǎn)換成zip并解壓,以便得到其中包含的可執(zhí)行文件,轉(zhuǎn)換或解壓失敗流程將被終止。

步驟S102:從應(yīng)用程序安裝包中獲取用于應(yīng)用程序安裝的可執(zhí)行文件。

從應(yīng)用程序安裝包解壓后的文件夾中獲取出可執(zhí)行文件。

步驟S103:將預(yù)先生成的用于承載自定義代碼工具的動(dòng)態(tài)庫,注入到可執(zhí)行文件中。

動(dòng)態(tài)庫可以在個(gè)人計(jì)算機(jī)上預(yù)先生成,動(dòng)態(tài)庫(Dylib)是用來承載自定義代碼的工具,需要在Mac OS X平臺(tái)的集成開發(fā)工具(Xcode)中編碼并生成。使用Xcode創(chuàng)建動(dòng)態(tài)庫Dylib,點(diǎn)擊文件新項(xiàng)目(File-new-Project)命令便能創(chuàng)建Dylib類型的程序文件。生成Dylib后,需要將Dylib注入到應(yīng)用程序的可執(zhí)行文件中,使得在應(yīng)用程序運(yùn)行過程中能夠調(diào)用Dylib。

在可執(zhí)行文件中注入動(dòng)態(tài)庫時(shí),從動(dòng)態(tài)庫的存儲(chǔ)路徑中獲取預(yù)先生成的動(dòng)態(tài)庫,將其注入到可執(zhí)行文件存儲(chǔ)路徑下存儲(chǔ)的可執(zhí)行文件中,可以使用命令庫中加載類的加載動(dòng)態(tài)庫命令實(shí)現(xiàn)。

步驟S104:在可執(zhí)行文件中嵌入用于替換原描述文件的新描述文件。

為了能夠讓移動(dòng)終端安裝應(yīng)用程序,需要將新的描述文件嵌入到應(yīng)用程序中。此時(shí),創(chuàng)建包括新開發(fā)證書、可安裝設(shè)備信息、應(yīng)用程序標(biāo)識(shí)(APP ID)的新描述文件,用創(chuàng)建的新描述文件替換可執(zhí)行文件的存儲(chǔ)路徑下的原描述文件,實(shí)現(xiàn)將新的描述書文件嵌入到應(yīng)用程序中。

步驟S105:對包含動(dòng)態(tài)庫和新描述文件的可執(zhí)行文件進(jìn)行重新簽名。

為了與嵌入的描述文件相對應(yīng),應(yīng)該對應(yīng)用程序重新簽名,需要一份新的證書和生成新的代碼簽名文件(application-identifier entitlements)。若是企業(yè)版開發(fā)證書,則該應(yīng)用程序可在所有移動(dòng)終端上都能安裝。

步驟S106:將重新簽名后的可執(zhí)行文件進(jìn)行打包,得到優(yōu)化后的應(yīng)用程序安裝包。其中,優(yōu)化后的應(yīng)用程序安裝包用于在移動(dòng)終端上安裝優(yōu)化后的應(yīng)用程序。

使用文件壓縮(比如zip)命令,將應(yīng)用程序文件夾進(jìn)行壓縮,將其壓縮成新的安裝包,比如IPA格式的新的安裝包。應(yīng)用程序文件夾中可以包括新的執(zhí)行文件和從應(yīng)用程序安裝包中解壓出的其他文件。

實(shí)施例二

本發(fā)明實(shí)施例二提供上述應(yīng)用程序優(yōu)化的一種具體實(shí)現(xiàn)方法,其流程如圖3所示,包括如下步驟:

步驟S201:獲取待優(yōu)化的適用于移動(dòng)終端的應(yīng)用程序安裝包。

步驟S202:對應(yīng)用程序安裝包進(jìn)行轉(zhuǎn)化和解壓。

應(yīng)用程序安裝包一般是一個(gè)壓縮后的文件,將壓縮文件進(jìn)行轉(zhuǎn)化和解壓后可以得到應(yīng)用程序的安裝文件。

步驟S203:獲取應(yīng)用程序安裝包中的可執(zhí)行文件。

從解壓后的應(yīng)用程序安裝文件夾中獲取其中的可執(zhí)行文件進(jìn)行后續(xù)優(yōu)化處理。

步驟S204:根據(jù)動(dòng)態(tài)庫的存儲(chǔ)路徑,獲取預(yù)先生成的用于承載自定義代碼工具的動(dòng)態(tài)庫。

步驟S205:根據(jù)可執(zhí)行文件的存儲(chǔ)路徑,使用命令庫中加載類的加載動(dòng)態(tài)庫命令,將獲取的動(dòng)態(tài)庫注入到可執(zhí)行文件的存儲(chǔ)路徑下的可執(zhí)行文件中。

將動(dòng)態(tài)庫Dylib注入到可執(zhí)行文件中,這個(gè)過程使用到命令庫(mach-o)框架中加載(loader)類的LC_LOAD_DYLIB和LC_LOAD_WEAK_DYLIB這兩個(gè)加載命令。注入成功之后,在個(gè)人計(jì)算機(jī)或移動(dòng)終端上進(jìn)入APP目錄中使用查看應(yīng)用程序安裝包動(dòng)態(tài)庫列表命令(otool-L)可以看到可執(zhí)行文件已經(jīng)包含了生成的Dylib文件。如果注入失敗,流程也會(huì)被終止。

其中,LC_LOAD_WEAK_DYLIB為加載指定動(dòng)態(tài)庫命令,如沒有找到,會(huì)立即停止程序;LC_LOAD_WEAK_DYLIB:加載指定動(dòng)態(tài)庫命令(可選),如沒有找到,也會(huì)繼續(xù)運(yùn)行。

步驟S204-步驟205實(shí)現(xiàn)將預(yù)先生成的用于承載自定義代碼工具的動(dòng)態(tài)庫,注入到可執(zhí)行文件中。

步驟S206:創(chuàng)建包括新開發(fā)證書、可安裝設(shè)備信息、應(yīng)用程序標(biāo)識(shí)APPID的新描述文件。

描述文件是應(yīng)用程序開發(fā)必須具備的一個(gè)文件,其中包含對于開發(fā)證書、可安裝設(shè)備和APPID的描述。因此生成新的描述文件時(shí),也需要包含這些信息,生成的新的描述文件可以存儲(chǔ)在開發(fā)者中心或其他指定的存儲(chǔ)位置。

步驟S207:用創(chuàng)建的新描述文件替換可執(zhí)行文件的存儲(chǔ)路徑下的原描述文件。

從開發(fā)者中心或其他指定的存儲(chǔ)位置下載描述文件,然后將該描述文件替換APP目錄下的描述文件(比如embedded.mobileprovision文件)。

步驟S206-步驟207實(shí)現(xiàn)在可執(zhí)行文件中嵌入用于替換原描述文件的新描述文件。

步驟S208:讀取應(yīng)用程序信息文件,獲取應(yīng)用程序的唯一標(biāo)識(shí)串(bundleID)和新開發(fā)證書的組標(biāo)識(shí)(taemID)。

對應(yīng)用程序進(jìn)行重新簽名也是優(yōu)化所必需的,通過讀取應(yīng)用程序信息文件,比如Info.plist文件,可以獲得APP的唯一標(biāo)識(shí)串(bundleID),獲取新證書的teamID,以便更新應(yīng)用程序的這些信息,使優(yōu)化的程序文件可用。

步驟S209:構(gòu)造一個(gè)以應(yīng)用唯一標(biāo)識(shí)(application-identifier)和開發(fā)團(tuán)隊(duì)標(biāo)識(shí)(com.apple.developer.team-identifier)為鍵,以bundleID和teamID為值的字典。

上述bundleID其實(shí)是應(yīng)用唯一標(biāo)識(shí)的一個(gè)具體的標(biāo)識(shí)符,teamID其實(shí)是是開發(fā)團(tuán)隊(duì)標(biāo)識(shí)的一個(gè)具體的標(biāo)識(shí)符。例如:在一個(gè)代碼簽名文件中,是這樣表示的:

application-identifier:bundleID

com.apple.developer.team-identifier:teamID

步驟S210:將構(gòu)造的字典寫入代碼簽名文件中。

步驟S211:使用簽名命令對代碼簽名文件進(jìn)行重新簽名,完成對可執(zhí)行文件的重新簽名。

通過對可執(zhí)行文件的重新簽名實(shí)現(xiàn)對應(yīng)用程序的重新簽名。使用簽名命令,比如codesign命令,對APP重新簽名。

步驟S212:將重新簽名后的可執(zhí)行文件與從應(yīng)用程序安裝包中解壓出的其他文件一起進(jìn)行轉(zhuǎn)化和壓縮,得到優(yōu)化后的應(yīng)用程序安裝包。

重新簽名應(yīng)用程序安裝文件中包含的可執(zhí)行文件后,將之前解壓得到的應(yīng)用程序文件夾壓縮成新的安裝包,比如IPA格式的安裝包。例如:可以通過輸入zip-qr命令來實(shí)現(xiàn)輸出新的應(yīng)用程序安裝包。

基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供一種應(yīng)用程序優(yōu)化系統(tǒng),其結(jié)構(gòu)如圖4所示,包括:移動(dòng)終端401和個(gè)人計(jì)算機(jī)402。移動(dòng)終端401和個(gè)人計(jì)算機(jī)403均可以設(shè)置不止一個(gè),可以根據(jù)需要設(shè)置多個(gè)。

移動(dòng)終端401,用于安裝優(yōu)化后的應(yīng)用程序安裝包。

個(gè)人計(jì)算機(jī)402中包括應(yīng)用程序優(yōu)化裝置403,用于獲取待優(yōu)化的適用于移動(dòng)終端的應(yīng)用程序安裝包,從所述應(yīng)用程序安裝包中獲取用于應(yīng)用程序安裝的可執(zhí)行文件;將預(yù)先生成的用于承載自定義代碼工具的動(dòng)態(tài)庫,注入到所述可執(zhí)行文件中;在所述可執(zhí)行文件中嵌入用于替換原描述文件的新描述文件;對包含所述動(dòng)態(tài)庫和所述新描述文件的可執(zhí)行文件進(jìn)行重新簽名;將重新簽名后的可執(zhí)行文件進(jìn)行打包,得到優(yōu)化后的應(yīng)用程序安裝包;所述優(yōu)化后的應(yīng)用程序安裝包用于在移動(dòng)終端上安裝優(yōu)化后的應(yīng)用程序。

優(yōu)選的,上述個(gè)人計(jì)算機(jī)402,具體用于根據(jù)動(dòng)態(tài)庫的存儲(chǔ)路徑,獲取預(yù)先生成的用于承載自定義代碼工具的動(dòng)態(tài)庫;根據(jù)可執(zhí)行文件的存儲(chǔ)路徑,使用命令庫中加載類的加載動(dòng)態(tài)庫命令,將獲取的動(dòng)態(tài)庫注入到可執(zhí)行文件的存儲(chǔ)路徑下的可執(zhí)行文件中。

優(yōu)選的,上述個(gè)人計(jì)算機(jī)402,具體用于創(chuàng)建包括新開發(fā)證書、可安裝設(shè)備信息、應(yīng)用程序標(biāo)識(shí)APPID的新描述文件;用創(chuàng)建的新描述文件替換可執(zhí)行文件的存儲(chǔ)路徑下的原描述文件。

優(yōu)選的,上述個(gè)人計(jì)算機(jī)402,具體用于讀取應(yīng)用程序信息文件,獲取應(yīng)用程序的唯一標(biāo)識(shí)串bundleID和新開發(fā)證書的組標(biāo)識(shí)taemID;構(gòu)造一個(gè)以application-identifier和com.apple.developer.team-identifier為鍵,以bundleID和teamID為值的字典;將構(gòu)造的字典寫入代碼簽名文件中;使用簽名命令對代碼簽名文件進(jìn)行重新簽名,完成對可執(zhí)行文件的重新簽名。

優(yōu)選的,上述個(gè)人計(jì)算機(jī)402,具體用于使用Xcode創(chuàng)建所述動(dòng)態(tài)庫。

上述應(yīng)用程序優(yōu)化裝置,其結(jié)構(gòu)如圖5所示,包括:獲取模塊501、注入模塊502、替換模塊503、簽名模塊504和打包模塊505。

獲取模塊501,用于獲取待優(yōu)化的適用于移動(dòng)終端的應(yīng)用程序安裝包,從應(yīng)用程序安裝包中獲取用于應(yīng)用程序安裝的可執(zhí)行文件。

注入模塊502,用于將預(yù)先生成的用于承載自定義代碼工具的動(dòng)態(tài)庫,注入到可執(zhí)行文件中。

替換模塊503,用于在可執(zhí)行文件中嵌入用于替換原描述文件的新描述文件。

簽名模塊504,用于對包含所述動(dòng)態(tài)庫和所述新描述文件的可執(zhí)行文件進(jìn)行重新簽名。

打包模塊505,用于將重新簽名后的可執(zhí)行文件進(jìn)行打包,得到優(yōu)化后的應(yīng)用程序安裝包;其中,優(yōu)化后的應(yīng)用程序安裝包用于在移動(dòng)終端上安裝優(yōu)化后的應(yīng)用程序。

優(yōu)選的,上述注入模塊502,具體用于根據(jù)動(dòng)態(tài)庫的存儲(chǔ)路徑,獲取預(yù)先生成的用于承載自定義代碼工具的動(dòng)態(tài)庫;根據(jù)可執(zhí)行文件的存儲(chǔ)路徑,使用命令庫中加載類的加載動(dòng)態(tài)庫命令,將獲取的所述動(dòng)態(tài)庫注入到可執(zhí)行文件的存儲(chǔ)路徑下的可執(zhí)行文件中。

優(yōu)選的,上述替換模塊503,具體用于創(chuàng)建包括新開發(fā)證書、可安裝設(shè)備信息、應(yīng)用程序標(biāo)識(shí)APPID的新描述文件;用創(chuàng)建的新描述文件替換可執(zhí)行文件的存儲(chǔ)路徑下的原描述文件。

優(yōu)選的,上述簽名模504塊,具體用于讀取應(yīng)用程序信息文件,獲取應(yīng)用程序的唯一標(biāo)識(shí)串bundleID和新開發(fā)證書的組標(biāo)識(shí)taemID;構(gòu)造一個(gè)以application-identifier和com.apple.developer.team-identifier為鍵,以bundleID和teamID為值的字典;將構(gòu)造的字典寫入代碼簽名文件中;使用簽名命令對代碼簽名文件進(jìn)行重新簽名,完成對可執(zhí)行文件的重新簽名。

本發(fā)明實(shí)施例提供的上述應(yīng)用程序優(yōu)化方法、系統(tǒng)及裝置,對于適用于網(wǎng)際操作系統(tǒng)(IOS)系統(tǒng)的應(yīng)用程序優(yōu)化而言,通過自定義一個(gè)類似于小型APP的動(dòng)態(tài)庫,使用蘋果開發(fā)語言(Obiective-C)編寫,可以擴(kuò)展網(wǎng)際操作系統(tǒng)軟件開發(fā)工具包(iOS SDK)的控件來注入自定義代碼。除了需要手動(dòng)配置一些參數(shù),包括編寫動(dòng)態(tài)庫、導(dǎo)入、重新簽名、打包在內(nèi)的整個(gè)方法流程都可以在計(jì)算機(jī)操作系統(tǒng),比如蘋果電腦系統(tǒng)(MAC)環(huán)境下使用XCODE編譯后一鍵完成,無需依賴其他集成開發(fā)環(huán)境(IDE)和反編譯工具。

上述方法由于采用了動(dòng)態(tài)庫Dylib,自定義程度高;采用了命令庫(mach-o)框架中的加載動(dòng)態(tài)庫等命令,方便注入動(dòng)態(tài)庫;由于將動(dòng)態(tài)庫注入、嵌入新的描述證書、重新簽名和打包安裝包四大功能實(shí)現(xiàn)為計(jì)算機(jī)操作系統(tǒng),比如蘋果電腦系統(tǒng)(MAC OS X)下的一個(gè)自動(dòng)化工具,只要選擇好各文件即可一步生成新的安裝包,簡化了人工操作。該方法不需要在移動(dòng)終端上預(yù)安裝應(yīng)用程序,即可實(shí)現(xiàn)對移動(dòng)終端上的應(yīng)用程序優(yōu)化,也避免了繁瑣的分析步驟,簡化了操作,提高了速度和效率。

本領(lǐng)域技術(shù)人員還可以了解到本發(fā)明實(shí)施例列出的各種說明性邏輯塊(illustrative logical block),單元,和步驟可以通過電子硬件、電腦軟件,或兩者的結(jié)合進(jìn)行實(shí)現(xiàn)。為清楚展示硬件和軟件的可替換性(interchangeability),上述的各種說明性部件(illustrative components),單元和步驟已經(jīng)通用地描述了它們的功能。這樣的功能是通過硬件還是軟件來實(shí)現(xiàn)取決于特定的應(yīng)用和整個(gè)系統(tǒng)的設(shè)計(jì)要求。本領(lǐng)域技術(shù)人員可以對于每種特定的應(yīng)用,可以使用各種方法實(shí)現(xiàn)所述的功能,但這種實(shí)現(xiàn)不應(yīng)被理解為超出本發(fā)明實(shí)施例保護(hù)的范圍。

本發(fā)明實(shí)施例中所描述的各種說明性的邏輯塊,或單元都可以通過通用處理器,數(shù)字信號(hào)處理器,專用集成電路(ASIC),現(xiàn)場可編程門陣列或其它可編程邏輯裝置,離散門或晶體管邏輯,離散硬件部件,或上述任何組合的設(shè)計(jì)來實(shí)現(xiàn)或操作所描述的功能。通用處理器可以為微處理器,可選地,該通用處理器也可以為任何傳統(tǒng)的處理器、控制器、微控制器或狀態(tài)機(jī)。處理器也可以通過計(jì)算裝置的組合來實(shí)現(xiàn),例如數(shù)字信號(hào)處理器和微處理器,多個(gè)微處理器,一個(gè)或多個(gè)微處理器聯(lián)合一個(gè)數(shù)字信號(hào)處理器核,或任何其它類似的配置來實(shí)現(xiàn)。

本發(fā)明實(shí)施例中所描述的方法或算法的步驟可以直接嵌入硬件、處理器執(zhí)行的軟件模塊、或者這兩者的結(jié)合。軟件模塊可以存儲(chǔ)于RAM存儲(chǔ)器、閃存、ROM存儲(chǔ)器、EPROM存儲(chǔ)器、EEPROM存儲(chǔ)器、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM或本領(lǐng)域中其它任意形式的存儲(chǔ)媒介中。示例性地,存儲(chǔ)媒介可以與處理器連接,以使得處理器可以從存儲(chǔ)媒介中讀取信息,并可以向存儲(chǔ)媒介存寫信息。可選地,存儲(chǔ)媒介還可以集成到處理器中。處理器和存儲(chǔ)媒介可以設(shè)置于ASIC中,ASIC可以設(shè)置于用戶終端中??蛇x地,處理器和存儲(chǔ)媒介也可以設(shè)置于用戶終端中的不同的部件中。

在一個(gè)或多個(gè)示例性的設(shè)計(jì)中,本發(fā)明實(shí)施例所描述的上述功能可以在硬件、軟件、固件或這三者的任意組合來實(shí)現(xiàn)。如果在軟件中實(shí)現(xiàn),這些功能可以存儲(chǔ)與電腦可讀的媒介上,或以一個(gè)或多個(gè)指令或代碼形式傳輸于電腦可讀的媒介上。電腦可讀媒介包括電腦存儲(chǔ)媒介和便于使得讓電腦程序從一個(gè)地方轉(zhuǎn)移到其它地方的通信媒介。存儲(chǔ)媒介可以是任何通用或特殊電腦可以接入訪問的可用媒體。例如,這樣的電腦可讀媒體可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盤存儲(chǔ)、磁盤存儲(chǔ)或其它磁性存儲(chǔ)裝置,或其它任何可以用于承載或存儲(chǔ)以指令或數(shù)據(jù)結(jié)構(gòu)和其它可被通用或特殊電腦、或通用或特殊處理器讀取形式的程序代碼的媒介。此外,任何連接都可以被適當(dāng)?shù)囟x為電腦可讀媒介,例如,如果軟件是從一個(gè)網(wǎng)站站點(diǎn)、服務(wù)器或其它遠(yuǎn)程資源通過一個(gè)同軸電纜、光纖電纜、雙絞線、數(shù)字用戶線(DSL)或以例如紅外、無線和微波等無線方式傳輸?shù)囊脖话谒x的電腦可讀媒介中。所述的碟片(disk)和磁盤(disc)包括壓縮磁盤、鐳射盤、光盤、DVD、軟盤和藍(lán)光光盤,磁盤通常以磁性復(fù)制數(shù)據(jù),而碟片通常以激光進(jìn)行光學(xué)復(fù)制數(shù)據(jù)。上述的組合也可以包含在電腦可讀媒介中。

以上所述的具體實(shí)施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施方式而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
广水市| 新乡县| 务川| 大化| 吉木乃县| 夹江县| 宁陕县| 东城区| 阿拉善右旗| 永登县| 新津县| 岳普湖县| 高邑县| 乌拉特前旗| 图木舒克市| 呼图壁县| 南部县| 民权县| 广饶县| 横峰县| 双鸭山市| 彩票| 红河县| 南安市| 轮台县| 华宁县| 米林县| 梁山县| 庆城县| 阿克苏市| 黄骅市| 县级市| 巩留县| 沽源县| 密山市| 桓台县| 中西区| 平利县| 营口市| 长沙县| 安徽省|