如何的得到某一程序的ProcessId,如何Hook API

解决方案 »

  1.   

    得到某一程序的ProcessId :Var
       Snapshot: DWord;
       MsgProcess: PROCESSENTRY32;
    begin
          Snapshot := 
            CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS ,GetCurrentProcessId());
          MsgProcess.dwSize := 296 ;      // 获得第一个进程
          Process32First(Snapshot, MsgProcess) ;
          // 循环取列举的进程名称
          While (True) Do
            Begin
              If Process32Next(Snapshot,MsgProcess)= False Then Exit;
              If MsgProcess.szExeFile='程序名' Then 
                begin  
                 ShowMessage('ProcessID='+IntToStr(MsgProcess.th32ProcessID) );
                 Exit ; 
                end ;            
            End ;
    End ;//如何Hook API,我就不懂了!只能帮你这些了 
      

  2.   

    一种常见思路是利用钩子~~~当进程加载钩子所在DLL后,当然要执行DLL中主程序(C++中是WinMain,Delphi中是工程文件中的begin...end;中)中的代码,其中用WriteProcessMemory修改相应地址,即替换相应跳转指令后的API函数入口地址为自定义函数的地址例程网上到处都有