之前我有说过API拦截的技术,这篇文章中向大家展示一个应用,那就是拦截浏览器中网络通信API,实现网址跳转。
其效果就是,你在浏览器中输入百度的网址,当回车后跳转到了搜狗。
这个可以通过拦截多个API实现,也可以只拦截一个。
做这件事之前你要熟悉网络通信的原理,知道浏览器是怎么访问网站的。
首先,你在浏览器中输入网址后回车。浏览器会拿网址访问域名服务器,将域名转换为web服务器的IP地址。
然后,和web服务器创建连接,发送数据,在接收数据。基本上就是这样。
这样我们拦截send、recv,在send中判断这个网址是不是需要拦截的百度网址,发现是百度,
那你什么都不用做,只是把这个socket记录下,你让这个请求发送到百度的web服务器,
过一会你就会收到返回的数据,这应该是html个页面。
因为我们拦截了recv,所以我们可以拦截到这个页面的数据,我们在recv中判断,当前recv的socket和百度的socket
是不是一个,是一个就要修改这个页面的数据,我们把他改成Url重定向数据。告诉浏览器百度的web网站迁移了。
迁移到到搜狗了,那么浏览器接下来就会向搜狗发送web请求,实现跳转。
实际中你可能还会涉及到拦截WSASend、WSARecv、NtDeviceIoControlFile等。
我实现了一个插件,基本上主流浏览器都支持。你可以去这里下载 http://download.csdn.net/detail/qq112358hai198771/9719858,双击load.exe运行,不要关闭load.exe。