[發明專利]軟件的函數修改方法有效
| 申請號: | 201210362533.5 | 申請日: | 2012-09-26 |
| 公開(公告)號: | CN103677790A | 公開(公告)日: | 2014-03-26 |
| 發明(設計)人: | 侯健 | 申請(專利權)人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44 |
| 代理公司: | 深圳翼盛智成知識產權事務所(普通合伙) 44300 | 代理人: | 歐陽啟明 |
| 地址: | 518000 廣東省深*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 軟件 函數 修改 方法 | ||
【技術領域】
本發明涉及軟件技術領域,特別是涉及一種軟件的函數修改方法。
【背景技術】
隨著各種軟件的不斷增多,客戶端對軟件功能的要求越來越高。
以函數Hook技術為例,通過Hook技術,可修改函數的二進制編碼,從而修改函數,進而達到修改軟件的目的。譬如可通過Hook技術關閉原函數、修改原函數,或者進行軟件的調試、重建等。
而現有的Hook技術,需要通過修改編碼來修改原函數,在調用原函數時,需調用一個劫持者提供的替代函數。為了保證劫持過程中函數的棧平衡,需要原函數和替代函數的函數傳入參數必須完全一致,這樣就需要針對不同的原函數,編寫針對性的替代函數。
綜上,如何解決現有技術中在修改軟件中函數時,需針對每一原函數編寫一相同的替代函數,導致效率低下,成本較高的技術問題,是軟件技術領域研究的方向之一。
【發明內容】
本發明的一個目的在于提供一種軟件的函數修改方法,以解決現有技術中在修改軟件中函數時,需針對每一原函數編寫一相同的替代函數,導致效率低下,成本較高的技術問題。
為解決上述技術問題,本發明構造了一種軟件的函數修改方法,包括以下步驟:
獲取軟件運行空間中的原函數簽名;
按照所述原函數簽名生成一替代函數,其中所述替代函數的簽名中包括替代標識;
將所述替代函數中非通用類型的特征轉換為通用類型的特征,其中在該通用類型的特征下,所述替代函數可適用于任意函數;
將轉換后的替代函數加載至軟件運行空間;
按照所述替代函數執行軟件。
在本發明一實施例中:獲取軟件運行空間中的原函數簽名的步驟具體包括:
獲取配置文件中的原函數簽名列表,并判斷原函數的簽名對應的原函數是否存在于運行空間中,若是,則獲取軟件運行空間中的原函數簽名;其中所述原函數簽名列表中包括有原函數的簽名。
在本發明一實施例中:將轉換后的替代函數加載至軟件運行空間的步驟具體包括:
將轉換后的替代函數編譯成替代機器碼,并將該替代機器碼加載到軟件運行空間。
在本發明一實施例中:按照所述替代函數執行軟件的步驟具體包括:
將原函數的開始部分的機器碼,修改為跳轉指令到所述替代機器碼,并按照所述替代機器碼執行軟件。
在本發明一實施例中:將替換后的替代函數加載至軟件的運行空間的步驟之后,所述方法還包括以下步驟:
記錄加載到運行空間中的替代函數的地址。
在本發明一實施例中:獲取配置文件中的原函數簽名列表的步驟之前,所述方法還包括以下步驟:
預先在原函數的運行空間中設置啟動器,該啟動器用于將所述替代函數加載至軟件的運行空間中。
在本發明一實施例中:將所述替代函數中非通用類型的特征替換為通用類型的特征的步驟具體包括:
若所述原函數的簽名中有類型指針,則將該類型指針替換為通用類型指針void*:
在本發明一實施例中:將所述替代函數中非通用類型的特征替換為通用類型的特征的步驟具體包括:
若所述原函數的簽名為一C++函數,則將所述原函數的簽名中的“:”替換為_,并在所述替代函數簽名的參數前添加一個指針參數。
在本發明一實施例中:將替換后的替代函數加載至軟件的運行空間中的步驟具體包括:
通過編譯器中的應用程序編程接口將替代函數的符號導入到替代函數的編譯過程。
在本發明一實施例中:將替換后的替代函數加載至軟件的運行空間中的步驟具體包括:
通過編譯器將替代函數保存為一個.c文件,同時將該.c文件編譯成一個動態鏈接庫,之后通過應用程序編程接口將上述動態鏈接庫導入到軟件的運行空間中。
在本發明一實施例中:按照所述原函數簽名生成一替代函數簽名時,還包括以下步驟:生成信息獲取編碼用于統計客戶端的信息。
相對于現有技術,本發明在獲取軟件運行空間中的原函數簽名后,按照原函數簽名生成一替代函數簽名,并將替代函數簽名中非通用類型的特征轉換為通用類型的特征,其中在該通用類型的特征下,替代函數簽名可適用于任意函數,之后將轉換后的替代函數加載至軟件運行空間,并按照替代函數執行軟件。顯然本發明無需針對每一原函數編寫一相同的替代函數即可修改各種類型的原函數,不僅效率高,而且成本較低。
為讓本發明的上述內容能更明顯易懂,下文特舉優選實施例,并配合所附圖式,作詳細說明如下:
【附圖說明】
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于騰訊科技(深圳)有限公司,未經騰訊科技(深圳)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210362533.5/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:氣相常壓吡啶光氯化動力學研究裝置
- 下一篇:電樞





