青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
Ring3下注入DLL的另類方法,能過殺軟和游戲NP(源碼)

????注入DLL是做全局鉤子或者攔截類軟件都有可能用到的技術,如果做外掛的話我們也有可能需要注入一個DLL到游戲進程中去干點什么“壞事”。?但我們知道現在要注入DLL是越來越難了。場景1:制作火星文輸入法外掛,原理是利用API?HOOK攔截并修改輸入法相關函數,需要注入一個DLL到所有進程中,但是后來發現,在開啟了瑞星的帳號保險箱后,用戶將不能在QQ中輸入火星文。原因是瑞星保護了QQ進程,禁止對其注入DLL,解決方法是提示用戶關閉帳號保險箱?-_-|??確實是很降低用戶體驗的一個不是辦法的辦法。場景2:制作某游戲外掛,需要注入一個DLL到游戲進程中去直接調用游戲函數完成某一功能。結果發現該游戲有NP保護,OpenProcess打不開,創建遠程線程也不行,試用其它方法也一一失敗。遇到上面的情況,高手們自然是轉到Ring0下面去,使用驅動之類的辦法來對付啦,不過吾等菜鳥可就是酒井沒法子了?-_-|?
????不過也別太灰心,凡事總會有辦法的。我想我們需要一種持久的、穩定的、不容易被安全軟件屏蔽的DLL注入方法,后來發現,輸入法程序就是能完成這一任務的理想人選。輸入法程序程序到底是什么?它沒有自己的進程,并且在系統還沒有登錄時就已被加載(在歡迎界面你也可以調出輸入法),它可以在游戲中打開,也可以在控制臺程序中打開,還可以在瑞星保護下的QQ中打開,在殺軟中也可以打開,這不就是我們要找的特性嗎。那么,輸入法到底是什么呢?根據Windows的規定,輸入法其實就是一個DLL,不過它是一個特殊的DLL,它必須具有標準輸入法程序所規定的那些接口,輸入法是由輸入法管理器(imm32.dll)控制的,輸入法管理器又是由user32.dll控制的。輸入法在系統目錄是以IME為擴展名的文件,當在應用程序中激活某個輸入法時,輸入法管理器就會在那個應用程序的進程中加載對應的IME文件,注意,加載IME文件跟加載普通的DLL并沒有本質區別,所以,可以認為,輸入法其實就是注入到應用程序中的一個DLL文件,并且,這種“注入”是不會被殺軟和游戲NP攔截的(至少目前是)。現在,我們已經有了一個注入DLL的另類方法,那就是利用輸入法。具體流程是這樣,首先制作一個標準輸入法文件,但是這個輸入法并不完成文字輸入工作,它的唯一任務就是用來注入DLL,所以稱為“服務輸入法”,然后,制作一個控制程序,來控制服務輸入法,當然最后還需要一個用于注入的目標DLL,這樣一共就有3個文件。開始工作后,控制程序首先將服務輸入法安裝到系統中,然后傳遞幾個參數給服務輸入法,參數中包括了需要注入的DLL文件的名稱和路徑,然后,控制程序將服務輸入法設置為系統的默認輸入法,這樣新的程序一打開,服務輸入法就會注入那個程序。當然,在服務輸入法安裝之前打開的程序不會被注入,這時需要向系統中的所有窗口POST一條WM_INPUTLANGCHANGEREQUEST消息,該消息可以在指定窗口中后臺激活服務輸入法,這樣,系統中所有擁有窗口的進程就都被我們的服務輸入法注入了。服務輸入法注入程序之后,就會根據控制程序傳遞過來的參數加載目標DLL,這樣目標DLL也就隨著服務輸入法一同注入到目標程序中了。注意服務輸入法是控制程序用WM_INPUTLANGCHANGEREQUEST消息在所有窗口中自動激活的,如果某個窗口自動激活失敗,你就需要在那個窗口中手工切換到服務輸入法,這樣才能注入進去了。至于注入以后,你就可以在窗口中切換到別的輸入法,這并不會影響已經注入進去的DLL。我將這一套功能制作成一個完整的示例,你可以在以下地址下載:?http://www.pen88.com/download/imehook.rar??壓縮包中的第6個和第8個文件夾演示了此功能并包含所有源代碼。其中文件imedllhost09.dll就是服務輸入法,運行時會被安裝到系統中,控制程序退出時會自動卸載該輸入法,這樣用戶就不太容易察覺,你還可以重新編譯該輸入法,將名稱改為“中文(中國)”,這樣隱蔽性更好。文件hxwdllwx.dll是演示用的目標DLL,你可以替換成自己的DLL,然后那個exe文件就是控制程序了。輸入法imedllhost09.dll在運行時會被復制到系統目錄并更名為imedllhost09.ime,它導出了2個函數用于控制。在VB中的聲明為:
Public?Declare?Function?IMESetPubString?Lib?"imedllhost09.ime"?(ByVal?RunDLLStr?As?String,?ByVal?UnloadDll?As?Long,?ByVal?loadNextIme?As?Long,?ByVal?DllData1?As?Long,?ByVal?DllData2?As?Long,?ByVal?DllData3?As?Long)?As?Long
Public?Declare?Function?IMEClearPubString?Lib?"imedllhost09.ime"?()?As?Long
其中IMESetPubString用于向輸入法傳遞要注入的DLL等參數。RunDLLStr,要注入的DLL命令和完整路徑。UnloadDll,當輸入法退出時,是否同時卸載目標DLL?0-是,1-否。loadNextIme,當切換至該服務輸入法時,是否直接切換到下一個輸入法(這樣服務輸入法就好像被跳過了,可最小限度影響用戶的輸入法順序)?0-否,1-是。DllData1,DllData2,DllData3是傳遞給目標DLL的回調函數(函數名稱必須為RunDllHostCallBack)的參數,你可以在目標DLL中導出一個函數,名稱為RunDllHostCallBack,這樣當輸入法注入時會調用目標DLL的該回調函數并向其傳遞這3個參數。函數原型為(VC):
DWORD?RunDllHostCallBack(DWORD?calldata1,?DWORD?calldata2,DWORD?calldata3);
IMEClearPubString函數用于清除輸入法的配置,清除后,輸入法將停止在新的程序中注入目標DLL,但已注入的DLL不會卸載。
好了,利用輸入法來注入DLL基本上就是這樣了,詳細的用法大家可以看壓縮包中的第8個文件夾,其中服務輸入法是VC寫的,控制程序是VB的,代碼都是有注釋的。測試發現該方法能過目前所有殺軟,也能注入冰刃。當然缺點還是有的,就是目標程序如果不接受輸入法那就沒辦法了,但是現在一般的游戲都不會禁止玩家在里面打字吧,而且殺軟也不能禁止用戶輸入漢字吧,哈哈,所以通用性應該還是蠻好的。



