1. 基本思想,对程序中的APi进行重定向!
例如对LoadLibraryA进行Hook,基本思路如下:
0x12345678 call LoadLibrary -> 0x12345678 call MyLoadLibrary
2. 实现中的一些具体问题,如何在一个进程中对另外一个进程的API进行修改?这其中包含两个问题,首先,一个进程可以对另一个进程的空间进行操作么?可以,Windows提供了用户相应的权限。
并且允许进程为另外的进程创建线程,并触发另外的线程调用当前的模块!
比如:
ProcessA -> hookapi.dll -> createromotethread()
之后
ProcessB -> hookapi.dll
进程B会加载hookapi.dll. 实际上我们通过这种方式将hookapi注入到了进程B中, 并且利用该模块修改了进程的的APi调用。 另外当然还有一些具体的问题,比如为call指令计算相对位置, 如何恢复和保护现场。