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

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>
            欧美国产日产韩国视频| 久久久久国产一区二区| 91久久中文字幕| 麻豆国产va免费精品高清在线| 伊人精品在线| 亚洲国产精品高清久久久| 欧美福利专区| 亚洲午夜久久久| 中文精品视频| 国产在线成人| 亚洲国产一区二区三区青草影视| 欧美激情第9页| 香港成人在线视频| 久久精品亚洲精品| 一区二区免费在线观看| 亚洲淫片在线视频| 亚洲电影免费在线| 宅男噜噜噜66国产日韩在线观看| 国产精品久久久一区二区三区| 久久成人国产精品| 欧美激情第3页| 欧美亚洲综合在线| 欧美成人tv| 欧美综合第一页| 欧美成人午夜剧场免费观看| 中文av一区二区| 久久久噜噜噜久久人人看| 亚洲美女精品久久| 欧美在线在线| 亚洲淫片在线视频| 老司机午夜免费精品视频| 亚洲综合色婷婷| 欧美高清日韩| 久久久伊人欧美| 欧美午夜国产| 亚洲国产精品高清久久久| 国产日韩欧美三级| 日韩亚洲视频在线| 亚洲级视频在线观看免费1级| 制服丝袜亚洲播放| 亚洲欧洲精品一区二区| 欧美专区第一页| 午夜伦理片一区| 欧美精品1区| 欧美国产极速在线| 黑丝一区二区三区| 午夜精品视频在线| 亚洲女与黑人做爰| 国产精品a久久久久| 亚洲国产精品va在看黑人| 激情综合色综合久久| 亚洲一区二区三区精品在线| 9色精品在线| 欧美激情一区二区在线| 欧美成人亚洲| 在线看欧美日韩| 久久精品国产久精国产思思| 欧美一区二区三区播放老司机| 欧美日韩国产三区| 日韩视频精品在线| 99热精品在线| 欧美精品日韩一本| 亚洲伦理网站| 国产精品99久久久久久www| 欧美高清视频www夜色资源网| 欧美国产日产韩国视频| 亚洲高清在线观看一区| 毛片av中文字幕一区二区| 美女视频网站黄色亚洲| 激情文学综合丁香| 久久久久免费| 欧美黄色aaaa| 亚洲最新视频在线| 欧美日韩一区二区三区在线视频| 亚洲三级性片| 亚洲午夜免费视频| 国产精品亚洲综合久久| 亚洲免费视频在线观看| 午夜在线观看欧美| 国产又爽又黄的激情精品视频 | 亚洲黄色片网站| 猛干欧美女孩| 99精品免费| 欧美一区二区三区视频| 国产亚洲激情在线| 欧美α欧美αv大片| 日韩午夜电影| 久久精品欧美日韩| 亚洲高清二区| 国产精品99免费看| 欧美一级理论性理论a| 欧美成人第一页| 亚洲午夜小视频| 狠狠狠色丁香婷婷综合久久五月| 欧美成人免费在线观看| 日韩亚洲国产欧美| 久久综合五月天婷婷伊人| 亚洲精品小视频| 欧美人在线观看| 国产亚洲精品bt天堂精选| 欧美—级在线免费片| 亚洲视频精选| 另类人畜视频在线| 一区二区免费在线视频| 国产一区二区三区久久精品| 欧美国产一区视频在线观看| 亚洲综合精品四区| 亚洲国产欧美精品| 久久精品国产99精品国产亚洲性色| 亚洲第一免费播放区| 国产精品国产三级国产专播品爱网| 久久久爽爽爽美女图片| 一本久久精品一区二区| 久久漫画官网| 亚洲欧美bt| 亚洲毛片av在线| 在线播放一区| 国产日韩欧美中文在线播放| 欧美凹凸一区二区三区视频| 亚洲一区二区av电影| 欧美激情精品| 久久午夜av| 欧美一激情一区二区三区| 日韩一级精品| 91久久精品国产91性色tv| 国产日韩视频一区二区三区| 欧美日韩精品免费观看视一区二区 | 性做久久久久久久久| 99riav国产精品| 亚洲第一在线综合在线| 欧美伊人久久久久久久久影院| 99国产精品国产精品毛片| 尤物yw午夜国产精品视频| 国产精品一区二区男女羞羞无遮挡 | 免费不卡视频| 久久久99爱| 午夜精品一区二区在线观看 | 亚洲欧洲中文日韩久久av乱码| 久久久成人网| 久久国产精品久久久久久| 亚洲午夜视频在线观看| 一区二区三区.www| 亚洲美女电影在线| 日韩一级成人av| 日韩视频在线一区| 日韩视频一区二区在线观看| 亚洲福利电影| 亚洲美女啪啪| 99亚洲伊人久久精品影院红桃| 亚洲毛片播放| 国产精品99久久久久久人| 亚洲日本中文| 中文一区二区| 久久都是精品| 久久久午夜电影| 牛牛影视久久网| 亚洲激情电影在线| 日韩午夜在线观看视频| 一区二区三区日韩精品| 亚洲一区二区三区四区视频| 亚洲欧美日韩在线综合| 欧美一区二区三区四区视频| 久久精品五月| 欧美激情在线观看| 国产精品理论片在线观看| 国产视频在线观看一区二区| 一区二区在线不卡| 一本不卡影院| 欧美一区二区三区视频在线 | 久久激五月天综合精品| 免费av成人在线| 夜色激情一区二区| 午夜亚洲影视| 欧美国产日本| 国产日韩在线看| 亚洲三级免费| 欧美在线国产| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲无吗在线| 久久综合图片| 在线一区亚洲| 久久影院午夜片一区| 欧美日韩亚洲视频| 国外成人性视频| 亚洲午夜一区二区| 欧美韩日视频| 午夜一区二区三区在线观看| 裸体丰满少妇做受久久99精品| 国产精品www| 亚洲欧洲一区二区在线播放| 午夜日韩电影| 日韩亚洲在线| 你懂的国产精品| 国产色婷婷国产综合在线理论片a| 亚洲国产精品一区二区久| 久久av红桃一区二区小说| 亚洲精品欧美日韩| 久久视频在线看| 国产专区欧美专区| 亚洲欧美日韩中文播放|