最后,我再介紹另一個注入DLL的方法,估計也很少被用到。是利用一個未公開函數RegisterUserApiHook,可以在網上搜索關鍵詞“RegisterUserApiHook”,查到有人在Windows?2003下測試成功,但是我在Windows?XP測試卻失敗。后來終于找到了失效的原因。RegisterUserApiHook函數可以在系統中注冊一個全局鉤子,你需要在鉤子中指定一個DLL和一個回調函數,然后,所有加載了user32.dll的程序就都會在啟動時加載你指定的這個DLL。用這個函數來注入DLL也是很不錯的。但是測試發現它的注入能力似乎趕不上上面提到的利用輸入法來注入的辦法,可以注入一般的程序和某些安全程序,但是對冰刃無效。而且它有一個限制,就是系統中只能同時存在一個這樣的鉤子。實際上這個鉤子平時是被系統中的Themes服務占用了,Themes服務正是利用這個鉤子HOOK了繪制窗口的相關API,所以才讓所有程序窗口變成XP主題樣式的。所以我們要用這個鉤子的話,必須先關閉Themes服務,這樣在XP下也可以用了,但是這樣系統就變成Windows?2000的樣式了?-_-|?

RegisterUserApiHook函數的VB聲明如下:
Public?Declare?Function?RegisterUserApiHookXP?Lib?"user32"?Alias?"RegisterUserApiHook"?(ByVal?hInstance?As?Long,?ByVal?fnUserApis?As?Long)?As?Long
Public?Declare?Function?RegisterUserApiHook2003?Lib?"user32"?Alias?"RegisterUserApiHook"?(pRegInfo?As?HookAPIRegInfo2003)?As?Long

