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

S.l.e!ep.¢%

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

CreateRemoteThread-實現進程代碼注入

Posted on 2010-02-05 21:33 S.l.e!ep.¢% 閱讀(2494) 評論(0)  編輯 收藏 引用 所屬分類: RootKit
CreateRemoteThread-實現進程代碼注入
2008年12月27日 星期六 00:19

起因:哇卡卡同學昨天叫我幫他看一個進程代碼注入的程序問題,運行到CreateRemoteThread就出錯,由于之前沒做過這種事情看了一下他寫的代碼大體上就明白怎么做了,于是自己重新又做了一個,遇到多少艱辛就不說了,不過讓我有種寫shellcode的感覺:-D,自己run一次才是自己的東西嘛.

方法很多種,下面只是介紹其中的一種而已.

大體思路:首先明確目標在NOTEPAD.EXE中彈出MessageBox.現在系統中找出NOTEPAD.EXE進程,兩次用VirtualAllocExNOTEPAD.EXE進程聲明一塊可讀寫運行的內存塊,WriteProcessMemory寫入我們代碼注入的線程函數和傳給線程函數的參數,最后運用CreateRemoteThread,變可讓我們之前寫入的線程函數運行.

技巧一:我們這里使用形如下面的形式來計算需要寫入函數的大小:

#pragma check_stack (off)

static DWORD WINAPI ThreadProc (LPVOID lpParameter){}

static void AfterThreadProc (void) { }

#pragma check_stack

DWORD cbCodeSize = (BYTE*)AfterThreadProc - (BYTE*)ThreadProc;


技巧二:我們這里聲明一個HYPINJECT結構,里面存放一些函數的地址,然后傳遞給線程函數,不然直接在線程函數里面寫Win 32 API函數,可能導致崩潰.結構如下:

typedef struct tagHYPINJECT {

?????? ProcLoadLibrary??? fnLoad;

?????? ProcGetProcAddress fnGetProc;

?????? char MsgStr [MAX_PATH];

?????? char DLLName [MAX_PATH];

?????? char ProcName [MAX_PATH];

} HYPINJECT;

關于編寫線程函數的注意事項: (自己總結加網上資料)

線程函數里面最好不要調用除Kernel32User32以外的所有函數,貌似User32里面的部分函數在調用的時候也會出現崩潰的局面,如果要調用其他庫的函數可以把LoadLibraryGetProcAddress的地址當作線程函數的參數傳過去(下面的代碼就是這么實現的),不過如果已知某動態鏈接庫已經加載了,最好還是使用GetModuleHandle取代LoadLibrary.當然如果你想調用自己寫的函數的話也要把函數代碼復制到目標進程里面去,然后把地址通過線程函數的參數傳過去.

而且不要使用任何的靜態字符串,線程函數最好寫成靜態(貌似也可以直接禁止 增量鏈接 ), 函數和變量之類大小也不要太大不然可能在VirtualAllocEx的時候就不能成功

……

全部代碼如下:

#include <windows.h>

#include <Tlhelp32.h.>


typedef HINSTANCE (WINAPI *ProcLoadLibrary)(char*);

typedef FARPROC (WINAPI *ProcGetProcAddress)(HMODULE, LPCSTR);

typedef int (WINAPI *ProcMessageBox)(HWND,LPCTSTR,LPCTSTR,UINT);

typedef struct tagHYPINJECT {

?????? ProcLoadLibrary??? fnLoad;

?????? ProcGetProcAddress fnGetProc;

?????? char MsgStr [MAX_PATH];

?????? char DLLName [MAX_PATH];

?????? char ProcName [MAX_PATH];

} HYPINJECT;

#pragma check_stack (off)

static DWORD WINAPI ThreadProc (LPVOID lpParameter)

{

?????? HYPINJECT* p = (HYPINJECT*)lpParameter;

?????? HMODULE hDLL = p->fnLoad (p->DLLName);

??? ProcGetProcAddress GetProc = p->fnGetProc;

?????? ProcMessageBox MsgBox = (ProcMessageBox)GetProc(hDLL,p->ProcName);

??? MsgBox(NULL,p->MsgStr,p->MsgStr,MB_OK);

?????? return 0;

}

static void AfterThreadProc (void) { }

#pragma check_stack


HYPINJECT hypInject;


BOOL InjectFunc(DWORD PID)

