[發明專利]64位程序調用32位程序模塊的方法、裝置、介質及設備在審
| 申請號: | 201911375244.7 | 申請日: | 2019-12-27 |
| 公開(公告)號: | CN111142969A | 公開(公告)日: | 2020-05-12 |
| 發明(設計)人: | 高古尊;何曉文;李啟光 | 申請(專利權)人: | 貴陽動視云科技有限公司 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445 |
| 代理公司: | 北京名華博信知識產權代理有限公司 11453 | 代理人: | 苗源 |
| 地址: | 550000 貴州省貴陽市貴陽國家高新技*** | 國省代碼: | 貴州;52 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 64 程序 調用 32 模塊 方法 裝置 介質 設備 | ||
本文關于一種64位程序調用32位程序模塊的方法、裝置、介質及設備,64位程序調用32位程序模塊的方法包括:調用LoadLibrary32函數和GetPorcAddress32函數;通過所述LoadLibrary32函數調用LoadLibrary函數加載32位目標程序模塊,通過所述GetPorcAddress32函數調用GetPorcAddress函數獲取所述目標程序模塊中的目標函數;將寄存器中的參數保存到棧中,并調整指針訪問范圍;調用所述目標程序模塊中的目標函數。可以實現64位程序調用32位程序模塊,64位程序與32位程序模塊在同一進程下運行,不需要單獨對每一個需要調用的函數進行封裝,沒有進程同步,也不需要額外注冊組件。
技術領域
本文涉及計算機應用領域,尤其涉及64位程序調用32位程序模塊的方法、裝置、介質及設備。
背景技術
以前的電腦系統,如Windows Xp是32位的系統,所以人們編寫的都是32位的程序,后來有了64位的系統,在64位的系統下即可以運行64位程序,也可以運行32位的程序,但是64位的程序卻不可以直接調用32位程序模塊如程序的DLL、插件、游戲的MOD等,大部分情況下,需要重新編譯32位程序模塊的源代碼為64位程序,但很多情況下,如果沒有這些模塊的源代碼,就要放棄對這些模塊的支持,或者自己仿照這些模塊重新編寫,但如此會大大增加開發周期。
相關技術中,用32位程序對程序模塊進行封裝,封裝成COM服務,然后再在64位程序下調用。或者使用共享內存,在64位程序下將參數寫入共享內存,在32位從共享下取出參數調用程序模塊,將結果寫入共享內存,再在64位程序下從共享內存中取出結果。但封裝成COM服務的方法,需要注冊COM服務,部署維護比較麻煩;共享內存的方法,需要解決進程進同步的問題,64位程序與32位程序模塊不在同一個進程空間中,64位程序和32位程序模塊都需要做單獨處理,增加開發維護成本。
發明內容
為克服相關技術中存在的問題,本文提供一種64位程序調用32位程序模塊的方法、裝置、介質及設備。
根據本文的第一方面,提供一種64位程序調用32位程序模塊的方法,包括:
調用LoadLibrary32函數和GetPorcAddress32函數;
通過所述LoadLibrary32函數調用LoadLibrary函數加載32位目標程序模塊,通過所述GetPorcAddress32函數調用GetPorcAddress函數獲取所述目標程序模塊中的目標函數;
將寄存器中的參數保存到棧中,并調整指針訪問范圍;
調用所述目標程序模塊中的目標函數。
所述調用LoadLibrary32函數和GetPorcAddress32函數之前包括:
在64位程序下加載32位的Kernel32.dll到內存;
修復Kernel32.dll的重定向,修復導入表和導出表;
獲取所述Kernel32.dll內的LoadLibrary函數和GetPorcAddress函數;
將調用所述LoadLibrary函數的代碼封裝為LoadLibrary32函數,將調用所述GetPorcAddress函數的代碼封裝為GetPorcAddress32函數。
64位程序調用32位程序模塊的方法,還包括:
修改寄存器的值為0x23。
所述調整指針訪問范圍包括:
將所述64位程序的PE文件的基址修改為0xffffffff內的地址。
根據本文的另一方面,提供一種64位程序調用32位程序模塊的裝置,包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于貴陽動視云科技有限公司,未經貴陽動視云科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201911375244.7/2.html,轉載請聲明來源鉆瓜專利網。





