[發(fā)明專利]一種靜態(tài)庫(kù)的生成方法以及設(shè)備在審
| 申請(qǐng)?zhí)枺?/td> | 201610721491.8 | 申請(qǐng)日: | 2016-08-24 |
| 公開(kāi)(公告)號(hào): | CN108304187A | 公開(kāi)(公告)日: | 2018-07-20 |
| 發(fā)明(設(shè)計(jì))人: | 邱寅峰 | 申請(qǐng)(專利權(quán))人: | 北京花甲科技有限公司 |
| 主分類號(hào): | G06F8/41 | 分類號(hào): | G06F8/41;G06F8/53 |
| 代理公司: | 北京博雅睿泉專利代理事務(wù)所(特殊普通合伙) 11442 | 代理人: | 馬佑平 |
| 地址: | 100084 北京市海淀區(qū)*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 靜態(tài)庫(kù) 對(duì)象文件 中間代碼 源代碼 函數(shù)信息 全程序 鏈接 編譯 泄露 視角 保留 安全 | ||
本發(fā)明公開(kāi)了一種靜態(tài)庫(kù)生成方法及設(shè)備。該方法包括:編譯源代碼,獲得對(duì)應(yīng)的初步對(duì)象文件和初步中間代碼;鏈接多個(gè)初步對(duì)象文件以及對(duì)應(yīng)的初步中間代碼,生成不包含函數(shù)信息的目標(biāo)中間代碼。根據(jù)本發(fā)明,可以使得靜態(tài)庫(kù)中為提供“全程序視角”保留的對(duì)象文件之間接口不會(huì)泄露靜態(tài)庫(kù)的實(shí)現(xiàn)細(xì)節(jié)。規(guī)避相應(yīng)的安全風(fēng)險(xiǎn)和商業(yè)風(fēng)險(xiǎn)。
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,更具體地,涉及一種靜態(tài)庫(kù)的生成方法及設(shè)備。
背景技術(shù)
現(xiàn)有技術(shù)中,軟件開(kāi)發(fā)者們可以根據(jù)自身軟件開(kāi)發(fā)的需求,通過(guò)互聯(lián)網(wǎng)下載或者其他軟件開(kāi)發(fā)者或者廠商的提供的SDK(Software Development Kit,軟件開(kāi)發(fā)工具包),將這些SDK包含或集成到自身開(kāi)發(fā)的軟件中,輔助開(kāi)發(fā)和運(yùn)行。
而對(duì)于提供SDK的軟件開(kāi)發(fā)者,通常發(fā)布的SDK中大多都包含靜態(tài)庫(kù)(又稱靜態(tài)鏈接文件,例如.a文件),使得獲取SDK的第三方的軟件開(kāi)發(fā)者們,可以在軟件開(kāi)發(fā)過(guò)程中在代碼鏈接階段將靜態(tài)庫(kù)鏈接到軟件應(yīng)用中,輔助軟件的開(kāi)發(fā)。通常這些靜態(tài)庫(kù)由多個(gè)由源代碼文件(例如c/c++源碼文件)編譯而成的對(duì)象文件(例如.o文件)打包或者壓縮而成。
但發(fā)明人發(fā)現(xiàn),現(xiàn)有技術(shù)中,至少存在這樣一個(gè)問(wèn)題:作為SDK的發(fā)布者,提供靜態(tài)庫(kù)時(shí),需要保留靜態(tài)庫(kù)中各個(gè)對(duì)象文件之間的接口,使得獲取SDK的其他第三方開(kāi)發(fā)者在將SDK中包含的靜態(tài)庫(kù)鏈接到自己開(kāi)發(fā)的代碼時(shí),可以通過(guò)各個(gè)對(duì)象文件之間的接口獲取“全程序視角”進(jìn)而在代碼編譯階段進(jìn)行優(yōu)化等,但是,一般在默認(rèn)情況下,各個(gè)對(duì)象文件之間的接口都是各個(gè)對(duì)象文件包含函數(shù)的函數(shù)名,而只要是一個(gè)良好的程序,本領(lǐng)域技術(shù)人員讀取函數(shù)名就可以直接知道函數(shù)的實(shí)現(xiàn)原理,這就有可能導(dǎo)致發(fā)布SDK時(shí)泄漏靜態(tài)庫(kù)的實(shí)現(xiàn)細(xì)節(jié),帶來(lái)安全風(fēng)險(xiǎn)和商業(yè)風(fēng)險(xiǎn)。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的是提供一種用于生成靜態(tài)庫(kù)的新技術(shù)方案。
根據(jù)本發(fā)明的第一方面,提供了一種靜態(tài)庫(kù)的生成方法,包括:
編譯源代碼,獲得對(duì)應(yīng)的初步對(duì)象文件和初步中間代碼;
鏈接多個(gè)所述初步對(duì)象文件時(shí),鏈接對(duì)應(yīng)的所述初步中間代碼,生成不包含函數(shù)信息的目標(biāo)中間代碼,所述函數(shù)信息是用于識(shí)別所述目標(biāo)中間代碼對(duì)應(yīng)的多個(gè)所述初步對(duì)象文件中包含的函數(shù)的實(shí)現(xiàn)原理的信息。
在一個(gè)實(shí)施例中,所述初步中間代碼包含在對(duì)應(yīng)的所述初步對(duì)象文件中。
在另一個(gè)實(shí)施例中,所述鏈接多個(gè)所述初步對(duì)象文件時(shí),鏈接對(duì)應(yīng)的所述初步中間代碼,生成目標(biāo)中間代碼的步驟,包括:鏈接多個(gè)所述初步中間代碼,生成臨時(shí)中間代碼;清除和/或混淆所述臨時(shí)中間代碼中的所述函數(shù)信息,生成所述目標(biāo)中間代碼。
在又一個(gè)實(shí)施例中,所述混淆所述臨時(shí)中間代碼中的所述函數(shù)信息的步驟,還包括:通過(guò)無(wú)意義符號(hào)混淆所述臨時(shí)中間代碼中的所述函數(shù)信息,所述無(wú)意義符號(hào)為與所述函數(shù)信息不存在關(guān)聯(lián)的符號(hào)。
可選地,所述的靜態(tài)庫(kù)生成方法還包括:打包所述目標(biāo)中間代碼生成的目標(biāo)對(duì)象文件,得到對(duì)應(yīng)的靜態(tài)庫(kù)。
根據(jù)本發(fā)明的第二方面,提供一種靜態(tài)庫(kù)生成設(shè)備,包括:
編譯單元,用于編譯源代碼,獲得對(duì)應(yīng)的初步對(duì)象文件和初步中間代碼;
鏈接單元,用于鏈接多個(gè)所述初步對(duì)象文件時(shí),鏈接對(duì)應(yīng)的所述初步中間代碼,生成不包含函數(shù)信息的目標(biāo)中間代碼,所述函數(shù)信息是用于識(shí)別所述目標(biāo)中間代碼對(duì)應(yīng)的多個(gè)所述初步對(duì)象文件中包含的函數(shù)的實(shí)現(xiàn)原理的信息。
在一個(gè)實(shí)施例中,所述初步中間代碼包含在對(duì)應(yīng)的所述初步對(duì)象文件中。
在另一個(gè)實(shí)施例中,所述編譯單元,包括:
用于鏈接多個(gè)所述初步中間代碼,生成臨時(shí)中間代碼的裝置;以及
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京花甲科技有限公司,未經(jīng)北京花甲科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610721491.8/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 動(dòng)態(tài)鏈接函數(shù)庫(kù)與主應(yīng)用程序共享靜態(tài)鏈接函數(shù)庫(kù)的方法
- 一種頁(yè)面靜態(tài)資源的處理方法和裝置
- 一種應(yīng)用制作的方法、靜態(tài)庫(kù)生成的方法及裝置
- 一種靜態(tài)庫(kù)配置的切換方法和系統(tǒng)
- 一種利用靜態(tài)庫(kù)實(shí)現(xiàn)目標(biāo)程序生成方法及裝置
- 一種檢測(cè)靜態(tài)庫(kù)沖突的自動(dòng)化方法
- 一鍵導(dǎo)入靜態(tài)庫(kù)到項(xiàng)目的方法、存儲(chǔ)介質(zhì)
- 一種iOS系統(tǒng)調(diào)試的方法、裝置及服務(wù)器
- 多架構(gòu)靜態(tài)庫(kù)沖突處理方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)
- 基于iOS的靜態(tài)庫(kù)調(diào)用方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)
- 未知類型的文件系統(tǒng)對(duì)象的備份和恢復(fù)
- 一種數(shù)據(jù)備份方法
- 一種分布式文件系統(tǒng)數(shù)據(jù)分布方法及裝置
- 文件搜索方法、裝置及終端
- 一種插件式的掃描配置處理方法和系統(tǒng)
- 虛擬文件夾管理方法、裝置以及存儲(chǔ)介質(zhì)
- 一種標(biāo)簽確定方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 一種小文件對(duì)象的存取方法和裝置
- 一種實(shí)現(xiàn)對(duì)象文件上傳的方法、系統(tǒng)、設(shè)備及存儲(chǔ)介質(zhì)
- 一種文件處理方法、裝置、設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 編譯器裝置、編譯器方法和編譯器程序
- 可編程邏輯控制器用程序的創(chuàng)建支持裝置和創(chuàng)建支持方法
- 一種代碼執(zhí)行方法及裝置
- 一種基于代數(shù)演算的中間代碼優(yōu)化系統(tǒng)
- 基于中間代碼的iOS應(yīng)用程序處理方法、系統(tǒng)及介質(zhì)
- 用于測(cè)試代碼文件的方法和裝置
- 一種編譯器、編譯方法和追蹤方法及DCS控制器
- SAS語(yǔ)言編譯方法、裝置、設(shè)備及可讀存儲(chǔ)介質(zhì)
- 深度學(xué)習(xí)模型的執(zhí)行代碼的確定方法、裝置及存儲(chǔ)介質(zhì)
- 基于Flutter的代碼添加方法、裝置、電子設(shè)備和存儲(chǔ)介質(zhì)





