<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 用Visual C++實(shí)現遠程線(xiàn)程嵌入技術(shù)

用Visual C++實(shí)現遠程線(xiàn)程嵌入技術(shù)

作者: 時(shí)間:2012-09-18 來(lái)源:網(wǎng)絡(luò ) 收藏

技術(shù)指的是通過(guò)在另一個(gè)進(jìn)程中創(chuàng )建的方法進(jìn)入那個(gè)進(jìn)程的內存地址空間。我們知道,在進(jìn)程中,可以通過(guò)CreateThread函數創(chuàng )建,被創(chuàng )建的新線(xiàn)程與主線(xiàn)程(就是進(jìn)程啟動(dòng)時(shí)被同時(shí)自動(dòng)建立的那個(gè)線(xiàn)程)共享地址空間以及其他的資源。 但是很少有人知道,通過(guò)CreateRemoteThread也同樣可以在另一個(gè)進(jìn)程內創(chuàng )建新線(xiàn)程,被創(chuàng )建的線(xiàn)程同樣可以共享遠程進(jìn)程(是遠程進(jìn)程耶?。┑牡刂房臻g,所以,實(shí)際上,我們通過(guò)一個(gè)遠程線(xiàn)程,進(jìn)入了遠程進(jìn)程的內存地址空間,也就擁有了那個(gè)遠程進(jìn)程相當的權限。例如在遠程進(jìn)程內部啟動(dòng)一個(gè)DLL木馬(與進(jìn)入進(jìn)程內部相比,啟動(dòng)一個(gè)DLL木馬是小意思,實(shí)際上我們可以隨意篡改那個(gè)遠程進(jìn)程的數據)。

本文引用地址:http://dyxdggzs.com/article/189897.htm

首先,我們通過(guò)OpenProcess 來(lái)打開(kāi)我們試圖嵌入的進(jìn)程(如果遠程進(jìn)程不允許打開(kāi),那么嵌入就無(wú)法進(jìn)行了,這往往是由于權限不足引起的,解決方法是通過(guò)種種途徑提升本地進(jìn)程的權限)

hRemoteProcESS = OpenProcess( PROCESS_CREATE_THREAD | file://允許遠程創(chuàng )建線(xiàn)程

PROCESS_VM_OPERATION | file://允許遠程VM操作

PROCESS_VM_WRITE,//允許遠程VM寫(xiě)

FALSE, dwRemoteProcessId )

由于我們后面需要寫(xiě)入遠程進(jìn)程的內存地址空間并建立遠程線(xiàn)程,所以需要申請足夠的權限(PROCESS_CREATE_THREAD、VM_OPERATION、VM_WRITE)。

然后,我們可以建立LoadLibraryW函數這個(gè)線(xiàn)程來(lái)啟動(dòng)我們的DLL木馬,LoadLibraryW函數是在kernel32.dll中定義的,用來(lái)加載DLL文件,它只有一個(gè)參數,就是DLL文件的絕對路徑名pszLibFileName,(也就是木馬DLL的全路徑文件名),但是由于木馬DLL是在遠程進(jìn)程內調用的,所以我們首先還需要將這個(gè)文件名復制到遠程地址空間:(否則遠程線(xiàn)程是無(wú)法讀到這個(gè)參數的)

file://計算DLL路徑名需要的內存空間

int cb = (1 + lSTrlenW(pszLibFileName)) * sizeof(WCHAR);

file://使用VirtualAllocEx函數在遠程進(jìn)程的內存地址空間分配DLL文件名緩沖區

pszLibFileRemote = (PWSTR) VirtualAllocEx( hRemoteProcess, NULL, cb,

MEM_COMMIT, PAGE_READWRITE);

file://使用WriteProcessMemory函數將DLL的路徑名復制到遠程進(jìn)程的內存空間

iReturnCode = WriteProcessMemory(hRemoteProcess,

pszLibFileRemote, (PVOID) pszLibFileName, cb, NULL);

file://計算LoadLibraryW的入口地址

PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)

GetProcAddress(GetModuleHandle(TEXT(Kernel32)), LoadLibraryW);

萬(wàn)事俱備,我們通過(guò)建立遠程線(xiàn)程時(shí)的地址pfnStartAddr(實(shí)際上就是LoadLibraryW的入口地址)和傳遞的參數pszLibFileRemote(實(shí)際上是我們復制過(guò)去的木馬DLL的全路徑文件名)在遠程進(jìn)程內啟動(dòng)我們的木馬DLL:

file://啟動(dòng)遠程線(xiàn)程LoadLibraryW,通過(guò)遠程線(xiàn)程調用用戶(hù)的DLL文件

hRemoteThread = CreateRemoteThread( hRemoteProcess, NULL, 0,

pfnStartAddr, pszLibFileRemote, 0, NULL);


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: Visual 遠程 線(xiàn)程

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>