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

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

about Injection

Posted on 2010-02-06 04:38 S.l.e!ep.¢% 閱讀(1746) 評論(2)  編輯 收藏 引用 所屬分類: RootKit
Injection 的主要流程
1. 進程啟動
2. 如果在 vista 以上的系統,確保 ShutdownBlockReasonCreate && ShutdownBlockReasonDestroy (詳見 ShutdownBlockReasonCreate Function )
3.
調用? SetProcessShutdownParameters (詳見 SetProcessShutdownParameters Function )確保系統關機先詢問本程序 (這里似乎有漏洞,如果其它程序調用了 SetProcessShutdownParameters 就可以搶在 ShutdownGuard 前面接收到 WM_QUERYENDSESSION 消息)
4.??PatchApps(0);
5.??開啟定時器,定時檢查并inject DLL?SetTimer(hwnd, PATCHTIMER, PATCHINTERVAL, NULL);

PatchApps() 函數主要流程 (傳0表示 inject dll, 傳1表示 unload dll)
1. 確保 LoadLibraryA 和 FreeLibrary 這兩個函數存在
2.?獲取 SeDebugPrivilege?(詳見SeDebugPrivilege 特權 ) 確保能夠訪問到所有進程(調用了函數 OpenProcessToken????
??? AdjustTokenPrivileges
)? (這里為了提升權限,如果這里沒有提升權限,那么下面調用 VirtualAllocEx 分配內存 或
?? WriteProcessMemory 寫入內存將返回失敗)
3. 調用 EnumProcesses? 枚舉所有進程
4. 采用 OpenProcess 函數打開進程,權限為 PROCESS_QUERY_INFORMATION
PROCESS_VM_READ
5. 獲取 打開進程的全路徑 GetModuleFileNameEx
??? 注入csrss.exe會藍屏 / smss.exe 是注入不了的 / ShutdownGuard.exe 這個是我們的程序不需要注入
6. 檢查下目標進程是否已經被注入過,如果是的話,忽略它 (它這里的判斷好像有BUG,是根據 GetModuleFileNameEx 全路徑的結果進行判斷的, 如果寫一個關機程序,啟動兩次,第二次啟動的那個進程可以成功關閉?)
7. 判斷下系統是不是? 64 位的系統,如果是, 加載DLL也需要加載 64位的 (使用 IsWow64Process 來判斷)
8. 使用 EnumProcessModules 函數來獲取目標進程已經加載的模塊
9. 判斷下我們的 injection dll 是不是已經被目標進程加載,如果是,就忽略它(這個判斷是否是多余的?
10. 判斷下傳進來的參數, 決定是否 inject dll 還是 unload dll
11.?屏蔽 SeDebugPrivilege 權限(使用 AdjustTokenPrivileges 函數)

InjectDLL() 的主要流程
1. 打開進程 OpenProcess(),權限為 ?PROCESS_CREATE_THREAD|PROCESS_VM_OPERATION|PROCESS_VM_WRITE|PROCESS_VM_READ
PROCESS_CREATE_THREAD 為了 CreateRemoteThread
PROCESS_VM_OPERATION?? 為了 VirtualAllocEx
PROCESS_VM_WRITE|PROCESS_VM_READ 為了可以讀寫對方的內存
2. VirtualAllocEx 分配內存
3. WriteProcessMemory 寫入內存
4. CreateRemoteThread 創建遠程線程 (線程函數是 pfnLoadLibrary, injection dll)

加載injection dll 的主要流程
1. 修改目標進程 IAT 表中的?user32.dll? 中的 ExitWindowsEx 函數, 將其代替為 ShutdownBlocked()

ShutdownBlocked() 的主要流程
1. 找到 ShutdownGuard 的窗口
2. 并發送 WM_SHUTDOWNBLOCKED 消息(通過 PostMessage() )

當收到? WM_QUERYENDSESSION 消息時
1. 如果是 vista 以上系統,需要調用 ShutdownBlockReasonCreate
ShutdownBlockReasonDestroy

作了下實驗,直接寫個程序調用 ExitWindowsEx ,居然可以成功 Shut down,寒?。。?br />似乎只能阻止到 Explorer.exe

基本流程已經出來,收工

給我一個DLL,給我一個進程ID,我插,我插,我插插插。。。
bool?InjectDLLToOtherProcess(DWORD?dwProcessID,?const?char*?pszDLLPath)
{
????HANDLE?TokenHandle?
=?NULL;

????
//?
????if?(?FALSE?==?::OpenProcessToken(?GetCurrentProcess(),?TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,?&TokenHandle)?)
????{
????????
return?false;
????}
????
????TOKEN_PRIVILEGES?tkp;
????
????
//?Get?LUID?for?SeDebugPrivilege
????if(?FALSE?==?::LookupPrivilegeValue(NULL,?SE_DEBUG_NAME,?&tkp.Privileges[0].Luid)?)
????{
????????::CloseHandle(TokenHandle);
????????
return?false;
????}

????tkp.PrivilegeCount?
=?1;
????tkp.Privileges[
0].Attributes?=?SE_PRIVILEGE_ENABLED;
????
????
if?(?FALSE?==?AdjustTokenPrivileges(TokenHandle,?FALSE,?&tkp,?0,?NULL,?NULL)?)?
????{
????????::CloseHandle(TokenHandle);
????????
return?false;
????}

????HANDLE?process?
=?::OpenProcess(PROCESS_CREATE_THREAD|PROCESS_VM_OPERATION|PROCESS_VM_WRITE|PROCESS_VM_READ,?TRUE,?dwProcessID);
????
if?(?process?==?NULL?)
????{
????????::CloseHandle(TokenHandle);
????????
return?false;
????}

????typedef?HMODULE?(WINAPI?
*LoadLibraryPointor)(LPCTSTR);
????LoadLibraryPointor?pfnLoadLibrary?
=?NULL;
????HMODULE?kernel32?
=?NULL;
????
????
//Get?address?to?LoadLibrary?and?FreeLibrary
????if?(pfnLoadLibrary?==?NULL)?
????{
????????kernel32?
=?::GetModuleHandle("kernel32.dll");
????????
????????
if?(?kernel32?==?NULL?)
????????{
????????????::CloseHandle(process);
????????????::CloseHandle(TokenHandle);
????????????
return?false;????????????
????????}
????????
????????pfnLoadLibrary?
=?(LoadLibraryPointor)GetProcAddress(kernel32,?"LoadLibraryA");
????????
????????
if?(pfnLoadLibrary?==?NULL)
????????{
????????????::FreeLibrary(kernel32);
????????????::CloseHandle(process);
????????????::CloseHandle(TokenHandle);
????????????
return?false;
????????}
????}

????PVOID?memory?
=?::VirtualAllocEx(process,?NULL,?strlen(pszDLLPath)+1,?MEM_COMMIT,?PAGE_READWRITE);
????
????
if?(?memory?==?NULL?)
????{
????????::FreeLibrary(kernel32);
????????::CloseHandle(process);
????????::CloseHandle(TokenHandle);
????????
return?false;
????}

????
if?(?FALSE?==?::WriteProcessMemory(process,?memory,?(void*)pszDLLPath,?strlen(pszDLLPath)+1,?NULL)?)
????{
????????::VirtualFreeEx(process,?memory,?strlen(pszDLLPath)
+1,?MEM_RELEASE);
????????::FreeLibrary(kernel32);
????????::CloseHandle(process);
????????::CloseHandle(TokenHandle);
????????
return?false;
????}

????
//?Inject?dll
????DWORD?dwThreadID?=?0;
????HANDLE?hRemoteHandle?
=?::CreateRemoteThread(process,?NULL,?0,?(LPTHREAD_START_ROUTINE)pfnLoadLibrary,?memory,?0,?&dwThreadID);

????
if?(?hRemoteHandle?==?NULL?)?
????{
????????::VirtualFreeEx(process,?memory,?strlen(pszDLLPath)
+1,?MEM_RELEASE);
????????::FreeLibrary(kernel32);
????????::CloseHandle(process);
????????::CloseHandle(TokenHandle);
????????
return?false;
????}

????::WaitForSingleObject(hRemoteHandle,?INFINITE);

????DWORD?dwReturn?
=?0;
????
if(?FALSE?==?::GetExitCodeThread(hRemoteHandle,?&dwReturn)?)
????{
????????::CloseHandle(hRemoteHandle);
????????::VirtualFreeEx(process,?memory,?strlen(pszDLLPath)
+1,?MEM_RELEASE);
????????::FreeLibrary(kernel32);
????????::CloseHandle(process);
????????::CloseHandle(TokenHandle);
????????
return?false;
????}

????::CloseHandle(hRemoteHandle);
????::VirtualFreeEx(process,?memory,?strlen(pszDLLPath)
+1,?MEM_RELEASE);
????::FreeLibrary(kernel32);
????::CloseHandle(process);
????::CloseHandle(TokenHandle);
????
return?true;
}

目前存在的已知問題:
1. 未考慮 64 位機器
2. 未考慮 DLL 加載失敗的處理 (2010.02.05-23:38 已經 Fixed)
3. 提權后沒有恢復

一天就這么過去了~

Feedback

# re: about Injection  回復  更多評論   

2010-02-06 00:39 by DrKN
This is a black paper. Not suitable to put here and it is illegal.

# re: about Injection  回復  更多評論   

2010-02-08 22:45 by Phirothing
@DrKN
It doesn't matter . And I like it.
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美国产日韩一区二区在线观看| 亚洲欧美精品中文字幕在线| 欧美激情久久久久久| 99riav1国产精品视频| 欧美a级一区二区| 亚洲电影一级黄| 久久资源在线| 久久久人人人| 亚洲精品国产无天堂网2021| 午夜精品久久久久99热蜜桃导演| 欧美国产日韩在线| 麻豆精品在线视频| 亚洲国产一区二区视频| 欧美大片91| 欧美二区在线观看| 9色精品在线| 一本久久综合亚洲鲁鲁| 国产精品久久久久久av下载红粉 | 亚洲国产精品va在看黑人| 久久久久久97三级| 在线不卡免费欧美| 欧美激情aaaa| 欧美激情国产高清| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲电影有码| 欧美福利专区| 亚洲综合丁香| 香蕉成人啪国产精品视频综合网| 国产一区二区三区免费观看 | 午夜激情综合网| 国内精品久久久久伊人av| 久久精品国产2020观看福利| 久久福利精品| 亚洲精品一区二区在线| 亚洲精选91| 国产精品久久婷婷六月丁香| 久久国产欧美| 欧美成人精品h版在线观看| 日韩视频精品在线| 一区二区三区www| 国语自产在线不卡| 亚洲国产精品久久久久久女王| 欧美午夜激情视频| 久久在精品线影院精品国产| 欧美精品国产精品日韩精品| 香蕉国产精品偷在线观看不卡| 久久精品综合一区| 亚洲午夜精品网| 久久久人成影片一区二区三区观看| 夜色激情一区二区| 午夜日韩在线| 最新亚洲一区| 午夜精品一区二区三区电影天堂| 亚洲经典一区| 欧美一区二区高清在线观看| 日韩亚洲视频| 久久精品日产第一区二区三区| av成人国产| 久久国内精品自在自线400部| 99精品视频免费观看视频| 久久国产精品免费一区| 亚洲一区影院| 欧美好吊妞视频| 久久久午夜精品| 欧美片第1页综合| 欧美肥婆bbw| 久久久亚洲国产天美传媒修理工 | 欧美日本一区二区高清播放视频| 欧美在线网站| 欧美日韩一区二区三区| 欧美粗暴jizz性欧美20| 国产日韩欧美成人| 亚洲永久视频| 亚洲调教视频在线观看| 欧美成人免费全部观看天天性色| 欧美一区二区在线播放| 欧美日韩午夜精品| 亚洲国产美女精品久久久久∴| 国产一区二区三区在线观看免费 | 久久久蜜桃一区二区人| 性欧美video另类hd性玩具| 欧美啪啪成人vr| 欧美黑人国产人伦爽爽爽| 国产在线精品成人一区二区三区| 亚洲香蕉伊综合在人在线视看| 亚洲美女诱惑| 欧美国产日韩一区| 最新精品在线| 在线亚洲国产精品网站| 欧美日本不卡| 99国产麻豆精品| 亚洲视频导航| 欧美午夜一区| 亚洲网站在线观看| 午夜伦理片一区| 国产精品久久看| 亚洲欧美福利一区二区| 久久福利精品| 精品成人一区二区| 久久综合久色欧美综合狠狠 | 久久久夜夜夜| 老司机免费视频一区二区| 国精产品99永久一区一区| 久久精品五月| 亚洲成人在线视频播放 | 欧美人成网站| 一本久道久久久| 午夜精品久久久久久久久| 国产精品日韩精品| 欧美在线1区| 欧美激情亚洲视频| 中文精品在线| 国产一区二区三区四区在线观看 | 国内一区二区三区在线视频| 午夜欧美不卡精品aaaaa| 久久综合色一综合色88| 最近中文字幕日韩精品 | 国产欧美日韩综合一区在线观看 | 欧美日韩视频在线观看一区二区三区| 亚洲精品在线电影| 欧美在线999| 在线观看欧美激情| 欧美精品性视频| 亚洲欧美日韩在线| 欧美成人中文| 亚洲欧美日韩系列| 精品成人久久| 欧美网站在线| 久久久久国产一区二区三区| 99v久久综合狠狠综合久久| 久久精品91久久久久久再现| 最新日韩在线视频| 国产欧美一区二区三区在线老狼 | 欧美日韩综合视频| 欧美中文字幕第一页| 亚洲国内精品在线| 欧美主播一区二区三区美女 久久精品人 | 亚洲美女在线一区| 国产精品免费一区二区三区观看 | 亚洲高清在线观看一区| 国产精品久久九九| 免费一级欧美片在线播放| 中文欧美日韩| 欧美激情第六页| 欧美一区二区视频97| 99国产精品| 亚洲国产精品成人精品| 国产欧美日韩一区| 欧美视频网站| 模特精品裸拍一区| 久久精品国产999大香线蕉| 一本一本久久| 亚洲国产精品va在线看黑人动漫| 欧美中文字幕久久| 午夜精品一区二区三区电影天堂 | 国产欧美日韩视频一区二区| 欧美精品97| 美女图片一区二区| 久久九九热re6这里有精品| 在线一区二区三区四区| 亚洲国产小视频在线观看| 噜噜噜噜噜久久久久久91| 午夜亚洲性色福利视频| 在线视频日本亚洲性| 亚洲精品国产视频| 欧美区在线观看| 亚洲毛片一区二区| 亚洲国产欧美久久| 亚洲丶国产丶欧美一区二区三区| 久久米奇亚洲| 久久久精品2019中文字幕神马| 亚洲欧美日韩第一区| 亚洲性av在线| 亚洲影院污污.| 亚洲欧美日本伦理| 午夜伦理片一区| 久久精品女人的天堂av| 久久精品国产亚洲精品| 午夜精品婷婷| 久久久久久久久久久一区| 久久久精品日韩欧美| 久久久久久一区| 免费成人高清视频| 欧美激情影音先锋| 亚洲国产欧美在线人成| 亚洲黄网站在线观看| 亚洲精品视频一区二区三区| 99精品国产在热久久下载| 这里只有精品电影| 午夜在线播放视频欧美| 久久精品一区四区| 女同性一区二区三区人了人一 | 国产精品久久99| 国产午夜精品一区理论片飘花| 国产综合色精品一区二区三区| 在线视频国内自拍亚洲视频| 亚洲精品系列| 亚洲欧美国产77777| 久久久999成人| 欧美激情二区三区|