01
DLL注入方式
外掛的注入方式有很多種竿秆,針對不同場景需求使用不同方式障癌,咱們就來搞個專題 探討下框舔。dll一旦成功注入進目標(biāo)進程,就可以隨意讀寫 目標(biāo)進程的內(nèi)存(比如讀取血量或者修改某些值或者地址從而實現(xiàn)某些變態(tài)功能或者HOOK)還可以調(diào)用call 注入自己的代碼等等 啊片。消息鉤子只锻、遠(yuǎn)程進程注入、入口點注入等等钠龙。注入方式可謂十幾種炬藤,大家感興趣的話支持一下御铃。下此繼續(xù)更新此系列
02
鉤子注入
今天我們講的是鉤子注入碴里,算是比較簡單的一種了。但是網(wǎng)上看了一遍 都有很多錯誤的寫法 而且基本都是全局的鉤子上真,咱們今天重點來講下針對目標(biāo)進程的鉤子注入咬腋,很多外掛也是用這種方式來做界面控制臺的收費端的
首先我們來看下SetWindowsHookExA這個 api
HHOOKSetWindowsHookExA(? [in]intidHook,? [in] HOOKPROC? lpfn,? [in] HINSTANCE hmod,? [in] DWORD? ? dwThreadId);
參數(shù)1: 表示你要HOOK的消息類型 是鍵盤還是鼠標(biāo) 還是其他的
參數(shù)2:HOOK的消息回調(diào)函數(shù)
參數(shù)3:目標(biāo)的句柄
參數(shù)4:目標(biāo)的線程ID
了解了API后 我們來思考幾個問題:
1鉤子注入的流程
2參數(shù)2的 消息回調(diào)函數(shù)是哪個進程的,是不是應(yīng)該是目標(biāo)進程的消息回調(diào)睡互,總不能是咱們注入程序的把
3既然是目標(biāo)程序的根竿,我們?nèi)绾潍@取他的消息回調(diào)函數(shù)
以上三個問題解決了,咱們就可以實現(xiàn)局部鉤子注入了
03
鉤子注入流程
鉤子注入流程是這樣的:
1 在要被注入的dll 里面寫好消息回調(diào)函數(shù)
并且寫個導(dǎo)出函數(shù)
2注入程序:用loadlibrary() 加載一次 要被注入的dll 從而獲取到模塊句柄
GetProcAddress可以獲取到導(dǎo)出函數(shù)的地址 這樣就可以取到要被注入的dll 里面的回調(diào)函數(shù)的地址了就珠。
這樣的方式 咱們就可以在目標(biāo)程序內(nèi)部實現(xiàn)鍵盤注入 比如按HOME 呼出界面寇壳。 而不是全局鉤子了
核心代碼也就這么些行 理解有問題的話可以來找我要源碼或者和我探討
微塵網(wǎng)絡(luò)安全
專注分享網(wǎng)絡(luò)安全 x64 c++ 逆向 反匯編 反調(diào)試 HOOK 注入 封包 內(nèi)存等技術(shù)
公眾號
感興趣的人多我會繼續(xù)更新此系列,把每種注入方式都講一遍 并且附上源碼