可以看到,在XP和2003下這個函數的參數是不一樣的。關于此函數的示例代碼,請參見壓縮包中的第5個文件夾。

最后的最后,再介紹一個未公開函數InitializeLpkHooks,這個函數在網上能找到的資料更少,只有一個聲明而已。但是它名稱中最后那個“Hooks”誤導了我,我以為又是一個可以用來注入DLL的不錯函數,用OD反出來一看,原來只是個局部HOOK而已。雖然沒太大用,還是一并寫上吧,也許誰用得著呢。InitializeLpkHooks顧名思義就是HOOK?LPK的,Windows有個lpk.dll,就是支持多語言包的那么個功能。測試發現好多程序在TextOut之前似乎是要調用lpk.dll里面的相關函數的,可能是支持多語言的程序就需要用這個來判斷到底要顯示那種語言吧。而InitializeLpkHooks,就是用來HOOK?lpk.dll里面的4個函數的,這4個函數是LpkTabbedTextOut,LpkPSMTextOut,LpkDrawTextEx,LpkEditControl。我們先打開VB,在窗體中加入以下代碼吧:
Private?Sub?Form_Load()
DLLhwnd?=?LoadLibrary("lpk.dll")???'加載DLL
DLLFunDre?=?GetProcAddress(DLLhwnd,?"LpkDrawTextEx")???'獲取回調函數地址

LpkHooksInfo.lpHookProc_LpkTabbedTextOut?=?0
LpkHooksInfo.lpHookProc_LpkPSMTextOut?=?0
LpkHooksInfo.lpHookProc_LpkDrawTextEx?=?GetLocalProcAdress(AddressOf?HookProc1)???'設置要HOOK的LPK函數
LpkHooksInfo.lpHookProc_LpkEditControl?=?0
InitializeLpkHooks?LpkHooksInfo
End?Sub

Private?Sub?Form_Unload(Cancel?As?Integer)
LpkHooksInfo.lpHookProc_LpkTabbedTextOut?=?0
LpkHooksInfo.lpHookProc_LpkPSMTextOut?=?0
LpkHooksInfo.lpHookProc_LpkDrawTextEx?=?DLLFunDre
LpkHooksInfo.lpHookProc_LpkEditControl?=?0
InitializeLpkHooks?LpkHooksInfo
FreeLibrary?DLLhwnd
End?Sub


然后新建一個模塊,在模塊中加入以下代碼:
Public?Declare?Function?LoadLibrary?Lib?"kernel32"?Alias?"LoadLibraryA"?(ByVal?lpLibFileName?As?String)?As?Long
Public?Declare?Function?GetProcAddress?Lib?"kernel32"?(ByVal?hModule?As?Long,?ByVal?lpProcName?As?String)?As?Long
Public?Declare?Function?FreeLibrary?Lib?"kernel32"?(ByVal?hLibModule?As?Long)?As?Long
'?----------------未公開函數--------------------------------------
Public?Declare?Sub?InitializeLpkHooks?Lib?"user32"?(lpProcType?As?Any)

Type?LpkHooksSetting
????lpHookProc_LpkTabbedTextOut?As?Long
????lpHookProc_LpkPSMTextOut?As?Long
????lpHookProc_LpkDrawTextEx?As?Long
????lpHookProc_LpkEditControl?As?Long
End?Type

