java远程线程注入_测试远程线程注入Dll

直接使用远程线程调用 LoadLibrary即可

#include "stdafx.h"

#include

BOOL DllInject(DWORD dwProcessID,LPCTSTR lpDllName)

{

HANDLE hProcess = 0;

//1 打开指定进程

hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcessID);

if(hProcess == NULL){

OutputDebugString("OpenProcess Error!");

return FALSE;

}

//2 远程分配内存

DWORD dwAllocSize = lstrlen(lpDllName)+1;

LPVOID lpStrArr = VirtualAllocEx(hProcess,NULL,dwAllocSize,MEM_COMMIT,PAGE_EXECUTE_READWRITE);

if(lpStrArr==NULL){

OutputDebugString("VirtualAllocEx Error!");

CloseHandle(hProcess);

return FALSE;

}

//3 远程内存写入

DWORD dwWriteRet = WriteProcessMemory(hProcess,lpStrArr,(LPVOID)lpDllName,dwAllocSize,NULL);

if(dwWriteRet == 0){

OutputDebugString("WriteProcessMemory Error!");

CloseHandle(hProcess);

return FALSE;

}

//4 本地获取LoadLibrary地址

HMODULE hModule = GetModuleHandle("kernel32.dll");

if(hModule==NULL){

OutputDebugString("GetModuleHandle Error!");

CloseHandle(hProcess);

return FALSE;

}

FARPROC dwProcAddr = GetProcAddress(hModule,"LoadLibraryA");

if(dwProcAddr == NULL)

{

OutputDebugString("GetProcAddress Error!");

CloseHandle(hProcess);

return FALSE;

}

//5 远程线程载入指定的dll

HANDLE hThread = CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)dwProcAddr,lpStrArr,0,NULL);

if(hThread==NULL)

{

OutputDebugString("CreateRemoteThread Error!");

CloseHandle(hProcess);

return FALSE;

}

//6 关闭句柄

CloseHandle(hProcess);

return TRUE;

}

int main(int argc, char* argv[])

{

//printf("Hello World!\n");

DllInject(3300,"C:\\Documents and Settings\\Administrator\\桌面\\TestDll.dll");

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值