{

?????? HMODULE hk = LoadLibrary ("kernel32.dll");

?????? hypInject.fnLoad = (ProcLoadLibrary)GetProcAddress (hk, "LoadLibraryA");

?????? hypInject.fnGetProc = (ProcGetProcAddress)GetProcAddress (hk, "GetProcAddress");

?????? strcpy(hypInject.MsgStr," hyp's Knowledge Base");

?????? strcpy (hypInject.DLLName, "user32.dll");

?????? strcpy (hypInject.ProcName, "MessageBoxA");


?????? PVOID pCode = NULL;

?????? PVOID pData = NULL;

?????? BOOL bc = FALSE;

?????? DWORD cbCodeSize = (BYTE*)AfterThreadProc - (BYTE*)ThreadProc;


?????? HANDLE hProc = OpenProcess(

????????????? PROCESS_QUERY_INFORMATION |??

????????????? PROCESS_CREATE_THREAD???? |

????????????? PROCESS_VM_OPERATION????? |

????????????? PROCESS_VM_WRITE,???????????

????????????? FALSE, PID);

?????? if (hProc == NULL)

?????? {

????????????? return FALSE;

?????? }

??????

?????? pCode=VirtualAllocEx(hProc,NULL,cbCodeSize,MEM_COMMIT,PAGE_EXECUTE_READWRITE);

?????? if(pCode == NULL)

?????? {

????????????? return FALSE;

?????? }

?????? bc = WriteProcessMemory(hProc,pCode,(LPVOID)(DWORD) ThreadProc,cbCodeSize,NULL);

?????? if (!bc)

?????? {

????????????? return FALSE;

?????? }


?????? pData = VirtualAllocEx (hProc,NULL, sizeof (hypInject), MEM_COMMIT, PAGE_EXECUTE_READWRITE);

?????? if(pData == NULL)

?????? {

????????????? return FALSE;

?????? }

?????? bc = WriteProcessMemory (hProc, pData, &hypInject, sizeof (hypInject), NULL);

?????? if (!bc)

?????? {

????????????? return FALSE;

?????? }


?????? HANDLE ht=CreateRemoteThread(hProc,NULL,NULL,(LPTHREAD_START_ROUTINE)pCode,pData,0,NULL);

?????? if(ht == NULL)

?????? {

????????????? return FALSE;

?????? }

?????? CloseHandle(hProc);

?????? return TRUE;

}


int main()

{

?????? HANDLE hSnapshot = NULL;

?????? hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);

?????? PROCESSENTRY32 pe;

?????? pe.dwSize = sizeof(PROCESSENTRY32);

?????? Process32First(hSnapshot,&pe);

?????? do

?????? {

????????????? if(stricmp(pe.szExeFile,"NOTEPAD.EXE")==0)

????????????? {

???????????????????? InjectFunc(pe.th32ProcessID);

???????????????????? break;

????????????? }

?????? }

?????? while(Process32Next(hSnapshot,&pe)==TRUE);

?????? CloseHandle (hSnapshot);????

