Linux 拨号vps windows公众号手机端

用WriteProcessMemory做进程注入 (非DLL注入)

lewis 8年前 (2017-06-10) 阅读数 12 #程序编程
文章标签 进程

使用 `WriteProcessMemory` 进行进程注入是一种常见的非 DLL 注入技术。

以下是一个示例代码,演示了如何使用 `WriteProcessMemory` 注入代码到目标进程:

```cpp

#include
#include
intmain()
{
//目标进程名称
constchar*targetProcessName="target.exe";

//注入的代码
constchar*codeToInject="Yourcodetoinject";
//获取目标进程ID
DWORDtargetProcessId=0;
PROCESSENTRY32entry;
entry.dwSize=sizeof(PROCESSENTRY32);
HANDLEsnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
if(Process32First(snapshot,&entry))
{
while(Process32Next(snapshot,&entry))
{
if(_stricmp(entry.szExeFile,targetProcessName)==0)
{
targetProcessId=entry.th32ProcessID;
break;
}
}
}
CloseHandle(snapshot);
//打开目标进程
HANDLEhProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,targetProcessId);
if(hProcess==NULL)
{
printf("Failedtoopentargetprocess.\n");
return1;
}
//在目标进程中分配内存
LPVOIDremoteMemory=VirtualAllocEx(hProcess,NULL,strlen(codeToInject),MEM_COMMIT,
PAGE_EXECUTE_READWRITE);
if(remoteMemory==NULL)
{
printf("Failedtoallocatememoryinthetargetprocess.\n");
CloseHandle(hProcess);
return1;
}
//将代码写入目标进程内存
if(!WriteProcessMemory(hProcess,remoteMemory,codeToInject,strlen(codeToInject),NULL))
{
printf("Failedtowritecodetotargetprocessmemory.\n");
VirtualFreeEx(hProcess,remoteMemory,0,MEM_RELEASE);
CloseHandle(hProcess);
return1;
}
//在目标进程中创建远程线程来执行注入的代码
HANDLEhRemoteThread=CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)remoteMemory,
NULL,0,NULL);
if(hRemoteThread==NULL)
{
printf("Failedtocreateremotethreadinthetargetprocess.\n");
VirtualFreeEx(hProcess,remoteMemory,0,MEM_RELEASE);
CloseHandle(hProcess);
return1;
}
printf("Codeinjectedsuccessfully.\n");
//清理资源
WaitForSingleObject(hRemoteThread,INFINITE);
VirtualFreeEx(hProcess,remoteMemory,0,MEM_RELEASE);
CloseHandle(hRemoteThread);
CloseHandle(hProcess);
return0;
}

在这个示例中,你需要将 `target.exe` 替换为目标进程的名称,并将 `Your code to inject` 替换为要注入的代码。代码通

过以下步骤进行注入:

1. 获取目标进程的 ID。

2. 打开目标进程并分配内存。

3. 使用 `WriteProcessMemory` 将代码写入目标进程内存。

4. 创建一个远程线程来执行注入的代码。

5. 清理资源。

版权声明

本文仅代表作者观点,不代表米安网络立场。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门