[發(fā)明專利]C25匯編代碼靜態(tài)分析方法有效
| 申請?zhí)枺?/td> | 201710587079.6 | 申請日: | 2017-07-18 |
| 公開(公告)號: | CN107291622B | 公開(公告)日: | 2020-03-31 |
| 發(fā)明(設(shè)計)人: | 楊波;李敏;李偉 | 申請(專利權(quán))人: | 北京計算機(jī)技術(shù)及應(yīng)用研究所 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 中國兵器工業(yè)集團(tuán)公司專利中心 11011 | 代理人: | 劉瑞東 |
| 地址: | 100854*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | c25 匯編 代碼 靜態(tài) 分析 方法 | ||
1.一種C25匯編代碼靜態(tài)分析方法,其特征在于,包括以下步驟:
S1、采用強(qiáng)行順序讀取程序代碼的方式來統(tǒng)計度量元,并利用狀態(tài)機(jī)來識別模塊:
利用狀態(tài)機(jī)來識別模塊時,從文件頭開始讀取,讀取到非執(zhí)行代碼,包括注釋、變量定義,則說明狀態(tài)機(jī)的狀態(tài)為模塊外,當(dāng)讀取到標(biāo)號后,把標(biāo)號當(dāng)成模塊名稱,設(shè)置狀態(tài)機(jī)狀態(tài)為模塊內(nèi),當(dāng)狀態(tài)機(jī)狀態(tài)為模塊內(nèi)時,若讀取到模塊結(jié)束指令,則設(shè)置模塊掃描完成,并設(shè)置狀態(tài)機(jī)狀態(tài)為模塊外;
S2、對于狀態(tài)機(jī)狀態(tài)為模塊內(nèi)的模塊,獲取被測件的基本信息:
獲取C25編程語言的各指令字符,包括普通指令字和跳轉(zhuǎn)指令字;
獲取C25編程語言的宏字符;
獲取變量所在頁、變量地址以及規(guī)定的比例尺;
獲取需要分析的源代碼列表;
將源代碼進(jìn)行消除標(biāo)號、注釋處理,保留可執(zhí)行語句,得到可執(zhí)行語句列表;
S3、對于可執(zhí)行語句中上下語句無關(guān)聯(lián)的錯誤,利用強(qiáng)行順序解釋執(zhí)行的方式來檢查:
強(qiáng)行順序解釋執(zhí)行過程中,忽略跳轉(zhuǎn)指令,強(qiáng)行順序解釋執(zhí)行分析的數(shù)據(jù)包含:標(biāo)號的使用次數(shù)、地址和立即數(shù)混用的警告、多余變量、未定義地址的讀寫;其中,標(biāo)號的使用次數(shù)列表用于分析跳轉(zhuǎn)標(biāo)號引用是否錯誤,標(biāo)號引用錯誤的特點(diǎn)是存在沒有被引用的標(biāo)號和被多次引用的標(biāo)號;
S4、對于可執(zhí)行語句中有上下語句關(guān)聯(lián)性的錯誤,利用跳轉(zhuǎn)指令分支覆蓋解釋執(zhí)行的方式來檢查,檢查時,先獲取需解釋執(zhí)行的可執(zhí)行語句的地址;再查詢該可執(zhí)行語句的解釋方式;若為變量引用語句,則檢查頁指針的正確使用;若為加減賦值語句時,則檢查寄存器字段溢出方式OVM和寄存器字段符號位擴(kuò)展SMX的值是否符合要求以及變量比例尺是否相等;若為乘法語句時,檢查寄存器字段乘法寄存器字段移位PM的值是否符合要求。
2.如權(quán)利要求1所述的方法,其特征在于,步驟S1中,在狀態(tài)機(jī)狀態(tài)為模塊內(nèi)時,還統(tǒng)計模塊內(nèi)的有效代碼行、注釋行、空白行和跳轉(zhuǎn)分支數(shù)這些有效信息。
3.如權(quán)利要求1所述的方法,其特征在于,步驟S4中,所述利用跳轉(zhuǎn)指令分支覆蓋解釋執(zhí)行的方式來檢查具體為:順序解釋執(zhí)行指令代碼,當(dāng)指令為條件跳轉(zhuǎn)指令時,若語句未執(zhí)行,則先覆蓋滿足條件的分支,且記錄分支執(zhí)行度為1,若兩種滿足條件的分支均被覆蓋,記錄分支執(zhí)行度為2;此后再次解釋執(zhí)行到該條件跳轉(zhuǎn)指令時,若一分支后續(xù)的分支執(zhí)行力度均為2或無后續(xù)分支,則覆蓋不滿足條件的分支,且記錄該分支執(zhí)行力度為2,并重新設(shè)置該分支后續(xù)分支的執(zhí)行力度為1;若該分支后存在執(zhí)行力度為1的分支,則繼續(xù)覆蓋滿足條件的分支;執(zhí)行到模塊結(jié)束指令時,返回模塊起始地址,并查詢上次執(zhí)行后所記錄分支的執(zhí)行力度,若存在1,則繼續(xù)解釋執(zhí)行該模塊,若都為2,則表明該模塊的分支全部覆蓋,此時完成該模塊的檢查。
4.如權(quán)利要求1所述的方法,其特征在于,所述模塊結(jié)束指令為RET。
5.如權(quán)利要求1至4中任一項(xiàng)所述的方法,其特征在于,所述模塊結(jié)束指令為RTI。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京計算機(jī)技術(shù)及應(yīng)用研究所,未經(jīng)北京計算機(jī)技術(shù)及應(yīng)用研究所許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710587079.6/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 復(fù)雜背景中實(shí)現(xiàn)靜態(tài)目標(biāo)檢測和識別的方法
- 一種設(shè)置靜態(tài)認(rèn)證信息的方法及裝置
- 一種基于物聯(lián)網(wǎng)技術(shù)的機(jī)房靜態(tài)資源快速定位的方法
- 一種動態(tài)網(wǎng)頁靜態(tài)化的方法和裝置
- 瀏覽器靜態(tài)資源加載方法、瀏覽器程序及可讀存儲介質(zhì)
- 靜態(tài)資源更新方法、裝置、存儲介質(zhì)和計算機(jī)設(shè)備
- 一種圖像顯示方法及裝置
- 一種靜態(tài)方法修改非靜態(tài)對象的方法
- 一種靜態(tài)資源加載方法、裝置、設(shè)備及可讀存儲介質(zhì)
- 一種靜態(tài)資源獲取方法、裝置及其相關(guān)設(shè)備





