向乙個執行中的程序注入自 己的**,最自然莫過於使用createremotethread,如今遠執行緒注入已經是氾濫成災,同樣的監測遠執行緒注入、防止遠執行緒注入的工具也舉不勝 舉,乙個木馬或後門啟動時向explorer或ie的注入操作就像在自己臉上寫上「我是賊」一樣。
使用者態**想要更隱蔽地藏身於別的程序,就應該在注入的環節隱蔽自己的行為。下面就介紹一種非常簡單不過比較暴力的方法,給出的示例為在explorer裡載入自己的dll。
首先提到的就是乙個api:queueuserapc
dword queueuserapc(
papcfunc pfnapc, // apc function
handle hthread, // handle to thread
ulong_ptr dwdata // apc function parameter ;
大家對這個api應該並不陌生,它直接轉入了系統服務ntqueueapcthread 從而利用keinsertqueueapc向給出的目標執行緒的apc佇列插入一apc物件。倘若kideliverapc順利的去構造apc環境並執行我 們的**那一切就ok了,只可惜沒有那麼順利的事,apcstate中userapcpending是否為true有重要的影響,結果往往是你等到花兒都 謝了你的**還是沒得到執行。在核心態往往不成問題,自己動手賦值,可是使用者態程式可不好做,怎麼辦?其實最簡單的,不好做就不做囉,讓系統去幹。
實 際上應用程式在請求「alertable」的等待時系統就會置userapcpending為true(當 kedelayexecutionthread/kewaitformultipleobjects/kewaitforsingleobject 使用 testforalertpending時就有可能,此外還有ketestalertthread等,機會還是有的),最簡單的例子,目標執行緒呼叫 sleepex(***, true)後我們插入apc**就會乖乖執行了。
比較幸運的是explorer程序中一般情況下總有合我們意的執行緒,於是最簡單但並不優美的辦法就是列舉explorer中所有執行緒,全數插入,示意如下: ......
dword ret;
char *dllname = "c:\\mydll.dll";
int len = strlen(dllname) + 1;
pvoid param = virtualallocex(hprocess, null, len,
mem_commit | mem_top_down,
page_readwrite);
if (param != null)}}
......
其中injectdll:
void injectdll(handle hprocess, handle hthread, dword param)
暴力注入Explorer詳細解析
向乙個執行中的程序注入自 己的 最自然莫過於使用createremotethread,如今遠執行緒注入已經是氾濫成災,同樣的監測遠執行緒注入 防止遠執行緒注入的工具也舉不勝 舉,乙個木馬或後門啟動時向explorer或ie的注入操作就像在自己臉上寫上 我是賊 一樣。使用者態 想要更隱蔽地藏身於別的程...
「暴力」注入Explorer
暴力 注入explorer pjf jfpan20000 sina.com 寫點無聊的東西,一段時間blog弄得不成樣子了。向乙個執行中的程序注入自己的 最自然莫過於使用createremotethread,如今遠執行緒注入已經是氾濫成災,同樣的監測遠執行緒注入 防止遠執行緒注入的工具也 舉不勝舉,...
暴力」注入Explorer
暴力 注入explorer pjf jfpan20000 sina.com 向乙個執行中的程序注入自己的 最自然莫過於使用createremotethread,如今遠執行緒注入已經是氾濫成災,同樣的監測遠執行緒注入 防止遠執行緒注入的工具也 舉不勝舉,乙個木馬或後門啟動時向explorer或ie的注...