我想将我的代码注入(inject)到某个进程中,并且我想执行我注入(inject)的代码。
我可以注入(inject)这样的代码:
#include <Windows.h>
#define t_process_name example
BYTE code[7] = { 0x6A, 0x00 , 0, 0, 0, 0, 0};
/*
0:push 0
2:jmp 521595
*/
int main(){
HWND hWnd = NULL;
DWORD pid = NULL;
HANDLE hProcess = NULL;
BYTE* space = NULL;
BYTE* dst = 0x521595;
int i = 0;
hWnd = FindWindowA(NULL, t_process_name);
GetWindowThreadProcessId(hWnd, &pid);
hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, pid);
space = VirtualAllocEx(hProcess, NULL, sizeof(code), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
code[2] = 0xe9;
*(DWORD*)(code + 3) = (DWORD)(dst - (space+2)) - 5;
WriteProcessMemory(hProcess, space, code, sizeof(code), NULL);
// and...
}
但我不知道如何执行我注入(inject)的代码。 (推 00 , jmp 521595 )
有没有任何 API 或方法可以做到这一点?
最佳答案
如果您知道要修补什么,请尝试 diablo2oo2 的通用修补程序(仅限 Windows)。它可以为您的应用程序创建加载程序/修补程序。您最好直接编辑源代码。
编辑:显然这不会注入(inject)其他进程,但如果我可以问你为什么要这样做?
关于c - 如何执行进程内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29529169/