16,548
社区成员




void usegoods()
{
_asm
{
push 6 // 金创药分类编号
push 1
push 0
mov eax, 0x5a5920
call eax
}
}
void RemoteCall()
{
HWND h;
h= ::FindWindow(NULL, "YB_OnlineClient"); //查找窗口句柄
DWORD id; //进程ID
LPDWORD Pid= &id;
::GetWindowThreadProcessId(h, Pid); //取得指定窗口的进程ID 存放到变量id里边
HANDLE hp= OpenProcess(PROCESS_ALL_ACCESS, false, id); //获取访问进程权限 存放至hp
//分配一块 内存 以写入我们自己的代码
LPVOID callbase= VirtualAllocEx(hp, NULL, 0x3000, MEM_COMMIT| MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if(callbase==NULL)
{
AfxMessageBox("申请空间失败");
}
if(!::WriteProcessMemory(hp,callbase,usegoods,0x3000,NULL))
{
AfxMessageBox("写入代码失败");
}
//远程调用代码
DWORD tid;
CreateRemoteThread(hp, NULL, 0, (LPTHREAD_START_ROUTINE)callbase, 0, 0, &tid);
}
void C远程Call调用Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
RemoteCall();
}
if(callbase==NULL)
{
AfxMessageBox("申请空间失败");
}
if(!::WriteProcessMemory(hp,callbase,usegoods,0x3000,NULL))
{
AfxMessageBox("写入代码失败");
}