2-2-3 – 2-2-4
1.远程注入代码,可以调用某个CALL
HANDLE CreateRemoteThread(
HANDLE hProcess, // 在指定的进程句柄里创建线程
LPSECURITY_ATTRIBUTES lpThreadAttributes, //安全结构指针 nil
DWORD dwStackSize, // 初始创建线程堆栈大小 0
LPTHREAD_START_ROUTINE lpStartAddress, //CALL地址
LPVOID lpParameter, // 给远程CALL 传递的参数 nil
DWORD dwCreationFlags, // 创建标志 0
LPDWORD lpThreadId // 返回创建线程ID @tid
);
LPVOID VirtualAllocEx(
HANDLE hProcess, // 进程句柄
LPVOID lpAddress, // 指定分配空间的起始地址,nil
DWORD dwSize, // 分配空间大小,MAX_PATH常量表示最大
DWORD flAllocationType, // 分配空间类型
DWORD flProtect // 空间页面访问权限
);
2、远程调用CALL
CreateRemoteThread
ThreadHandle:= CreateRemoteThread(hProcess, nil, 0,CALL地址, nil, 0, 返回远程创建线程ID);
//FindWindow 获取窗口
//GetWindowThreadProcessId //获取窗口的线程TID
//OpenProcess //打开进程 获取进程句柄
//VirtualAllocEx(hProcess,nil,Size,MEM_COMMIT or MEM_RESERVE,PAGE_EXECUTE_READWRITE);
//WriteProcessMemory将线程写入到进程的内存中
//CreateRemoteThread创建线程
//WaitForSingleObject等待远程线程执行结束
//GetExitCodeThread获取远程线程的退出代码
//VirtualFreeEx 释放远程线程包括申请的空间大小等