?????? return 0;

}

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            午夜欧美大尺度福利影院在线看| 欧美一区二区三区的| 亚洲午夜三级在线| 一区二区免费看| 99国产精品久久久久久久| 99精品国产福利在线观看免费| 日韩一区二区免费高清| 亚洲伊人色欲综合网| 亚洲主播在线观看| 久久久999精品免费| 久久精品亚洲一区二区| 久久亚洲精品一区二区| 欧美大片91| 夜夜嗨一区二区三区| 亚洲欧美日韩系列| 噜噜噜久久亚洲精品国产品小说| 欧美国产日本高清在线| 国产九区一区在线| 亚洲激情第一区| 亚洲综合视频一区| 欧美va亚洲va日韩∨a综合色| 亚洲黄色一区二区三区| 亚洲第一精品夜夜躁人人躁| 宅男66日本亚洲欧美视频| 久久精品欧美日韩精品| 欧美视频精品在线| 亚洲黄色性网站| 欧美一区二区三区成人| 亚洲国产成人精品久久| 午夜在线精品| 亚洲经典在线| 欧美日韩国产小视频在线观看| 国产精品久久国产精品99gif| 精品不卡一区二区三区| 中国亚洲黄色| 米奇777超碰欧美日韩亚洲| 亚洲视频免费在线观看| 欧美激情一区二区三区高清视频| 国产日韩精品综合网站| 亚洲香蕉在线观看| 亚洲区免费影片| 久久精品99国产精品| 国产精品视频免费观看| 99精品福利视频| 欧美激情片在线观看| 欧美综合77777色婷婷| 国产精品爽爽爽| 亚洲午夜av在线| 亚洲精品一区久久久久久| 久久影音先锋| 一区在线播放视频| 久久日韩精品| 欧美中文字幕久久| 国产一区二区三区四区老人| 性欧美18~19sex高清播放| 99精品国产福利在线观看免费 | 国产午夜亚洲精品羞羞网站| 国产精品99久久久久久久久| 亚洲欧洲综合另类| 欧美成人中文字幕| 亚洲精品国产欧美| 亚洲人成免费| 欧美精品午夜视频| 一区二区三区欧美成人| 亚洲人成网站在线观看播放| 欧美91视频| 亚洲午夜伦理| 亚洲综合不卡| 国内外成人免费视频 | 中文精品在线| 一区二区三区 在线观看视频| 欧美午夜精品久久久久久人妖| 妖精视频成人观看www| 一区二区三区免费看| 国产精品网站在线| 久久中文字幕一区| 欧美国产亚洲另类动漫| 一区二区三区福利| 午夜久久电影网| 亚洲国产精品久久久久秋霞影院| 亚洲国产成人久久综合一区| 欧美日韩高清一区| 欧美在线一区二区| 久久久女女女女999久久| 亚洲精品视频免费观看| 99精品国产在热久久婷婷| 一片黄亚洲嫩模| 亚洲一区免费视频| 国产综合一区二区| 亚洲国产三级在线| 国产精品久久亚洲7777| 另类酷文…触手系列精品集v1小说| 美女网站在线免费欧美精品| 日韩亚洲欧美精品| 欧美亚洲自偷自偷| 一本大道久久精品懂色aⅴ| 香蕉国产精品偷在线观看不卡| 在线成人av| 亚洲制服欧美中文字幕中文字幕| 激情视频一区| 亚洲永久免费| 亚洲精品综合| 欧美专区18| 亚洲欧美在线网| 欧美高清在线观看| 久久偷窥视频| 国产精品羞羞答答xxdd| 亚洲国产精品尤物yw在线观看 | 亚洲欧美一级二级三级| 91久久国产综合久久91精品网站| 亚洲一区二区三区免费观看| 亚洲国产精品电影| 亚洲欧美日韩中文视频| 国产精品99久久久久久www| 久久人人爽国产| 欧美在线视频在线播放完整版免费观看| 美女视频黄a大片欧美| 久久久久久亚洲精品杨幂换脸| 欧美日韩一区二区国产| 亚洲激情二区| 亚洲人体1000| 久久伊伊香蕉| 麻豆久久婷婷| 一区二区三区在线观看欧美| 午夜精品一区二区三区电影天堂| 亚洲视频一区二区免费在线观看| 榴莲视频成人在线观看| 美女精品在线观看| 国内伊人久久久久久网站视频| 亚洲天堂视频在线观看| 亚洲午夜激情免费视频| 欧美日韩一区二区三区在线观看免| 亚洲东热激情| 亚洲精品国产欧美| 欧美精品一区二| 亚洲精品国产精品乱码不99| 亚洲激情社区| 欧美激情一区二区三区不卡| 亚洲国产高清视频| 亚洲免费福利视频| 欧美视频在线观看免费| aa级大片欧美| 欧美一区二区三区啪啪| 国产日韩欧美91| 久久久久久日产精品| 蜜臀91精品一区二区三区| 136国产福利精品导航| 久久一区精品| 亚洲精品欧美日韩| 亚洲免费视频在线观看| 国产精品一页| 亚洲美女福利视频网站| 这里只有精品视频在线| 免费观看一级特黄欧美大片| 欧美fxxxxxx另类| 亚洲日本欧美日韩高观看| 欧美乱大交xxxxx| 亚洲午夜久久久久久久久电影院| 亚洲欧美成人一区二区三区| 国产伦精品一区二区三区在线观看| 午夜精品久久久久久久白皮肤| 久久综合999| 亚洲免费精彩视频| 国产精品区一区二区三| 久久精品99国产精品| 亚洲国产精品嫩草影院| 亚洲一二区在线| 黄色成人av网| 欧美另类高清视频在线| 午夜在线视频观看日韩17c| 欧美丰满高潮xxxx喷水动漫| 中日韩高清电影网| 狠狠色伊人亚洲综合网站色| 欧美日韩高清在线播放| 欧美在线观看天堂一区二区三区| 欧美激情导航| 欧美在线一区二区三区| 亚洲久久一区二区| 国内精品久久久久久影视8 | 洋洋av久久久久久久一区| 国产精品女主播| 欧美69wwwcom| 欧美一区免费| 一区二区激情视频| 亚洲丁香婷深爱综合| 久久成人免费| 亚洲一区国产| 亚洲精品国产精品乱码不99| 国产一区清纯| 国产精品久久久久久久浪潮网站| 久久综合色8888| 欧美在线视频a| 亚洲在线免费观看| 亚洲开发第一视频在线播放| 免费成人在线观看视频| 久久精品成人一区二区三区| 亚洲一区二区三区涩| 99视频精品免费观看| 最近看过的日韩成人| 精品不卡一区|