• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種獲取程序中模塊間函數接口的方法和系統技術方案

    技術編號:8532494 閱讀:200 留言:0更新日期:2013-04-04 15:17
    本發明專利技術公開了一種獲取程序中模塊間函數接口的方法和系統,其中,獲取程序中模塊間函數接口的方法用于實現自動對模塊間函數接口進行獲取,包括如下步驟:通過靜態掃描所述可執行程序,生成內部函數靜態調用IFSC關系文件、外部函數調用EFC關系文件,及內部函數動態調用IFDC出口清單文件;在運行所述可執行程序時,基于所述IFDC出口清單文件,生成IFDC記錄文件;基于所述EFC關系文件、所述IFSC關系文件及IFDC記錄文件,獲得所述可執行程序中模塊間的函數調用關系表。

    【技術實現步驟摘要】
    一種獲取程序中模塊間函數接口的方法和系統
    本專利技術涉及大型軟件的模塊接口技術,尤其涉及一種獲取程序中模塊間函數接口的方法和系統。
    技術介紹
    隨著計算機技術和通信技術的不斷發展,用戶對軟件系統的性能要求也越來越高,軟件系統也變得越來越大,進而在現有技術中,產生了很多大型軟件系統。在大型軟件系統中,程序里包含了若干邏輯模塊之間的相互作用,而這些邏輯模塊之間的接口,會直接影響模塊的程序架構中的模塊耦合關系,對軟件系統的綜合性能影響很大。邏輯模塊之間的接口除了在系統架構設計時考慮以外,還需要在后續的詳細設計、編碼實現中嚴格遵循接口說明書。因此,需要一種有效的手段,可以檢查已實現的軟件系統中,模塊的實際接口情況,以便與接口設計進行對比,在發現接口差異可以進行及時修改。同時,在對舊的軟件系統架構改造中,還需要對現有程序中的模塊接口關系進行提取,然后在此基礎上進行模塊解耦,設計新的模塊接口。而這也需要獲取模塊接口。程序模塊之間的接口,包括函數接口與數據接口。對于函數接口,程序里的函數調用關系有兩類,分別是內部函數調用IFC(InternalFunctionCalling)、外部函數調用EFC(ExternalFunctionCalling)。其中IFC的函數調用點和被調用函數都處于程序范圍內,而EFC的被調用函數處于程序范圍以外,通常為調用動態鏈接庫內的函數。IFC根據調用形式的不同,還可以分為內部函數靜態調用IFSC(InternalFunctionStaticCalling)和內部函數動態調用IFDC(InternalFunctionDynamicCalling)。靜態調用指調用的目標函數在編譯時已經確定,動態調用指調用的目標函數在編譯時尚未明確,當程序運行到調用點時,才確定調用的目標函數。在現有技術中,獲取模塊函數接口的方法是:在編譯鏈接程序的時候,利用編譯器生成每個目標文件的函數依賴關系,然后匯總分析形成模塊之間的函數接口關系。在實現本申請實施例中技術方案的過程中,本申請專利技術人發現現有技術中至少存在如下技術問題:在依賴于編譯時對源碼的依賴關系提取,無法適用于源碼不完整的程序的接口分析;程序內回調函數等動態調用關系只能通過人工配置維護,無法自動提??;由于任務調度信息的傳統獲取方法的上述缺點,導致對模塊函數接口的分析一直存在動態調用關系維護難度大、適用場景有限等問題。
    技術實現思路
    本專利技術提供一種獲取程序中模塊間函數接口的方法和系統,用于實現自動對模塊間函數接口進行獲取的目的。一方面,本專利技術通過本申請中的一個實施例,提供如下技術方案:一種獲取程序中模塊間函數接口的方法,用于獲取可執行程序中模塊間函數接口,所述方法包括:通過靜態掃描所述可執行程序,生成內部函數靜態調用IFSC關系文件、外部函數調用EFC關系文件,及內部函數動態調用IFDC出口清單文件;在運行所述可執行程序時,基于所述IFDC出口清單文件,生成IFDC記錄文件;基于所述EFC關系文件、所述IFSC關系文件及IFDC記錄文件,獲得所述可執行程序中模塊間的函數調用關系表。可選地,在所述基于所述EFC關系文件、所述IFSC關系文件及IFDC記錄文件,獲得所述可執行程序中模塊間的函數調用關系表之后,基于所述可執行程序中模塊間的實際函數接口關系及標準函數接口關系,獲得所述可執行程序中模塊間的函數接口變更信息??蛇x地,所述獲得所述可執行程序中模塊間的函數接口變更信息,具體包括:基于所述實際函數調用關系表和模塊內部函數清單,獲得所述可執行程序中模塊間的實際函數接口關系;基于所述可執行程序的標準模塊函數接口配置文件,獲得所述可執行程序中模塊間的標準函數接口關系;比較所述可執行程序中模塊間的實際函數接口關系及標準函數接口關系,獲得所述可執行程序中模塊間的函數接口變更信息文件。可選地,所述通過靜態掃描所述可執行程序,生成內部函數靜態調用IFSC關系文件、外部函數調用EFC關系文件,及內部函數動態調用IFDC出口清單文件,具體包括:提取所述可執行程序中每個函數的用來表征每個函數特征的屬性信息;分析所述可執行程序的重定位段,生成所述外部函數調用EFC關系文件;掃描所述可執行程序的每個函數的函數代碼段,獲得每個函數的函數調用指令;在所述函數調用指令中指定的函數調用方式為寄存器形式時,生成所述IFDC出口清單文件;在所述函數調用指令中指定的函數調用方式為操作數形式時,生成所述IFSC關系文件。可選地,所述每個函數的屬性信息至少包括:函數名稱、函數類型、函數開始地址和函數的代碼段大小??蛇x地,所述在運行所述可執行程序時,基于所述IFDC清單文件,生成IFDC記錄文件,具體包括:所述可執行程序運行時,執行所述可執行程序初始化段內的提取動態調用關系模塊的初始化代碼,以獲得所述IFDC出口清單文件;執行每個函數頭部內的動態調用關系模塊的提取代碼,以獲得每個函數的上級函數調用出口地址;當所述IFDC出口清單文件中存在所述調用出口地址時且所述IFDC出口清單文件對應的目標函數列表中包括所述調用出口地址對應函數時,則記錄所述調用出口地址對應函數的IFDC信息;當所述IFDC出口清單文件中存在所述調用出口地址時且所述IFDC出口清單文件對應的目標函數列表中不包括所述調用出口地址對應函數時,則在為所述調用出口地址對應函數建立新的IFDC關系之后,記錄所述調用出口地址對應函數的IFDC信息;當所述可執行程序運行結束時,提取出每個函數的IFDC信息,在程序目錄下生成所述IFDC記錄文件??蛇x地,所述執行每個函數頭部內的動態調用關系模塊的提取代碼,以獲得每個函數的上級函數調用出口地址的步驟,具體包括:將從寄存器中,獲取每個函數的上級函數調用出口的下一條指令的地址;修正所述下一條指令的地址,得到所述上級函數調用出口地址。可選地,所述基于所述EFC關系文件、所述IFSC關系文件及IFDC記錄文件,獲得所述可執行程序中模塊間的函數調用關系表,具體包括:利用分析工具,對所述EFC關系文件、所述IFSC關系文件及IFDC記錄文件進行解析,獲得所述可執行程序中模塊間的函數調用關系表??蛇x地,所述函數調用關系表中每條函數調用關系至少包括:父函數名稱、調用出口地址、目標函數名稱、調用方式、父函數對應源文件。此外,本專利技術還通過本申請中的另一實施例提供如下技術方案:一種獲取程序中模塊間函數接口的系統,用于獲取可執行程序中模塊間函數接口,所述系統包括:靜態掃描單元,用于通過靜態掃描所述可執行程序,生成內部函數靜態調用IFSC關系文件、外部函數調用EFC關系文件,及內部函數動態調用IFDC出口清單文件;IFDC記錄文件獲得單元,用于在運行所述可執行程序時,基于所述IFDC出口清單文件,生成IFDC記錄文件;函數調用關系獲得單元,用于基于所述EFC關系文件、所述IFSC關系文件及IFDC記錄文件,獲得所述可執行程序中模塊間的函數調用關系表。可選地,所述系統還包括:函數接口變更信息獲得單元,用于基于所述可執行程序中模塊間的實際函數接口關系及標準函數接口關系,獲得所述可執行程序中模塊間的函數接口變更信息??蛇x地,所述函數接口變更信息獲得單元具體包括:第一獲得單元,用于基于所述函數調用關系表,獲得所述可執行程序中模塊間的實本文檔來自技高網
    ...
    一種獲取程序中模塊間函數接口的方法和系統

    【技術保護點】
    一種獲取程序中模塊間函數接口的方法,用于獲取可執行程序中模塊間函數接口,其特征在于,所述方法包括:通過靜態掃描所述可執行程序,生成內部函數靜態調用IFSC關系文件、外部函數調用EFC關系文件,及內部函數動態調用IFDC出口清單文件;在運行所述可執行程序時,基于所述IFDC出口清單文件,生成IFDC記錄文件;基于所述EFC關系文件、所述IFSC關系文件及IFDC記錄文件,獲得所述可執行程序中模塊間的函數調用關系表。

    【技術特征摘要】
    1.一種獲取程序中模塊間函數接口的方法,用于獲取可執行程序中模塊間函數接口,其特征在于,所述方法包括:通過靜態掃描所述可執行程序,生成內部函數靜態調用IFSC關系文件、外部函數調用EFC關系文件,及內部函數動態調用IFDC出口清單文件;在運行所述可執行程序時,基于所述IFDC出口清單文件,生成IFDC記錄文件;基于所述EFC關系文件、所述IFSC關系文件及IFDC記錄文件,獲得所述可執行程序中模塊間的函數調用關系表;其中,在所述基于所述EFC關系文件、所述IFSC關系文件及IFDC記錄文件,獲得所述可執行程序中模塊間的函數調用關系表之后,還包括:基于實際函數調用關系表和模塊內部函數清單,獲得所述可執行程序中模塊間的實際函數接口關系;基于所述可執行程序的標準模塊函數接口配置文件,獲得所述可執行程序中模塊間的標準函數接口關系;比較所述可執行程序中模塊間的實際函數接口關系及標準函數接口關系,獲得所述可執行程序中模塊間的函數接口變更信息文件。2.如權利要求1所述的方法,其特征在于,所述通過靜態掃描所述可執行程序,生成內部函數靜態調用IFSC關系文件、外部函數調用EFC關系文件,及內部函數動態調用IFDC出口清單文件,具體包括:提取所述可執行程序中每個函數的用來表征每個函數特征的屬性信息;分析所述可執行程序的重定位段,生成所述外部函數調用EFC關系文件;掃描所述可執行程序的每個函數的函數代碼段,獲得每個函數的函數調用指令;在所述函數調用指令中指定的函數調用方式為寄存器形式時,生成所述IFDC出口清單文件;在所述函數調用指令中指定的函數調用方式為操作數形式時,生成所述IFSC關系文件。3.如權利要求1所述的方法,其特征在于,所述在運行所述可執行程序時,基于所述IFDC出口清單文件,生成IFDC記錄文件,具體包括:所述可執行程序運行時,執行所述可執行程序初始化段內的提取動態調用關系模塊的初始化代碼,以獲得所述IFDC出口清單文件;執行每個函數頭部內的動態調用關系模塊的提取代碼,以獲得每個函數的上級函數調用出口地址;當所述IFDC出口清單文件中存在所述調用出口地址時且所述IFDC出口清單文件對應的目標函數列表中包括所述調用出口地址對應函數時,則記錄所述調用出口地址對應函數的IFDC信息;當所述IFDC出口清單文件中存在所述調用出口地址時且所述IFDC出口清單文件對應的目標函數列表中不包括所述調用出口地址對應函數時,則在為所述調用出口地址對應函數建立新的IFDC關系之后,記錄所述調用出口地址對應函數的IFDC信息;當所述可執行程序運行結束時,提取出每個函數的IFDC信息,在程序目錄下生成所述IFDC記錄文件。4.一種獲取程序中模塊間函數接口的系統,用于獲取可執行程序中模塊間函數接口,其特征在于,所述系統包括:靜態掃描單元,用于通過靜態掃描所述可執行程序,生成內部函數靜態調用...

    【專利技術屬性】
    技術研發人員:蔣嵩,
    申請(專利權)人:中興通訊股份有限公司,
    類型:發明
    國別省市:

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 国产在线无码不卡影视影院| 久久精品无码一区二区三区不卡 | 国产成人精品一区二区三区无码 | 久久青青草原亚洲av无码| 免费无码又爽又刺激高潮| 亚洲中文字幕无码一久久区| 亚洲精品无码久久久久A片苍井空| 亚洲Av无码乱码在线znlu| 中文字幕无码乱码人妻系列蜜桃| 国产a v无码专区亚洲av| 一区二区三区无码被窝影院| 亚洲午夜国产精品无码| 人妻中文字幕AV无码专区| 日韩午夜福利无码专区a| 精品久久久无码中文字幕| 亚洲私人无码综合久久网| 无码中文字幕日韩专区视频| 日韩av片无码一区二区三区不卡| 18禁无遮拦无码国产在线播放| 国产亚洲精久久久久久无码77777| 亚洲AV无码AV男人的天堂不卡| 日韩av无码中文字幕| 亚洲av成人无码久久精品 | 亚洲AV永久无码精品一百度影院| 精品久久久久久无码免费| 成人免费无码视频在线网站| 97精品人妻系列无码人妻| 精品久久亚洲中文无码| 日韩人妻无码一区二区三区99 | 久久久无码精品国产一区| 亚洲中文字幕无码日韩| 八戒理论片午影院无码爱恋| 日日日日做夜夜夜夜无码| a级毛片无码免费真人久久 | 国产精品VA在线观看无码不卡| 国产成人无码A区在线观看视频| 亚洲国产精品无码久久青草| 国产AV无码专区亚洲AV琪琪| 无码毛片一区二区三区中文字幕| 亚洲AⅤ无码一区二区三区在线| 中文无码精品一区二区三区|