远程函数注入

// 远程注入
BOOL CFuntion::InjectRemoteFunc(DWORD dwProcId, LPVOID mFunc, LPVOID pRemoteParam, DWORD ParamSize)
{
HANDLE hProcess;  
LPVOID ThreadAdd;  
LPVOID ParamAdd = NULL;  
HANDLE hThread  = NULL;  
DWORD lpNumberOfBytes;  
BOOL BO;  
ThreadAdd = mFunc;  
if(dwProcId == NULL ){
::AfxMessageBox(_T("dwProcId"),0,0);
}


hProcess = ::OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcId);//打开被注入的进程  


ThreadAdd =::VirtualAllocEx(hProcess,NULL,4096,MEM_COMMIT,PAGE_EXECUTE_READWRITE);  


BO = ::WriteProcessMemory(hProcess,ThreadAdd,mFunc,4096, &lpNumberOfBytes);//写入函数地址  
if(ParamSize!=0)  
{  
ParamAdd =::VirtualAllocEx(hProcess,NULL,ParamSize, MEM_COMMIT, PAGE_READWRITE);  
BO = WriteProcessMemory(hProcess,ParamAdd, pRemoteParam, ParamSize, &lpNumberOfBytes); //写入参数地址  
}  
hThread = ::CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)ThreadAdd, ParamAdd, 0,&lpNumberOfBytes); //创建远程线程  


::WaitForSingleObject(hThread, INFINITE);//等待线程结束  
::VirtualFreeEx(hProcess, ThreadAdd, 4096, MEM_RELEASE);  
if(ParamSize!=0)  
{  
::VirtualFreeEx(hProcess, ParamAdd,ParamSize, MEM_RELEASE); //释放申请的地址  
}  
::CloseHandle(hThread);  
::CloseHandle(hProcess);  
return TRUE;  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值