如何执行进程内存?

时间:2015-04-09 03:20:23

标签: c api

我想将我的代码注入某个进程,并且我想执行我注入的代码。

我可以注入这样的代码:

#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...   
}

但我不知道如何执行我注入的代码。 (按00,jmp 521595)
有没有API或方法来做到这一点?

2 个答案:

答案 0 :(得分:0)

如果您知道要修补的内容,请尝试使用diablo2oo2的Universal Patcher(仅限Windows)。它可以为您的应用程序创建加载程序/修补程序。你最好直接编辑源代码。

编辑:显然这不会注入其他进程,但如果我可能会问你为什么要这样做呢?

答案 1 :(得分:0)

如果您知道需要执行的确切程序集,则可以使用asm

执行此操作

http://www.codeproject.com/Articles/15971/Using-Inline-Assembly-in-C-C