專利名稱::應(yīng)用程序處理方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明有關(guān)于一種應(yīng)用程序處理方法,且特別有關(guān)于一種可以對于應(yīng)用程序進行保護的方法。
背景技術(shù):
:在撰寫應(yīng)用程序時,通常先編寫源代碼(SourceCode),并將源代碼進行編譯(Compile),從而形成目標碼(ObjectCode)或是庫(Library)。其中,庫是目標碼的集合。由于一個完整應(yīng)用也許會使用到多個庫,因此在程序編譯的連結(jié)階段中,庫間將會相互進行連結(jié)且改變位置(Relocation)以成為最終的二元影像(BinaryImage)。圖1顯示已知的庫連結(jié)。如圖1所示,源代碼110進行編譯成為庫111之后,可以與庫120與130等進行連結(jié),以成為二元影像140。對于一些開發(fā)業(yè)者而言,其開發(fā)的應(yīng)用程序通常亦是通過庫的方式來釋出給客戶,以提供客戶在開發(fā)業(yè)者所提供的裝置上使用??蛻艨梢詫⑺械膸爝M行連結(jié)之后,成為影像碼并燒入裝置的儲存單元,如只讀存儲器中。必須說明的是,若僅以庫的方式釋出給客戶,客戶將可以非常容易地通過偵錯與反編譯工具將庫解析,從而得知庫的相關(guān)信息。舉例來說,圖2顯示已知存儲器中二元影像中程序執(zhí)行的過程。如圖2所示,程序Func_b是欲保護的應(yīng)用程序,且不希望客戶對于程序Func_b進行任何分析與研究。已知地,當(dāng)程序Func_a主體調(diào)用到程序Func_b時,可以輕易使用偵錯工具找到程序Func_b的進入點,進而研究程序Func_b的撰寫方式。因此,在已知的環(huán)境下,客戶非常容易將相應(yīng)應(yīng)用程序的庫使用在非開發(fā)業(yè)者所提供的裝置或平臺上,使得應(yīng)用程序的智慧財產(chǎn)受到損害。
發(fā)明內(nèi)容有鑒于此,本發(fā)明提供應(yīng)用程序處理方法及系統(tǒng)。本發(fā)明提供一種應(yīng)用程序處理方法。首先,將一應(yīng)用程序編譯為至少一第一目標碼。由第一目標碼取出一連結(jié)信息,使得剩余的第一目標碼成為二元影像。于程序編譯的一連結(jié)階段,提供至少一第二目標碼通過一函式接口與連結(jié)信息和二元影像進行連結(jié)、或于一執(zhí)行階段,通過函式接口接收一存取要求,且相應(yīng)于存取要求通過函式接口依據(jù)連結(jié)信息執(zhí)行二元影像。本發(fā)明另提供一種應(yīng)用程序處理方法。首先,將一應(yīng)用程序編譯為至少一第一目標碼。由第一目標碼取得至少一連結(jié)符號與至少一程序碼位移,且依據(jù)連結(jié)符號與程序碼位移產(chǎn)生一連結(jié)信息表。由第一目標碼取得至少一執(zhí)行碼與至少一常數(shù)數(shù)據(jù),且依據(jù)執(zhí)行碼與常數(shù)數(shù)據(jù)產(chǎn)生二元影像。封裝該連結(jié)信息表與該二元影像,且提供對應(yīng)該封裝的一函式接口,其中該第二目標碼可通過該函式接口連結(jié)已封裝的該連結(jié)信息表與該二元影像。于程序編譯的一連結(jié)階段,至少一第二目標碼通過一函式接口與連結(jié)信息表與二元影像進行連結(jié)。本發(fā)明另提供一種應(yīng)用程序處理方法。首先,于一執(zhí)行階段通過一函式接口接收一存取要求。相應(yīng)于存取要求,通過函式接口存取一安全模塊中的一應(yīng)用程序與二元影像。其中,應(yīng)用程序被編譯為至少一第一目標碼。由第一目標碼取得至少一連結(jié)符號與至少一程序碼位移,且依據(jù)連結(jié)符號與程序碼位移產(chǎn)生連結(jié)信息表。由第一目標碼取得至少一執(zhí)行碼與至少一常數(shù)數(shù)據(jù),且依據(jù)執(zhí)行碼與常數(shù)數(shù)據(jù)產(chǎn)生二元影像。本發(fā)明另提供一種應(yīng)用程序處理系統(tǒng),包括一安全模塊與一函式接口。安全模塊包括相應(yīng)一應(yīng)用程序的一連結(jié)信息表與二元影像。其中應(yīng)用程序系被編譯為至少一第一目標碼。由第一目標碼取得至少一連結(jié)符號與至少一程序碼位移,且依據(jù)連結(jié)符號與程序碼位移產(chǎn)生連結(jié)信息表。由第一目標碼取得至少一執(zhí)行碼與至少一常數(shù)數(shù)據(jù),且依據(jù)執(zhí)行碼與常數(shù)數(shù)據(jù)產(chǎn)生二元影像。于程序編譯的一連結(jié)階段,至少一第二目標碼通過函式接口與該安全模塊中的連結(jié)信息表與二元影像進行連結(jié)。本發(fā)明另提供一種應(yīng)用程序處理系統(tǒng),包括一安全模塊與一函式接口。安全模塊包括相應(yīng)一應(yīng)用程序的一連結(jié)信息表與二元影像。其中應(yīng)用程序被編譯為至少一第一目標碼。由第一目標碼取得至少一連結(jié)符號與至少一程序碼位移,且依據(jù)連結(jié)符號與程序碼位移產(chǎn)生連結(jié)信息表。由第一目標碼取得至少一執(zhí)行碼與至少一常數(shù)數(shù)據(jù),且依據(jù)執(zhí)行碼與常數(shù)數(shù)據(jù)產(chǎn)生二元影像。于一執(zhí)行階段,通過函式接口接收一存取要求,且相應(yīng)于存取要求通過函式接口存取連結(jié)信息表與二元影像。本發(fā)明上述方法可以通過程序碼方式收錄于實體介質(zhì)中。當(dāng)程序碼被機器載入且執(zhí)行時,機器變成用以實行本發(fā)明的裝置。本發(fā)明所述的應(yīng)用程序處理方法及系統(tǒng),可使客戶將無法輕易使用偵錯或反編譯工具來找到程序的進入點,且無法研究程序的撰寫方式,使得應(yīng)用程序的智慧財產(chǎn)受到保護。圖1為一示意圖是顯示已知的庫連結(jié)。圖2為一示意圖是顯示已知存儲器中二元影像中程序執(zhí)行的過程。圖3為一示意圖是顯示依據(jù)本發(fā)明實施例的應(yīng)用程序處理系統(tǒng)。圖4為一流程圖是顯示依據(jù)本發(fā)明實施例的應(yīng)用程序處理方法。圖5為一流程圖是顯示依據(jù)本發(fā)明實施例的應(yīng)用程序連結(jié)方法。圖6為一示意圖是顯示依據(jù)本發(fā)明實施例的庫連結(jié)。圖7為一流程圖是顯示依據(jù)本發(fā)明實施例的應(yīng)用程序存取方法。圖8為一流程圖是顯示依據(jù)本發(fā)明實施例的保護演算法的操作。圖9為一示意圖是顯示依據(jù)本發(fā)明實施例的應(yīng)用程序存取。圖10為一示意圖是顯示依據(jù)本發(fā)明實施例的存儲器中二元影像中程序執(zhí)行的過程。具體實施例方式為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉實施例,并配合所附圖示,詳細說明如下。圖3顯示依據(jù)本發(fā)明實施例的應(yīng)用程序處理系統(tǒng)。依據(jù)本發(fā)明實施例的應(yīng)用程序處理系統(tǒng)300包括一函式接口310與一安全模塊320。函式接口310為一接口,用以提供其他目標碼/庫與安全模塊320于程序編譯的連結(jié)階段進行連結(jié),并于執(zhí)行階段提供相應(yīng)安全模塊320的存取。安全模塊320包括一保護演算法321、一連結(jié)信息表322與一二元影像(BinaryImage)323。保護演算法321用以決定安全模塊320內(nèi)相關(guān)的操作邏輯,其細節(jié)將于后說明。連結(jié)信息表322與二元影像323相應(yīng)于包括源代碼的一應(yīng)用程序。連結(jié)信息表322中記錄相應(yīng)二元影像323的連結(jié)信息。二元影像323中記錄相應(yīng)應(yīng)用程序編譯后的執(zhí)行碼等數(shù)據(jù)。依據(jù)連結(jié)信息表322中記錄的連結(jié)信息方可正確得知二元影像323中相關(guān)符號(Symbol)的地址,并正確執(zhí)行。連結(jié)信息表322與二元影像323的產(chǎn)生方式將于圖4中說明。圖4顯示依據(jù)本發(fā)明實施例的應(yīng)用程序處理方法。如步驟S410,將應(yīng)用程序編譯為至少一目標碼/庫。如步驟S420,由目標碼/庫中取出所有或一部分的連結(jié)信息,如連結(jié)符號與程序碼位移,且依據(jù)連結(jié)信息產(chǎn)生連結(jié)信息表322。在一些實施例中,目標碼可以是一可執(zhí)行可連接格式(ELF,ExecutableandLinkableFormat)文件,且連結(jié)信息表可以包括可執(zhí)行可連接格式文件的一符號表。如步驟S430,依據(jù)剩余的目標碼/庫中的執(zhí)行碼與常數(shù)數(shù)據(jù)產(chǎn)生二元影像323。如步驟S440,將連結(jié)信息表進行加密。必須說明的是,在此實施例中,連結(jié)信息表進行加密。然而,在一些實施例中,可以依據(jù)不同需求決定是否對于連結(jié)信息表進行加密。如步驟S450,將保護演算法321、連結(jié)信息表322與二元影像323封裝于安全模塊320中,并如步驟S460,提供函式接口310,以提供其他目標碼/庫與安全模塊320于程序編譯的連結(jié)階段進行連結(jié),并于執(zhí)行階段提供相應(yīng)安全模塊320的存取。值得注意的是,開發(fā)業(yè)者可以將函式接口310與安全模塊320提供給客戶。對于客戶而言,安全模塊320是一個黑盒子,客戶無法得知安全模塊320內(nèi)部的相關(guān)信息。圖5顯示依據(jù)本發(fā)明實施例的應(yīng)用程序連結(jié)方法。圖6顯示依據(jù)本發(fā)明實施例的庫連結(jié)。請同時參考圖5與圖6。在程序編譯的連結(jié)階段時,如步驟S510,目標碼/庫610與620與函式接口310進行連結(jié),以通過函式接口310與安全模塊320進行連結(jié)。之后,將相應(yīng)其他目標碼/庫的影像文件寫入存儲器,且如步驟S520,將函式接口310與安全模塊320寫入存儲器中的一特定位置,以成為最終二元影像630。圖7顯示依據(jù)本發(fā)明實施例的應(yīng)用程序存取方法。圖9顯示依據(jù)本發(fā)明實施例的應(yīng)用程序存取。請同時參考圖7與圖9。如步驟S710,于執(zhí)行階段通過函式接口310接收一存取要求。注意的是,存取要求可以包括相應(yīng)應(yīng)用程序/二元影像323的至少一符號。相應(yīng)于存取要求,如步驟S720,將連結(jié)信息表322解密。值得注意的是,在此實施例中由于連結(jié)信息表322在建立時經(jīng)過加密處理,因此需要進行解密的動作。在一些實施例中,若連結(jié)信息表322在建立時并未經(jīng)過加密處理,則步驟S720的解密動作可以省略。如步驟S730,保護演算法321依據(jù)連結(jié)信息表322執(zhí)行二元影像323。圖8顯示依據(jù)本發(fā)明實施例的保護演算法的操作。如步驟S731,依據(jù)相應(yīng)應(yīng)用程序/二元影像323的符號由連結(jié)信息表322中檢索相應(yīng)的一地址。如步驟S732,將目前程序計數(shù)器的值存入(Push)堆棧中。如步驟S733,將程序計數(shù)器的值改變?yōu)橄鄳?yīng)二元影像323的位移。必須提醒的是,若二元影像323在存儲器中具有一基本地址時,則相應(yīng)二元影像323的位移必須加上基本地址。如步驟S734,執(zhí)行二元影像323,且得到相應(yīng)的執(zhí)行結(jié)果。之后,如步驟S735,由堆棧中取出(Pop)原先程序計數(shù)器的值。當(dāng)執(zhí)行結(jié)束之后,如步驟S740,通過函式接口310回傳執(zhí)行結(jié)果。相較于圖2,圖10顯示依據(jù)本發(fā)明實施例的存儲器中二元影像中程序執(zhí)行的過程。如圖10所示,程序Func_b是欲保護的應(yīng)用程序,且不希望客戶對于程序Func_b進行任何分析與研究。當(dāng)程序Func_a主體需要使用到Func_b時,其可以利用“Func_b”作為參數(shù)呼叫“getFuncPtrbyAlg()”函式?!癵etFuncPtrbyAlg()”函式便會致使保護演算法321由連結(jié)信息表322中檢索出相應(yīng)程序Func_b的位移與地址,并至相應(yīng)的地址進行執(zhí)行。通過函式接口310與將連結(jié)信息分離的二元影像323,客戶將無法輕易使用偵錯或反編譯工具來找到程序Func_b的進入點,且無法研究程序Func_b的撰寫方式。本發(fā)明的方法,或特定型態(tài)或其部分,可以以程序碼的型態(tài)包含于實體介質(zhì),如軟盤、光盤片、硬盤、或是任何其他機器可讀取(如計算機可讀取)儲存介質(zhì),其中,當(dāng)程序碼被機器,如計算機載入且執(zhí)行時,此機器變成用以實現(xiàn)本發(fā)明的裝置。本發(fā)明的方法與裝置也可以以程序碼型態(tài)通過一些傳送介質(zhì),如電線或電纜、光纖、或是任何傳輸型態(tài)進行傳送,其中,當(dāng)程序碼被機器,如計算機接收、載入且執(zhí)行時,此機器變成用以實現(xiàn)本發(fā)明的裝置。當(dāng)在一般用途處理器操作時,程序碼結(jié)合處理器提供一操作類似于專用邏輯電路的獨特裝置。以上所述僅為本發(fā)明較佳實施例,然其并非用以限定本發(fā)明的范圍,任何熟悉本項技術(shù)的人員,在不脫離本發(fā)明的精神和范圍內(nèi),可在此基礎(chǔ)上做進一步的改進和變化,因此本發(fā)明的保護范圍當(dāng)以本申請的權(quán)利要求書所界定的范圍為準。權(quán)利要求1.一種應(yīng)用程序處理方法,其特征在于,包括下列步驟取得至少一第一目標碼與至少一第二目標碼;由該第一目標碼取得至少一連結(jié)符號與至少一程序碼位移,且依據(jù)該連結(jié)符號與該程序碼位移產(chǎn)生一連結(jié)信息表;由該第一目標碼取得至少一執(zhí)行碼與至少一常數(shù)數(shù)據(jù),且依據(jù)該執(zhí)行碼與該常數(shù)數(shù)據(jù)產(chǎn)生二元影像;以及封裝該連結(jié)信息表與該二元影像,且提供對應(yīng)該封裝的一函式接口,其中該第二目標碼可通過該函式接口連結(jié)已封裝的該連結(jié)信息表與該二元影像。2.根據(jù)權(quán)利要求1所述的應(yīng)用程序處理方法,其特征在于,更包括將該連結(jié)信息表進行加密,并通過該函式接口進行下列步驟將該連結(jié)信息表進行解密;以及依據(jù)該連結(jié)信息表以執(zhí)行該二元影像。3.根據(jù)權(quán)利要求1所述的應(yīng)用程序處理方法,其特征在于,該第一目標碼為一可執(zhí)行可連接格式文件,且該連結(jié)信息表更包括該可執(zhí)行可連接格式文件的一符號表。4.一種應(yīng)用程序處理系統(tǒng),其特征在于,包括一安全模塊,包括相應(yīng)至少一第一目標碼的一連結(jié)信息表與二元影像,其中由該第一目標碼取得至少一連結(jié)符號與至少一程序碼位移,且依據(jù)該連結(jié)符號與該程序碼位移產(chǎn)生該連結(jié)信息表,及由該第一目標碼取得至少一執(zhí)行碼與至少一常數(shù)數(shù)據(jù),且依據(jù)該執(zhí)行碼與該常數(shù)數(shù)據(jù)產(chǎn)生該二元影像;以及一函式接口,用以供至少一第二目標碼與該安全模塊中的該連結(jié)信息表與該二元影像進行連結(jié)。5.根據(jù)權(quán)利要求4所述的應(yīng)用程序處理系統(tǒng),其特征在于,該函式接口接收一存取要求,且相應(yīng)于該存取要求通過該函式接口存取該安全模塊中的該連結(jié)信息表與該二元影像,其中該函式接口依據(jù)該連結(jié)信息表以執(zhí)行該二元影像,該安全模塊更包括一保護演算法,用以由該連結(jié)信息表檢索相應(yīng)該二元影像的一地址,且依據(jù)該地址致使該二元影像被執(zhí)行。6.根據(jù)權(quán)利要求4所述的應(yīng)用程序處理系統(tǒng),其特征在于,該連結(jié)信息表更進行加密,該函式接口解密該連結(jié)信息表,且依據(jù)該連結(jié)信息表以執(zhí)行該二元影像。7.一種應(yīng)用程序處理方法,其特征在于,包括下列步驟通過一函式接口接收一存取要求;以及相應(yīng)于該存取要求通過該函式接口存取一安全模塊中的一應(yīng)用程序與二元影像,其中,該應(yīng)用程序被編譯為至少一第一目標碼,由該第一目標碼取得至少一連結(jié)符號與至少一程序碼位移,且依據(jù)該連結(jié)符號與該程序碼位移產(chǎn)生該連結(jié)信息表,及由該第一目標碼取得至少一執(zhí)行碼與至少一常數(shù)數(shù)據(jù),且依據(jù)該執(zhí)行碼與該常數(shù)數(shù)據(jù)產(chǎn)生該二元影像。8.根據(jù)權(quán)利要求7所述的應(yīng)用程序處理方法,其特征在于,該第一目標碼為一可執(zhí)行可連接格式文件,且該連結(jié)信息表更包括該可執(zhí)行可連接格式文件的一符號表。9.一種應(yīng)用程序處理系統(tǒng),其特征在于,包括一安全模塊,包括相應(yīng)于一應(yīng)用程序的一連結(jié)信息表與二元影像,其中該應(yīng)用程序系被編譯為至少一第一目標碼,由該第一目標碼取得至少一連結(jié)符號與至少一程序碼位移,且依據(jù)該連結(jié)符號與該程序碼位移產(chǎn)生該連結(jié)信息表,及由該第一目標碼取得至少一執(zhí)行碼與至少一常數(shù)數(shù)據(jù),且依據(jù)該執(zhí)行碼與該常數(shù)數(shù)據(jù)產(chǎn)生該二元影像;以及一函式接口,用于接收一存取要求,且相應(yīng)于該存取要求通過該函式接口存取該連結(jié)信息表與該二元影像。10.一種應(yīng)用程序處理方法,其特征在于,包括下列步驟取得至少一第一目標碼;由該第一目標碼取出一連結(jié)信息,使得剩余的該第一目標碼成為二元影像;以及于程序編譯的一連結(jié)階段提供至少一第二目標碼通過一函式接口與該連結(jié)信息和該二元影像進行連結(jié)、或于一執(zhí)行階段通過該函式接口接收一存取要求,且相應(yīng)于該存取要求通過該函式接口依據(jù)該連結(jié)信息執(zhí)行該二元影像。全文摘要一種應(yīng)用程序處理方法及系統(tǒng)。首先,將一應(yīng)用程序編譯為至少一第一目標碼。由第一目標碼取得至少一連結(jié)符號與至少一程序碼位移,且依據(jù)連結(jié)符號與程序碼位移產(chǎn)生一連結(jié)信息表。由第一目標碼取得至少一執(zhí)行碼與至少一常數(shù)數(shù)據(jù),且依據(jù)執(zhí)行碼與常數(shù)數(shù)據(jù)產(chǎn)生二元影像。于程序編譯的一連結(jié)階段提供至少一第二目標碼通過一函式接口與連結(jié)信息表與該二元影像進行連結(jié)。于一執(zhí)行階段通過函式接口接收一存取要求,且相應(yīng)于存取要求通過函式接口依據(jù)連結(jié)信息表執(zhí)行二元影像。本發(fā)明可使客戶將無法輕易使用偵錯或反編譯工具來找到程序的進入點,且無法研究程序的撰寫方式,使得應(yīng)用程序的智慧財產(chǎn)受到保護。文檔編號G06F21/22GK101089816SQ20071014292公開日2007年12月19日申請日期2007年8月9日優(yōu)先權(quán)日2007年8月9日發(fā)明者張文亮,張晏仁申請人:威盛電子股份有限公司