分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]

  在之前的日志中,我提到过,我发现每个API的代码之间,都有5个字接的空白。所以,我忽然想到,我可以利用这5个字节进行新的API Hook,进而实现API被Hook以后还能执行原来的指令。

  其实,我觉得很多时候Hook一个API后,我们就没有必要去执行原来的代码了,因为我们要用新的过程来取代原来的API。可是,有的时候我们需要的仅仅是监视一下这个API的执行,或者只修改一下它的返回值而已,不希望它的过程被覆盖掉。这样,就产生了我这样的一个想法。

  这个方法,原理就是在API过程的最后,函数返回之前,跳转到我构造的指令中。在我的指令里,先保存了一下API的返回值,以便我们可以自己选择返回API原来的值或者自己定制的值。然后把传递进来的参数重新压栈,接着再用call指令调用我们自己的过程,然后返回。

  只是这个方法,有一个缺点,就是每个API的后面必须要有5字节的空白和只有一处返回指令。
< Tags: , >
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]