劫持自身
我们先来写一个简单小程序,来实现对自身函数调用的拦截试试。在这里呢主要是拦截程序中调用的system函数。让它不能干活。【顺带一提,请把前面编译好的detours.h和detours.lib放到构建工程目录下,编译的时候请设置为release模式才有效,因为debug模式本身就是劫持】
看看效果:
可以看到,hook()前的system能正常执行,打开了一个calc。hook()的system已经变成了我们自定义的newsystem函数了。成功劫持了自身。
劫持别人
可能已经有同学注意到,劫持自身也装不了什么B啊。能不能劫持别人,让它不能干活呢?
答案是肯定的,劫持其他程序有多种方式,比如全局hook,dll注入等。这里介绍下dll注入。我们打算拦截CreateProcess创建进程这个函数,让它创建不了进程。
这里在程序属性里设置一下,配置类型改为dll.然后生成
哎,截不了那么长的图大家凑合着看一下。生成了dll以后,咱们借助咱的dll注入工具来测试一下效果吧。这里再写一个创建进程的小程序测试一下,每5秒打开一个记事本。
可以看到。注入之后,notepad进程不再创建,而是弹出了交保护费的窗口。如果把这个dll注入到explorer.exe里面会发生什么,嘿嘿可想而知。关于dll注入有关知识,以后有时间再讲吧。