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

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>
            亚洲国产欧美日韩精品| 怡红院精品视频在线观看极品| 亚洲破处大片| 亚洲在线中文字幕| 夜夜嗨一区二区| 亚洲精品久久久久中文字幕欢迎你 | 美女诱惑黄网站一区| 欧美在线三区| 久久久亚洲高清| 欧美mv日韩mv国产网站| 欧美成黄导航| 国产精品美女一区二区| 一本色道久久综合狠狠躁的推荐| 亚洲高清不卡在线| 亚洲乱码国产乱码精品精| 亚洲二区视频| 99热在线精品观看| 欧美一区二区视频97| 久久日韩精品| 夜夜嗨av一区二区三区| 欧美一区二区福利在线| 久久精品国语| 亚洲二区三区四区| 香蕉乱码成人久久天堂爱免费| 麻豆精品视频| 国产精品一区久久| 9久re热视频在线精品| 午夜精品亚洲| 亚洲人成在线观看一区二区| 午夜精品久久久久久久99樱桃 | 亚洲影院高清在线| 老巨人导航500精品| 欧美性猛交xxxx免费看久久久| 国产亚洲精品激情久久| 亚洲高清成人| 欧美一级免费视频| 欧美激情视频网站| 国产精品99久久久久久白浆小说| 久久国产一区| 国产精品久久久久久影视| 91久久精品一区二区三区| 亚洲一区二区三区国产| 久久夜色精品| 欧美一区二区日韩一区二区| 欧美国产日韩亚洲一区| 国产一区二区高清| 亚洲一区精品电影| 欧美激情久久久| 久久www成人_看片免费不卡| 欧美视频二区36p| 亚洲精品视频在线| 牛人盗摄一区二区三区视频| 亚洲欧美一区二区三区久久| 欧美人在线视频| 亚洲欧洲在线播放| 女女同性精品视频| 久久国内精品自在自线400部| 欧美日韩一级视频| 亚洲精品一区二区三| 久久久久一区二区三区四区| 亚洲午夜精品久久| 欧美三级乱人伦电影| 亚洲国产精品一区二区第四页av| 久久国产精品网站| 亚洲天堂av图片| 国产精品美女久久| 午夜精品久久久久久99热软件| 亚洲日本理论电影| 欧美伦理一区二区| 欧美不卡激情三级在线观看| 亚洲成人在线网站| 蜜臀91精品一区二区三区| 久久福利资源站| 黄色影院成人| 欧美.www| 美日韩精品免费观看视频| 亚洲激情成人网| 欧美激情国产日韩| 欧美日韩精品综合| 亚洲欧美日韩一区二区在线| 亚洲一区二区不卡免费| 国产日韩在线看| 蜜桃av噜噜一区| 欧美日韩在线另类| 久久精品视频播放| 麻豆精品视频在线| 亚洲一区精品电影| 久久精视频免费在线久久完整在线看 | 午夜精品久久久久久久男人的天堂| 日韩一级欧洲| 国产女主播一区二区三区| 久久免费的精品国产v∧| 麻豆国产精品va在线观看不卡 | 国产一区二区三区精品欧美日韩一区二区三区 | 国产精品嫩草99a| 久久天堂av综合合色| 欧美黄色成人网| 午夜久久资源| 美女精品在线| 性欧美大战久久久久久久免费观看| 性做久久久久久久久| 亚洲人成在线观看网站高清| 亚洲与欧洲av电影| 亚洲精品国产系列| 午夜精品久久久久久久99樱桃 | 亚洲国产清纯| 午夜久久久久久| 日韩亚洲欧美在线观看| 欧美一区二区久久久| 中文在线资源观看网站视频免费不卡 | 国产亚洲毛片| 亚洲免费观看在线观看| 国产一区二区三区观看| 亚洲日本成人网| 亚洲国产欧美一区| 亚洲欧美日韩精品在线| 99re热精品| 欧美国产先锋| 国产精品久久久久久久久久久久久久 | 欧美久色视频| 欧美成人第一页| 国产精品美女久久久浪潮软件| 亚洲国产成人久久综合一区| 国产在线视频不卡二| 亚洲欧美日韩区| av成人免费| 欧美1区3d| 嫩草影视亚洲| 国产一区在线视频| 欧美在线二区| 久久久蜜桃精品| 国产欧美日韩免费| 亚洲女人天堂成人av在线| 一本一本久久| 欧美久久一级| 亚洲精品免费看| 日韩午夜中文字幕| 欧美激情一区二区三区成人| 欧美激情精品久久久久久久变态 | 亚洲午夜视频在线观看| 欧美肥婆在线| 亚洲国产精品成人一区二区| 亚洲国产精品久久久久婷婷老年| 久久久91精品国产| 欧美va日韩va| 亚洲电影免费在线观看| 免费h精品视频在线播放| 欧美成人午夜激情视频| 亚洲第一中文字幕在线观看| 欧美α欧美αv大片| 亚洲激情社区| 中文亚洲视频在线| 国产精品试看| 久久精品女人天堂| 欧美成人一区二免费视频软件| 91久久国产自产拍夜夜嗨| 免费欧美在线| 一本大道久久a久久综合婷婷| 亚洲天堂成人在线视频| 国产精品网站在线| 久久精品91久久久久久再现| 免费不卡中文字幕视频| 日韩视频永久免费| 国产精品theporn| 欧美一区二区三区播放老司机| 免费视频最近日韩| 一本久久a久久精品亚洲| 国产精品av久久久久久麻豆网| 亚洲在线播放| 亚洲国产精彩中文乱码av在线播放| 99re66热这里只有精品4| 国产精品免费看片| 午夜精品福利在线| 亚洲国产mv| 国产亚洲福利社区一区| 毛片一区二区三区| 亚洲黄色成人| 国内久久精品视频| 噜噜噜91成人网| 一本一本久久a久久精品综合妖精| 午夜在线电影亚洲一区| 在线不卡免费欧美| 久久精品国产亚洲高清剧情介绍| 91久久国产自产拍夜夜嗨| 欧美亚洲一区三区| 日韩视频不卡| 国产日韩欧美高清| 欧美日本国产在线| 久久婷婷麻豆| 亚洲欧美日韩区| 99国产精品99久久久久久粉嫩| 久久欧美中文字幕| 亚洲永久在线| 日韩一级不卡| 亚洲国产精品毛片| 国产午夜精品全部视频播放| 欧美日韩成人激情| 欧美mv日韩mv亚洲| 久久亚洲私人国产精品va| 午夜视频一区二区|