噼里啪啦鞭炮响,我们公司开张了!
今天是我们千度浏览器公司开业第一天,公司主营业务是网页浏览,我们来到这个陌生的Windows帝国创业,虽然这里已经有IE浏览器公司发展多年,但因为他们是国有企业,不思进取,办事效率低,所以我们有信心,期待着为人类提供更好的上网体验。
几天过去了,一笔上网业务都没收到,市场部老大开始急了,指定了我和军军去调研下怎么回事。
经过一番研究,原来我们不是这台电脑的默认浏览器,用户点击链接的时候,会使用默认的浏览器打开,默认浏览器是361浏览器公司,我们自然是没有业务了。
汇报完调查结果,老大发了话:不管你们用什么办法,把我们变成默认浏览器!
第一战:拿下注册表
工作不敢怠慢,又经过一番研究,原来系统的默认浏览器是登记在一个叫注册表的帝国核心数据仓库,打开链接的时候,就会去这里查询谁是默认浏览器。
注册表:Windows帝国核心机要配置数据库
原理搞清楚了,问题就好办了,我赶紧调用注册表的接口函数,把我们千度浏览器设置成为系统默认浏览器。这不写不知道,一写吓一跳,居然失败了,告诉我拒绝访问,没有权限!
我意识到问题可能没有我想的那么简单,赶紧向军军求助。
军军:看来361浏览器下面有人!
我:下面有人?我只听过上面有人,下面有人什么意思?
军军:你不知道,这个世界是分高低贵贱的,我们这些普通线程一般情况下都是在用户态工作,权限极小,而那些位高权重的线程都是执行在内核态的,他们可以干的事情比我们多得多,帝国政府工作线程基本都是工作在内核态的。因为他们工作在底层,所以称为下面。
我:那361浏览器下面的人哪来的?
军军:帝国开了一个口子,允许加载驱动进入内核态,361浏览器公司多半是通过这种方式进去的,进去之后把注册表给守着,不允许我们在上面修改默认浏览器。
我:那咱们也用驱动进去,进入内核态跟它竞争。
军军:可以试试。
说干就干,我们弄了个驱动程序,顺利的进入了帝国的内核空间,我还是第一次到这里来,这里的世界果然大不一样,不过这次任务紧急,没时间慢慢欣赏了。
经过排查,361公司做了重重保护,不仅对内核函数执行了HOOK,还设置了注册表操作回调通知,相当于给修改注册表的路上装了监控摄像头,我们的一举一动都能被对方知道。
军军:看来361公司对默认浏览器的注册表看护森严,轻易是动不了的。
我:那难道没办法了吗?
军军:也不尽然,大路被361公司看得死死的,我们走小路,绕过他的监控,或许可以一试。
按照军军的思路,我们抄了一条小路,绕过那些敏感的函数,直接调用底层的注册表写入函数,这一次总算写入成功!
回到公司,终于有业务找上门来,看着业务部门忙碌的身影,我们非常开心。
第二战:瞒天过海
然而好景不长,仅仅过了几天,生意又开始惨淡起来,隔壁361公司生意反倒好了起来。难道默认浏览器又被361公司改了回去?
我赶紧去看了一下注册表,奇怪了,里面写的还是我们千度浏览器啊,怎么就没生意了呢?这一下难倒我们了,问题到底出在哪里?一连好几天都没有思路。
无奈之下,我决定再去内核态一探究竟。
没过多久,果然有人来查注册表了,我在远处拿着望远镜看着,361公司的人检查了参数,就直接放他过去了,原来这人来查的不是默认浏览器。
一直等了好久,终于有人来查默认浏览器了,这361公司居然直接给了他结果,就让他回去了,都没有真正去注册表去查!
气死我了!原来给了别人假的结果!我把我看到的一切都告诉了军军。
我和军军开始关起门来,研究对策。然而还没等我们研究出个结果,市场部老大又过来了。
老大:你们先别研究了,361公司也没生意了,来了个QB浏览器,生意都去他们那里了,赶紧去看看。
竟有此事!我们放下手中的工作,赶紧去瞧一瞧。
第三战:半路截胡
QB浏览器果然热闹非凡,来往办理业务的络绎不绝。他们是怎么抢了361公司生意的?我和军军都很诧异。
我再一次来到内核空间,守着注册表查询的地方,想看看发生了什么。
然而一切都没有变,361公司仍然把守着关键位置。不一样的是等了大半天一个来查默认浏览器的人都没有。
第二天,第三天,依旧如此,但是QB浏览器的生意倒是从未中断,我开始意识到不对劲。
当天晚上,我趁人不注意,通过远程线程注入的方式,乔装打扮溜到了Outlook邮箱公司,Outlook曾经是我们的大客户,但最近都不来照顾我们家生意了。我在Outlook公司的收件箱仓库翻了半天,终于找到一封带有链接的邮件,环顾四周见没人发现我,于是冒充Outlook公司的员工点开了一个链接,打算看下这笔业务怎么就跑到了QB浏览器公司。
接下来的事情让我大吃一惊:点击链接后,一条JMP指令居然让我跳到了数字签名为QB集团的一个模块中,而这里根本没让我查注册表,直接就给我QB浏览器的路径,让我去找他打开链接!
真相总算大白,原来溜入Outlook公司的不止我一个,QB公司的人早就溜进来了,还安装了HOOK,欺骗所有人让他们都去自己那里办业务!
回到公司,把我的经历告诉了市场部老大。老大大怒:这些公司也太没下线了,为了钱什么都能做出来。
几秒种后,老大又说:我们得给他们一些教训,你们赶紧琢磨琢磨如何抢回来。
终局之战:狸猫换太子
不过我们终究还是嫩了一些,过了一晚上,第二天帝国又来了一家猎狗浏览器公司开业,网页浏览的生意一下又被他们抢了过去。
不得已,我只得故技重施,再次潜入Outlook公司,看看这猎狗浏览器又是如何抢到的客户。
再次点击链接,按照熟悉的路线,拿到的还是QB浏览器公司的地址,我也顺利的调用CreateProcess函数把QB浏览器给启动了。
然而等我回到公司,竟然神奇的发现,QB浏览器并没有启动,启动的竟然是猎狗浏览器,明明是我亲自打开的QB浏览器怎么就变成了猎狗浏览器?我有点怀疑自己眼睛是不是看错了。
我打算再来一次,这一次,我让军军溜入Outlook公司执行我开始的操作,而我去到内核态,看着进程启动的地方,看看哪个环节出了问题。收到军军的信号后,QB浏览器进程果然开始创建,接下来一幕让我惊掉了下巴:猎狗浏览器也在内核态安插了驱动,他们竟然把QB浏览器的执行文件exe换成了猎狗浏览器的!好一招狸猫换太子!
再见:浏览器江湖
回到公司已是深夜,打算第二天再汇报领导。
第二天,还没等到汇报工作,领导先召集我们开会:非常遗憾的告诉大家一个消息,由于公司的业绩持续下滑,千度集团决定砍掉这块业务,千度浏览器即将成为历史,大家准备好工作交接吧。
消息来得突然,不过我也厌倦了这样的争斗,不做也好。
然而,默认浏览器的战争,还在继续······
未完待续·······