[發明專利]一種可執行程序動態調用方法及系統有效
| 申請號: | 201611040855.2 | 申請日: | 2016-11-11 |
| 公開(公告)號: | CN106648749B | 公開(公告)日: | 2019-12-31 |
| 發明(設計)人: | 王妍鵬 | 申請(專利權)人: | 廣州華多網絡科技有限公司 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445 |
| 代理公司: | 11330 北京市立方律師事務所 | 代理人: | 劉延喜;王增鑫 |
| 地址: | 511449 廣東省廣州市番*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 可執行 程序 動態 調用 方法 系統 | ||
本發明公開了一種將可執行程序注入宿主進程的方法,其包括:運行宿主程序,由宿主程序進程將預先注入的動態鏈接庫文件調入內存;執行該動態鏈接庫內預置的加載模塊,由其以操作系統所兼容的方式加載所述可執行程序至內存中;啟動運行該可執行程序的內存鏡像。通過本發明可以讓注入的可執行程序在宿主進程中獨立運行;這樣就解除了微軟對模塊加載只限定動態鏈接庫文件的限定;同時,還可以繞過驅動保護的進程白名單檢測。
技術領域
本發明涉及計算機技術領域,特別涉及一種可執行程序動態調用方法及系統。
背景技術
隨著WINDOWS應用的飛速發展,WINDOWS API編程得到了廣泛的普及和應用,DLL注入到宿主進程可以實現應用程序主動跨進程訪問其他進程數據,從而控制宿主進程。具體的,當需要操作的對象的數據不在當前進程內,或者需要編寫一些函數用于增加宿主進程功能,都可以通過注入DLL文件來實現。
但是,可執行EXE程序文件無法像DLL文件那樣被Windows操作系統模塊化進行注入,因為驅動保護禁止其他進程對保護進程內存進行讀寫,現有的是通過編寫驅動程序繞過防護,這樣做很麻煩而且實現起來很費勁,通用性也不高。用驅動方法過保護針對不同的保護要寫不同的驅動程序,實現起來比較復雜且兼容性很差容易藍屏。在遇到想把某個exe改成dll方式運行的時候又苦于沒有源代碼,或者源代碼太過復雜難以短時間看懂。
發明內容
為了解決現有技術中的上述問題,本發明實施例提供了一種可執行程序動態調用方法。所述技術方案如下:
本發明提供了一種可執行程序動態調用方法,其包括如下步驟:運行宿主程序,由宿主程序進程將預先注入的動態鏈接庫文件調入內存;執行該動態鏈接庫內預置的加載模塊,由其以操作系統所兼容的方式加載所述可執行程序至內存中;啟動運行該可執行程序的內存鏡像。
進一步,上述本發明的一種實施方式還包括前置步驟:運行第三方工具程序由其進程將所述的動態鏈接庫文件注入到所述宿主程序中。
具體地,上述加載模塊以操作系統所兼容的方式加載所述可執行程序至內存的過程包括如下具體步驟:將所述可執行程序的文件從存儲單元加載到內存中成為鏡像;重定向至該可執行程序內存鏡像的運行入口點地址;根據宿主程序修改該可執行程序內存鏡像中的不匹配函數。
在一種實施方式中,上述根據宿主程序修改該可執行程序內存鏡像中的不匹配函數,包括:借助第三方工具PETooL查看宿主程序的導入表,分析是否需要對其使用的函數進行修復;如果遇到可執行程序與宿主進程同時使用了第三方函數則需查看第三方開發文檔判斷是否要做防沖突處理。
其中上述重定向至該可執行程序內存鏡像的運行入口點地址的步驟包括如下具體步驟:初始化導入地址表;初始化地址重定位表;重新定位該可執行程序內存鏡像的運行入口點內存地址。
具體地,上述第三方工具程序是微軟提供的遠程線程編寫注入代碼。
本發明還提供一種可執行程序動態調用系統,其包括如下模塊:調入模塊,運行的宿主程序進程利用該調入模塊將預先注入的動態鏈接庫文件調入內存;加載模塊,其內預置于所述動態鏈接庫,用于所述動態鏈接庫以操作系統所兼容的方式加載所述可執行程序至內存中;啟動模塊,用于啟動運行該可執行程序的內存鏡像。
具體上述加載模塊包括:初始化單元:初始化導入地址表,初始化地址重定位表;重定位單元:重新定位該可執行程序內存鏡像的運行入口點內存地址。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于廣州華多網絡科技有限公司,未經廣州華多網絡科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611040855.2/2.html,轉載請聲明來源鉆瓜專利網。





