欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種分析函數(shù)棧大小的方法

文檔序號:8257974閱讀:311來源:國知局
一種分析函數(shù)棧大小的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及嵌入式系統(tǒng)技術(shù)領(lǐng)域,尤其涉及一種分析函數(shù)棧大小的方法。
【背景技術(shù)】
[0002] vxWorks操作系統(tǒng)是以任務(wù)為調(diào)度單位,每個任務(wù)有單獨的??臻g。棧是任務(wù)的一 個緩存區(qū),在任務(wù)創(chuàng)建時根據(jù)指定大小從內(nèi)存中分配。C語言函數(shù)局部變量、部分函數(shù)參數(shù) 等都會存放在棧中,因此,每個函數(shù)都需要占用一定大小的棧緩存。當(dāng)一個任務(wù)函數(shù)調(diào)用鏈 中所有函數(shù)使用的棧緩存超過任務(wù)的棧大小時,導(dǎo)致棧溢出。棧溢出會導(dǎo)致非法修改其他 地址的內(nèi)存內(nèi)容,給系統(tǒng)帶來不可預(yù)知的問題,甚至崩潰。
[0003] 因此必須要查詢使用棧緩存超過指定大小的函數(shù),并且把這些函數(shù)作為可能存在 隱患的風(fēng)險點,可以使用其他的方法進行進一步分析,以排除風(fēng)險點。
[0004] 目前沒有查詢到該功能的具體實現(xiàn)方法,但通常是采用類似c語言的編譯型語言 編碼,編譯鏈接生成可執(zhí)行文件;然后通過執(zhí)行可執(zhí)行文件得到查詢結(jié)果。
[0005] 但是,編譯型語言編碼復(fù)雜,且針對不同的硬件(CPU)平臺需要分別編譯鏈接,這 些均是本領(lǐng)域技術(shù)人員所不期望見到的。

【發(fā)明內(nèi)容】

