HANDLE WINAPI MyGetCurrentProcess(VOID)//替换掉原来的GetCurrentProcess
{
DWORD dwThreadId=GetCurrentThreadId();//得到当前线程ID
if(!IsMyThread(dwThreadId)){//不是我们要保护的线程
ExitThread(0);//断了它吧
}
UnhookGetCurrentProcess(); //是我们要保护的线程调用就恢复函数头
HANDLE hProcess=GetCurrentProcess();//让它调用
RehookGetCurrentProcess();//重新挂钩
return hProcess;   //返回调用结果
}

解决方案 »

  1.   

    这段转化成VB 代码应该是很简单,只是里面有哪么多函数是自定义函数,你并没有给出
    function MyGetCurrentProcess() as long
    dim dwThreadId as long
    dwThreadId=GetCurrentThreadId()
    if not IsMyThread(dwThreadId)then ExitThread(0)
    UnhookGetCurrentProcess
    dim hProcessas long
    hProcess=GetCurrentProcess()
    RehookGetCurrentProcess
    MyGetCurrentProcess=hProcess
    end function
      

  2.   

    啊勇你好,谢谢你帮我翻译,这段代码是HOOK API的,别人就写了这么点,主要是防止自己的程序进程被别的程序注入,因为我所碰到的问题是有一个程序他会在RING3层和RING0层对系统一些API函数进行屏蔽,在RING3下改写API函数开头8个字节,直接JMP到他自己的模块下,然后对每个进程包括后启动的进程注入自己的文件,一旦发现有相关API就JMP,使你自己的程序不起作用,所以我想在我的程序开头来防止他的注入
      

  3.   

    具体应该是这段代码,请问如何改成VB?HANDLE WINAPI MyGetCurrentProcess(VOID)

       HMODLE hMod=GetModelHandle("tngg.exe");
       if(hMod!=NULL)
      {
          FreeLibrary(hMod);     
       }
       UnhookGetCurrentProcess(); 
       HANDLE hProcess=GetCurrentProcess();
       RehookGetCurrentProcess();
       return hProcess;   
    }