[發(fā)明專利]將自定義DLL注入目標(biāo)進(jìn)程的方法及裝置有效
| 申請(qǐng)?zhí)枺?/td> | 201310462428.3 | 申請(qǐng)日: | 2013-09-30 |
| 公開(公告)號(hào): | CN103530118B | 公開(公告)日: | 2017-01-11 |
| 發(fā)明(設(shè)計(jì))人: | 馮世杰 | 申請(qǐng)(專利權(quán))人: | 廣州華多網(wǎng)絡(luò)科技有限公司 |
| 主分類號(hào): | G06F9/44 | 分類號(hào): | G06F9/44 |
| 代理公司: | 北京三高永信知識(shí)產(chǎn)權(quán)代理有限責(zé)任公司11138 | 代理人: | 張耀光 |
| 地址: | 511446 廣東省廣州市番*** | 國省代碼: | 廣東;44 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 自定義 dll 注入 目標(biāo) 進(jìn)程 方法 裝置 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種將自定義DLL注入目標(biāo)進(jìn)程的方法及裝置。
背景技術(shù)
隨著WINDOWS應(yīng)用的飛速發(fā)展,WINDOWS?API編程得到了廣泛的普及和應(yīng)用,為了更好地收集一些系統(tǒng)運(yùn)行時(shí)的數(shù)據(jù),可以通過HOOK?API(HOOK?Application?Programming?Interface,具有鉤子功能的應(yīng)用程序編程接口)的方式對(duì)系統(tǒng)在應(yīng)用層的程序進(jìn)行HOOK(鉤子)處理以攔截需要的數(shù)據(jù)。
目前,通過HOOK?API攔截需要的數(shù)據(jù)時(shí),首先需要將編寫有可實(shí)現(xiàn)功能的DLL(DynamicLinkLibrary,動(dòng)態(tài)鏈接庫)注入到被HOOK的目標(biāo)進(jìn)程中。一種在應(yīng)用層中將DLL注入目標(biāo)進(jìn)程的方法,可以包括:首先編寫一個(gè)可以實(shí)現(xiàn)所需功能的自定義DLL,比如,如果想要HOOK目標(biāo)進(jìn)程中符合條件的數(shù)據(jù),則該自定義DLL的代碼段中可以包括用于獲取目標(biāo)進(jìn)程中符合該條件的數(shù)據(jù)的代碼,這里所講的目標(biāo)進(jìn)程為想要HOOK的進(jìn)程;然后通過鉤子函數(shù)SetWindowsHookEx將該自定義DLL注入到目標(biāo)進(jìn)程中。
在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:由于鉤子函數(shù)SetWindowsHookEx是基于消息的,每次注入的時(shí)機(jī)會(huì)受到其他條件的限制,所以在將自定義DLL注入到目標(biāo)進(jìn)程時(shí),該目標(biāo)進(jìn)程可能已經(jīng)執(zhí)行了一段時(shí)間,因此這段時(shí)間產(chǎn)生的數(shù)據(jù)是無法被HOOK到的。由此可知,通過現(xiàn)有的注入方法進(jìn)行HOOK操作時(shí),不能完全獲取到目標(biāo)進(jìn)程在執(zhí)行時(shí)產(chǎn)生的數(shù)據(jù)。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中通過現(xiàn)有的注入方法進(jìn)行HOOK操作時(shí),不能完全獲取到目標(biāo)進(jìn)程在運(yùn)行時(shí)產(chǎn)生的數(shù)據(jù)的問題,本發(fā)明實(shí)施例提供了一種將自定義DLL注入目標(biāo)進(jìn)程的方法及裝置。所述技術(shù)方案如下:
第一方面,提供了一種。將自定義DLL注入目標(biāo)進(jìn)程的方法,所述方法,包括:
創(chuàng)建目標(biāo)進(jìn)程;
在所述目標(biāo)進(jìn)程開始運(yùn)行之前,修改用于加載DLL的加載函數(shù),使得在所述目標(biāo)進(jìn)程開始運(yùn)行并調(diào)用所述加載函數(shù)后,將所述目標(biāo)進(jìn)程的執(zhí)行點(diǎn)從所述加載函數(shù)的起始代碼跳轉(zhuǎn)至所述目標(biāo)進(jìn)程中預(yù)先分配好的指定內(nèi)存中;
在所述目標(biāo)進(jìn)程開始運(yùn)行并調(diào)用所述加載函數(shù)后,利用預(yù)先設(shè)定在所述指定內(nèi)存中的加載代碼調(diào)用所述加載函數(shù)的真實(shí)函數(shù)體,由所述加載函數(shù)的真實(shí)函數(shù)體將所述自定義DLL加載至所述目標(biāo)進(jìn)程;
其中,所述加載函數(shù)的真實(shí)函數(shù)體為在所述修改用于加載DLL的加載函數(shù)前所述加載函數(shù)中具有的函數(shù)體。
在第一方面的第一種可能的實(shí)施方式中,在所述目標(biāo)進(jìn)程開始運(yùn)行并調(diào)用所述加載函數(shù)之后,還包括:
檢測所述自定義DLL運(yùn)行時(shí)是否需要調(diào)用NTDLL以及依賴DLL,所述依賴DLL為所述自定義DLL運(yùn)行時(shí)所需要調(diào)用的非NTDLL的DLL;
若檢測結(jié)果為所述自定義DLL運(yùn)行時(shí)僅需要調(diào)用NTDLL,則直接執(zhí)行利用預(yù)先設(shè)定在所述指定內(nèi)存中的加載代碼調(diào)用所述加載函數(shù)的真實(shí)函數(shù)體,由所述加載函數(shù)的真實(shí)函數(shù)體將所述自定義DLL加載至所述目標(biāo)進(jìn)程的步驟。
結(jié)合第一方面或者第一方面的第一種可能的實(shí)施方式,在第二種可能的實(shí)施方式中,在所述檢測所述自定義DLL運(yùn)行時(shí)是否需要調(diào)用NTDLL以及依賴DLL之后,還包括:
若檢測結(jié)果為所述自定義DLL運(yùn)行時(shí)需要調(diào)用NTDLL以及依賴DLL,則判斷所述自定義DLL運(yùn)行時(shí)需要調(diào)用的所有依賴DLL是否全部被加載完;
若判斷結(jié)果為所述自定義DLL運(yùn)行時(shí)需要調(diào)用的所有依賴DLL全部被加載完,則直接執(zhí)行利用預(yù)先設(shè)定在所述指定內(nèi)存中的加載代碼調(diào)用所述加載函數(shù)的真實(shí)函數(shù)體,由所述加載函數(shù)的真實(shí)函數(shù)體將所述自定義DLL加載至所述目標(biāo)進(jìn)程的步驟;
若判斷結(jié)果為所述自定義DLL運(yùn)行時(shí)需要調(diào)用的所有依賴DLL未被全部加載完,則利用預(yù)先設(shè)定在所述指定內(nèi)存中的加載代碼調(diào)用所述加載函數(shù)的真實(shí)函數(shù)體,由所述加載函數(shù)的真實(shí)函數(shù)體加載所述目標(biāo)進(jìn)程中即將需要加載的DLL。
結(jié)合第一方面、第一方面的第一種可能的實(shí)施方式或者第一方面的第二種可能的實(shí)施方式,在第三種可能的實(shí)施方式中,所述判斷所述自定義DLL運(yùn)行時(shí)需要調(diào)用的所有依賴DLL是否全部被加載完,包括:
判斷預(yù)存的判斷列表中是否存在所述自定義DLL運(yùn)行時(shí)需要調(diào)用的所有的依賴DLL的名稱,其中,所述判斷列表中保存有已經(jīng)被加載至所述目標(biāo)進(jìn)程中的所述自定義DLL運(yùn)行時(shí)需要調(diào)用的依賴DLL的名稱;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于廣州華多網(wǎng)絡(luò)科技有限公司,未經(jīng)廣州華多網(wǎng)絡(luò)科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310462428.3/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 對(duì)調(diào)用DLL導(dǎo)出函數(shù)進(jìn)行攔截跟蹤的方法
- 一種高速延遲鎖相環(huán)
- 延遲鎖相環(huán)電路設(shè)備及延遲鎖相環(huán)鎖定方法
- 一種DRAM時(shí)鐘同步系統(tǒng)
- 一種加固安裝包的動(dòng)態(tài)鏈接庫DLL文件的方法和裝置
- 一種DRAM時(shí)鐘同步系統(tǒng)
- 檢測與攔截Mimikatz的方法、裝置、計(jì)算機(jī)設(shè)備及可讀存儲(chǔ)介質(zhì)
- 防止不良DLL注入的方法、存儲(chǔ)介質(zhì)、電子設(shè)備及系統(tǒng)
- 一種DLL文件的處理方法及相關(guān)裝置
- 動(dòng)態(tài)鏈接庫文件劫持檢測方法、設(shè)備及存儲(chǔ)介質(zhì)
- 目標(biāo)檢測裝置、學(xué)習(xí)裝置、目標(biāo)檢測系統(tǒng)及目標(biāo)檢測方法
- 目標(biāo)監(jiān)測方法、目標(biāo)監(jiān)測裝置以及目標(biāo)監(jiān)測程序
- 目標(biāo)監(jiān)控系統(tǒng)及目標(biāo)監(jiān)控方法
- 目標(biāo)跟蹤方法和目標(biāo)跟蹤設(shè)備
- 目標(biāo)跟蹤方法和目標(biāo)跟蹤裝置
- 目標(biāo)檢測方法和目標(biāo)檢測裝置
- 目標(biāo)跟蹤方法、目標(biāo)跟蹤裝置、目標(biāo)跟蹤設(shè)備
- 目標(biāo)處理方法、目標(biāo)處理裝置、目標(biāo)處理設(shè)備及介質(zhì)
- 目標(biāo)處理方法、目標(biāo)處理裝置、目標(biāo)處理設(shè)備及介質(zhì)
- 目標(biāo)跟蹤系統(tǒng)及目標(biāo)跟蹤方法





