VC远程调用CAll,高手在那里?小弟求帮解决思路

VC远程调用CAll,高手在那里?小弟求帮
主要代码如下


DWORD GetProcessIDByName(char *name)
{
    
    PROCESSENTRY32 entry;
    entry.dwSize=sizeof(entry);
    HANDLE handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    
    bool tap=Process32First(handle,&entry);
    
    while(tap)
    {
        if(strcmp(entry.szExeFile,name)==0)
            return entry.th32ProcessID;
        tap=Process32Next(handle,&entry);
    }
    return -1;            
                
}
void M_InfusionFunc(DWORD pid,LPVOID mfun)
{   
    HANDLE hProcess;//远程句柄
    LPVOID mFuncAddr;//申请函数内存地址       
    HANDLE hThread;    //线程句柄 
    DWORD NumberOfByte; //辅助返回值  
    CString str; 
    //打开被注入的进程句柄   
    hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
    //申请内存 
    mFuncAddr = VirtualAllocEx(hProcess,NULL,128,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
    //写内存 
    WriteProcessMemory(hProcess,mFuncAddr,mfun,128, &NumberOfByte);  
    //创建远程线程
    hThread = CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)mFuncAddr, 0,0,&NumberOfByte); 
    WaitForSingleObject(hThread, INFINITE); //等待线程结束
    //释放申请有内存  
    VirtualFreeEx(hProcess,mFuncAddr,128,MEM_RELEASE); 
    //释放远程句柄
    CloseHandle(hThread);  
    CloseHandle(hProcess); 
}  

void AddHP()
{        
    __asm     mov ebx,0x00994818
    __asm    mov edx,ebx
    __asm    mov eax,[ebx+0x124]
    __asm    call [ebx+0x120]
}
 
void CCodeDlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    DWORD id=GetProcessIDByName("游戏找CALL练习实例one.exe");
    M_InfusionFunc(id,AddHP);
    
}

那个进程id我调试了没问题呀,就是注入有问题,我用od跟了一下注入的地址,全是 jmp什么的,程序运行出错
再网上下了个注入器,注入了一下,又用od跟了一下,发现确实注入了,
现在就是为什么这段代码注入不了呢?那位大哥帮给指点一下
那个 “游戏找CALL练习实例one.exe”是我在网上下的找call的
发过的帖子没人回我就再发一次,嘿嘿
------解决方案--------------------
  //创建远程线程
    hThread = CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)mFuncAddr, 0,0,&NumberOfByte); 
创建的远程线程有问题的,你要把你函数的代码写到注入进程的地址空间去
    WriteProcessMemory(hProcess,mFuncAddr,mfun,128, &NumberOfByte); // 有问题
------解决方案--------------------
引用:
引用:
//创建远程线程
hThread = CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)mFuncAddr, 0,0,&NumberOfByte);
创建的远程线程有问题的,你要把你函数的代码写到注入进程的地址空间去
WriteProcessMemory(h……

仅仅是函数的地址?那不行的、、、你那函数在进程地址空间没有
下面是我创建远程线程,加载我的dll的代码,参考一下:
void CRemote_InjectDlg::OnInject() 
{
UpdateData(TRUE);
HANDLE  m_hRemote=::OpenProcess(PROCESS_QUERY_INFORMATION 
------解决方案--------------------
   // Required by Alpha
PROCESS_CREATE_THREAD     
------解决方案--------------------
   // For CreateRemoteThread
PROCESS_VM_OPERATION      
------解决方案--------------------
   // For VirtualAllocEx/VirtualFreeEx
        PROCESS_VM_WRITE, 
NULL,m_PID);
if (NULL==m_hRemote)
{
AfxMessageBox("OpenProcess Error !");
}

DWORD RemoteThread_PID=0;
PWSTR MyParameter = NULL;     //base address of the allocated region of pages.

char *pszLibFile="ago.dll"; 
int cb  = (1+strlen(pszLibFile))* sizeof(char);
MyParameter=(PWSTR) VirtualAllocEx(m_hRemote,0,cb,MEM_COMMIT, PAGE_READWRITE);
if(MyParameter==NULL)
{
       AfxMessageBox("VirtualAllocEx Error !");
}

if(! WriteProcessMemory(m_hRemote,MyParameter,(LPVOID)pszLibFile,cb,NULL)   )