如果我想用Hook替换一个Hook本身要用的函数...(挑战!!!) (100分)

  • 主题发起人 主题发起人 Coolcfan
  • 开始时间 开始时间
C

Coolcfan

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把WriteProcessMemory替换成MyWPM,但是如果用ApiHook来替换,<br>ApiHook替换API本身就要用到这个函数,这样应该怎么办呢?
 
//==========杀指定程序<br>procedure Killpro(s:string);<br>var<br>lppe:tprocessentry32;<br>sshandle:thandle;<br>hh:hwnd;<br>found:boolean;<br>begin<br>sshandle:=createtoolhelp32snapshot(TH32CS_SNAPALL,0);<br>found:=process32first(sshandle,lppe);<br>while found do<br>begin<br>&nbsp; if (uppercase(extractfilename(lppe.szExeFile))=s) or (uppercase(lppe.szExeFile)=s) then<br>&nbsp; begin<br>&nbsp; &nbsp; hh:=OpenProcess(PROCESS_ALL_ACCESS,true,lppe.th32ProcessID);<br>&nbsp; &nbsp; TerminateProcess(hh,0);<br>&nbsp; end;<br>&nbsp; found:=process32next(sshandle,lppe);<br>end;<br>CloseHandle(sshandle);<br>end; &nbsp; &nbsp;
 
lppe.th32ProcessID就是进程ID,通过他可以操作进程
 
有一个问题:如果我在全局HOOK 的 DLL 里执行GetCurrentProcessID,得到的<br>是当前Hook上的程序的PID吗?
 
很难吗? 我怎么不觉得?<br>凡是你hook程序中要调用WriteProcessMemory的地方在Hook前直接用,Hook后直接调保存的原始地址嘛
 
同意Another_eYes,你在替换API之前一定会保存原来API的地址以便退出时还原,你如果还要用旧的API可以直接调用原来保存的API地址(也就是旧的),例MyWPM已经替换了WriteProcessMemory,WriteProcessMemory的地址也保存到了m_OldAdd里面,你可以这样调用原来的WriteProcessMemory,m_OldAdd(...)
 
说的详细一点
 
后退
顶部