'?-------------------------------
Public?DLLhwnd?As?Long,?DLLFunDre?As?Long
Public?LpkHooksInfo?As?LpkHooksSetting

Public?Function?GetLocalProcAdress(ByVal?lpProc?As?Long)?As?Long
GetLocalProcAdress?=?lpProc
End?Function

Function?HookProc1(ByVal?a1?As?Long,?ByVal?a2?As?Long,?ByVal?a3?As?Long,?ByVal?a4?As?Long,?ByVal?a5?As?Long,?ByVal?a6?As?Long,?ByVal?a7?As?Long,?ByVal?a8?As?Long,?ByVal?a9?As?Long,?ByVal?a10?As?Long)?As?Long
HookProc1?=?0
End?Function

運行一下看看,是不是窗體中標題欄和按鈕上的文字都沒有了,因為我們把函數LpkDrawTextEx替換成自己的函數HookProc1了。這個函數有10個參數,其中幾個好像是字符串指針,似乎可以用來截獲窗體要顯示的文字,然后改成另一種語言的文字,我猜想,也許就是這個用途吧。哈哈,純屬猜測。以上就是函數InitializeLpkHooks的用法了。

以上就是全部。?
本文所有示例代碼的下載地址是:?http://www.pen88.com/download/imehook.rar
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产欧美日韩一级| 99在线热播精品免费| 亚洲欧洲午夜| 1024亚洲| 亚洲国产精品嫩草影院| **网站欧美大片在线观看| 亚洲第一页中文字幕| 免费欧美在线| 国产乱码精品一区二区三| 国产精品精品视频| 国产午夜亚洲精品羞羞网站| 国产视频在线一区二区| 在线观看av不卡| 亚洲国内自拍| 亚洲男同1069视频| 毛片一区二区三区| 亚洲人成网站在线播| 中文av一区特黄| 久久精品成人| 欧美日韩亚洲系列| 一色屋精品视频免费看| 亚洲免费激情| 久久国产精品网站| 亚洲激情网址| 校园激情久久| 欧美日韩成人一区二区三区| 国产日韩视频一区二区三区| 亚洲免费精彩视频| 榴莲视频成人在线观看| 宅男66日本亚洲欧美视频| 久久露脸国产精品| 国产精品露脸自拍| 亚洲免费av观看| 久久久久久久久久久成人| 亚洲欧洲一区| 久久精品一区蜜桃臀影院| 欧美日韩无遮挡| 亚洲精品久久久久中文字幕欢迎你 | 日韩一区二区精品在线观看| 久久九九精品| 国产精品麻豆成人av电影艾秋| 亚洲三级影院| 久久久久久久久一区二区| 一区二区精品国产| 欧美不卡视频| 在线成人亚洲| 久久久久国产成人精品亚洲午夜| 亚洲美女福利视频网站| 免费不卡在线视频| 激情视频一区| 久久精品欧美日韩精品| 午夜免费电影一区在线观看| 欧美视频导航| 99热在这里有精品免费| 欧美韩日精品| 榴莲视频成人在线观看| 国内精品久久久久久| 欧美自拍偷拍午夜视频| 这里只有精品丝袜| 欧美日韩免费高清一区色橹橹| 亚洲激情视频在线| 亚洲精品美女| 国产一二三精品| 欧美一区二区三区免费视频| av成人免费在线| 欧美日韩国语| 亚洲一区二区三区在线看| 一区二区三区成人| 国产精品v欧美精品v日韩| 亚洲在线视频| 亚洲综合三区| 一区二区在线观看视频| 欧美高清日韩| 欧美精品久久天天躁| 宅男噜噜噜66一区二区| 一本色道久久综合亚洲精品不卡| 欧美日韩美女| 久久精品亚洲| 麻豆精品精华液| 一本色道久久综合亚洲精品不| 一区二区三区黄色| 国产视频在线观看一区二区三区| 麻豆久久婷婷| 欧美激情国产日韩| 欧美一二三区在线观看| 美女视频黄 久久| 亚洲一区二区3| 欧美伊人久久大香线蕉综合69| 亚洲国产精品国自产拍av秋霞| 亚洲日韩欧美视频一区| 国产精品日韩在线| 美女视频黄 久久| 欧美日韩一本到| 久久精品国产99| 麻豆精品视频在线观看视频| 亚洲一区二区三区四区中文| 久久精品免费| 亚洲欧美一区二区精品久久久| 久久精品水蜜桃av综合天堂| 99re成人精品视频| 久久久久久久999精品视频| 亚洲午夜黄色| 看欧美日韩国产| 欧美一区1区三区3区公司| 久久久久亚洲综合| 午夜视频在线观看一区二区三区| 欧美18av| 久久久亚洲精品一区二区三区 | 久久久久久久一区| 亚洲欧美韩国| 蜜臀91精品一区二区三区| 欧美一区二区三区婷婷月色| 欧美久久久久久久久久| 乱人伦精品视频在线观看| 国产精品超碰97尤物18| 欧美激情一区二区三区在线| 国产偷国产偷亚洲高清97cao| 亚洲精品国产精品国产自| 亚洲第一网站免费视频| 欧美一区二区高清在线观看| 亚洲欧美影院| 香蕉成人久久| 免费91麻豆精品国产自产在线观看| 亚洲伊人观看| 欧美日韩二区三区| 欧美大片第1页| 国内精品久久久久久| 欧美一级淫片aaaaaaa视频| 亚洲在线视频网站| 欧美视频一区在线观看| 亚洲精品一区二区三区樱花| 日韩午夜电影| 欧美大片在线观看一区| 欧美顶级大胆免费视频| 亚洲国产精品久久91精品| 久久精品视频在线看| 浪潮色综合久久天堂| 国内精品国产成人| 久久一区中文字幕| 亚洲福利视频免费观看| 亚洲欧洲日本专区| 欧美激情第六页| 亚洲精品在线视频观看| 亚洲欧美中文另类| 国产免费观看久久黄| 欧美一区二区三区视频免费播放| 久久爱www.| 一区在线免费| 欧美成人在线免费观看| 亚洲国产日本| 中文在线资源观看网站视频免费不卡 | 亚洲国产合集| 欧美成人有码| 一本到高清视频免费精品| 亚洲天堂免费观看| 国产精品日本一区二区| 欧美亚洲日本网站| 欧美不卡视频一区发布| 亚洲乱亚洲高清| 国产精品久久777777毛茸茸| 亚洲欧美国产视频| 蜜桃av噜噜一区| 99pao成人国产永久免费视频| 国产精品久久国产精麻豆99网站| 欧美一级播放| 亚洲国产欧美在线人成| 午夜精品视频网站| 亚洲国产日韩欧美在线动漫| 欧美午夜在线一二页| 久久av一区二区三区漫画| 亚洲国产你懂的| 性做久久久久久免费观看欧美| 精品88久久久久88久久久| 欧美日韩亚洲视频| 久久久久久精| 亚洲午夜精品视频| 亚洲大片免费看| 翔田千里一区二区| 亚洲国产日韩欧美在线99| 国产精品入口| 欧美成人资源| 欧美在线你懂的| 夜夜爽夜夜爽精品视频| 欧美成人激情视频免费观看| 蜜桃久久av| 夜夜爽夜夜爽精品视频| 久久综合久久88| 一区二区三区高清在线 | 一本在线高清不卡dvd| 国产区精品视频| 欧美片第1页综合| 久久久免费av| 亚洲一区三区电影在线观看| 欧美国产一区二区三区激情无套| 欧美一级欧美一级在线播放| 一区二区三区日韩欧美| 亚洲国内精品在线| 韩日成人在线| 国产精品网站视频| 欧美日韩一区二区三区|