[0006] 鑒于上述問題,本發(fā)明提供一種分析函數(shù)棧大小的方法,通過該方法可以生成超 過指定棧大小的所有函數(shù)列表,根據(jù)列表信息可以通過分析相應(yīng)函數(shù)源碼,以提前識別出 潛在的棧溢出風(fēng)險。
[0007] 本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案為:
[0008] -種分析函數(shù)棧大小的方法,其中,所述方法包括:
[0009] 步驟S1、提供一初始文件,所述初始文件具有若干聲明函數(shù)行,以及部分所述聲明 函數(shù)行所對應(yīng)的棧緩存行;每個所述聲明函數(shù)行中均包括有聲明函數(shù)的函數(shù)名稱,每個所 述棧緩存行中均包括有用于緩存的棧的大?。?br>[0010] 步驟S2、對所述初始文件添加行號,以生成第一文件;
[0011] 步驟S3、提取所述第一文件中的所述聲明函數(shù)行,以生成第一合并文件;提取所 述第一文件中的所述棧緩存行,以生成第二合并文件;
[0012] 步驟S4、根據(jù)行號排列的順序,將所述第一合并文件和所述第二合并文件進行合 并,以生成第二文件;
[0013] 步驟S5、提取所述第二文件中的各所述棧緩存行和每個所述棧緩存行所對應(yīng)的聲 明函數(shù)行,以生成第三文件;
[0014] 步驟S6、提取所述第三文件中的函數(shù)名稱和棧大小,并將每個所述函數(shù)名稱和對 應(yīng)該函數(shù)名稱的棧大小進行輸出,以生成第四文件;
[0015] 步驟S7、提取所述第四文件中棧大小大于或等于預(yù)定值的聲明函數(shù),以生成列表 輸出文件。
[0016] 較佳的,上述的分析函數(shù)棧大小的方法,其中,所述方法還包括:
[0017] 步驟S8、刪除所述第一文件、所述第二文件、所述第三文件和所述第四文件。
[0018] 較佳的,上述的分析函數(shù)棧大小的方法,其中,所述初始文件為反匯編文件。
[0019] 較佳的,上述的分析函數(shù)棧大小的方法,其中,所述棧緩存行位于該棧緩存行所對 應(yīng)的聲明函數(shù)行之下排列。
[0020] 較佳的,上述的分析函數(shù)棧大小的方法,其中,步驟S2中,根據(jù)所述行號由小到大 的排列順序?qū)λ龀跏嘉募砑有刑枴?br>[0021] 較佳的,上述的分析函數(shù)棧大小的方法,其中,步驟S4中,根據(jù)所述行號由小到大 的排列順序,將所述第一合并文件和所述第二合并文件進行合并,以生成所述第二文件。
[0022] 較佳的,上述的分析函數(shù)棧大小的方法,其中,步驟S6中,將每個所述函數(shù)名稱和 對應(yīng)該函數(shù)名稱的棧大小以單行的形式進行輸出,以生成所述第四文件。
[0023] 較佳的,上述的分析函數(shù)棧大小的方法,其中,步驟S7中,所述預(yù)定值為3000字 T。
[0024] 較佳的,上述的分析函數(shù)棧大小的方法,其中,所述方法還包括:
[0025] 組合使用工具cat、grep、sort、sed或awk依次進行步驟S2?S7,以完成對所述 函數(shù)棧大小的分析。
[0026] 較佳的,上述的分析函數(shù)棧大小的方法,其中,所述方法還包括:
[0027] 采用shell腳本語言,并組合使用工具cat、grep、sort、sed或awk依次進行步驟 S2?S7,以完成對所述函數(shù)棧大小的分析。
[0028] 上述技術(shù)方案具有如下優(yōu)點或有益效果:
[0029] 本發(fā)明公開了一種分析函數(shù)棧大小的方法,使用現(xiàn)成的工具sed、awk等和shell 腳本語言(解釋型語言)來實現(xiàn)預(yù)期功能特性,這些現(xiàn)成的工具在不同硬件平臺上都已經(jīng) 有相應(yīng)的執(zhí)行程序,其中采用腳本語言編碼簡單,不需編譯鏈接,可跨平臺直接運行,進而 通過該方法可以生成超過指定棧大小的所有函數(shù)列表,根據(jù)列表信息可以通過分析相應(yīng)函 數(shù)源碼,以提前識別出潛在的棧溢出風(fēng)險。
[0030] 具體【附圖說明】
[0031] 通過閱讀參照以下附圖對非限制性實施例所作的詳細(xì)描述,本發(fā)明及其特征、夕卜 形和優(yōu)點將會變得更加明顯。在全部附圖中相同的標(biāo)記指示相同的部分,同時也可以未按 照比例繪制附圖,其重點在于示出本發(fā)明的主旨。
[0032] 圖1是本發(fā)明中分析函數(shù)棧大小的方法流程示意圖。
【具體實施方式】
[0033] 下面結(jié)合附圖和具體的實施例對本發(fā)明作進一步的說明:本實施例在以本發(fā)明技 術(shù)方案為前提進行實施,給出了詳細(xì)的實施方式和具體的操作過程,但本發(fā)明的實施例的 保護范圍不限于下述的實施例。
[0034] 鑒于現(xiàn)有技術(shù)的不足,本發(fā)明提供一種分析函數(shù)棧大小的方法,該方法基于Linux 操作系統(tǒng)下shell腳本語言并組合工具cat、grep、sort、sed或awk進行函數(shù)棧大小的分 析(具體進行后續(xù)的步驟S2?S7),以通過使用現(xiàn)成的工具shell腳本語言來實現(xiàn)預(yù)期功 能特性,這些現(xiàn)成的工具在不同硬件平臺上都已經(jīng)有相應(yīng)的執(zhí)行程序,可直接運行。
[0035] 因腳本語言(解釋型語言)的執(zhí)行性能比編譯型語言的程序要慢,所以本發(fā)明實 施例中,通過合理設(shè)計腳本流程以及相關(guān)數(shù)據(jù),確保功能的執(zhí)行時間在一個合理的范圍,具 體的,如圖1所示。
[0036] 步驟S1、本發(fā)明分析的基礎(chǔ)數(shù)據(jù)是一個初始文件,可選為反匯編文件,其通過以下 命令進行生成:〇bjdumpppc_D vxWorks. st>vxWorks. asm。
[0037] 該命令是vxWorks平臺自帶,下面進行詳細(xì)闡述流程,將以vxWorks. asm反匯編文 件為起點和作為基礎(chǔ)。
[0038] vxWorks. asm的反匯編文件中,通常包括有若干聲明函數(shù)行和部分聲明函數(shù)行所 對應(yīng)的棧緩存行,每一個聲明函數(shù)行中均包括有聲明函數(shù)的函數(shù)名稱,每一個棧緩存行中 均包括有用于緩存的棧的大小,其結(jié)構(gòu)通常如下:
[0039]
【主權(quán)項】
1. 一種分析函數(shù)找大小的方法,其特征在于,所述方法包括: 步驟S1、提供一初始文件,所述初始文件具有若干聲明函數(shù)行,W及部分所述聲明函數(shù) 行所對應(yīng)的找緩存行;每個所述聲明函數(shù)行中均包括有聲明函數(shù)的函數(shù)名稱,每個所述找 緩存行中均包括有用于緩存的找的大??; 步驟S2、對所述初始文件添加行號,W生成第一文件; 步驟S3、提取所述第一文件中的所述聲明函數(shù)行,W生成第一合并文件;提取所述第 一文件中的所述找緩存行,W生成第二合并文件; 步驟S4、根據(jù)行號排列的順序,將所述第一合并文件和所述第二合并文件進行合并,W 生成第二文件; 步驟S5、提取所述第二文件中的各所述找緩存行和每個所述找緩存行所對應(yīng)的聲明函 數(shù)行,W生成第=文件; 步驟S6、提取所述第=文件中的函數(shù)名稱和找大小,并將每個所述函數(shù)名稱和對應(yīng)該 函數(shù)名稱的找大小進行輸出,W生成第四文件; 步驟S7、提取所述第四文件中找大小大于或等于預(yù)定值的聲明函數(shù),W生成列表輸出 文件。
2. 如權(quán)利要求1所述的分析函數(shù)找大小的方法,其特征在于,所述方法還包括: 步驟S8、刪除所述第一文件、所述第二文件、所述第=文件和所述第四文件。
3. 如權(quán)利要求1所述的分析函數(shù)找大小的方法,其特征在于,所述初始文件為反匯編 文件。
4. 如權(quán)利要求1所述的分析函數(shù)找大小的方法,其特征在于,所述找緩存行位于該找 緩存行所對應(yīng)的聲明函數(shù)行之下排列。
5. 如權(quán)利要求1所述的分析函數(shù)找大小的方法,其特征在于,步驟S2中,根據(jù)所述行號 由小到大的排列順序?qū)λ龀跏嘉募砑有刑枴?br>6. 如權(quán)利要求1所述的分析函數(shù)找大小的方法,其特征在于,步驟S4中,根據(jù)所述行號 由小到大的排列順序,將所述第一合并文件和所述第二合并文件進行合并,W生成所述第 二文件。
7. 如權(quán)利要求1所述的分析函數(shù)找大小的方法,其特征在于,步驟S6中,將每個所述函 數(shù)名稱和對應(yīng)該函數(shù)名稱的找大小W單行的形式進行輸出,W生成所述第四文件。
8. 如權(quán)利要求1所述的分析函數(shù)找大小的方法,其特征在于,步驟S7中,所述預(yù)定值為 3000字節(jié)。
9. 如權(quán)利要求1所述的分析函數(shù)找大小的方法,其特征在于,所述方法還包括: 組合使用工具cat、gr巧、sort、sed或awk依次進行步驟S2?S7, W完成對所述函數(shù) 找大小的分析。
10. 如權(quán)利要求9所述的分析函數(shù)找大小的方法,其特征在于,所述方法還包括: 采用shell腳本語言,并組合使用工具cat、grep、so;rt、sed或awk依次進行步驟S2? S7, W完成對所述函數(shù)找大小的分析。
【專利摘要】本發(fā)明涉及嵌入式系統(tǒng)技術(shù)領(lǐng)域,尤其涉及一種分析函數(shù)棧大小的方法,通過使用現(xiàn)成的工具sed、awk等和shell腳本語言來實現(xiàn)預(yù)期功能特性,這些現(xiàn)成的工具在不同硬件平臺上都已經(jīng)有相應(yīng)的執(zhí)行程序,其中采用腳本語言編碼簡單,不需編譯鏈接,可跨平臺直接運行,進而通過該方法可以生成超過指定棧大小的所有函數(shù)列表,根據(jù)列表信息可以通過分析相應(yīng)函數(shù)源碼,以提前識別出潛在的棧溢出風(fēng)險。
【IPC分類】G06F9-44
【公開號】CN104572094
【申請?zhí)枴緾N201410844223
【發(fā)明人】鐘捷群
【申請人】上海斐訊數(shù)據(jù)通信技術(shù)有限公司
【公開日】2015年4月29日
【申請日】2014年12月25日
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
永兴县| 宿州市| 思南县| 连平县| 石狮市| 武川县| 丹寨县| 南充市| 昌黎县| 龙江县| 巴南区| 龙川县| 荆门市| 晋州市| 仁布县| 浪卡子县| 囊谦县| 普宁市| 密山市| 平武县| 张掖市| 肥东县| 万全县| 漳平市| 乳山市| 红安县| 三原县| 蒙阴县| 名山县| 遂宁市| 滨海县| 星子县| 桑日县| 鹤庆县| 合肥市| 兴安盟| 敖汉旗| 和平县| 修水县| 崇信县| 仙桃市|