捆绑安装浏览器:技术剖析搜狗输入法中的猫腻
不知道从什么时候开始,上网变成了搜狗浏览器。卸载后,过几天又莫名其妙安装上。搜狗也算是名门正派,竟然会用这么恶劣的手段捆绑软件!这么做跟病毒有什么区别?!
专门花时间重现了搜狗推广的手段,顺手看到搜狗还有一个调试信息输出开关,只要增加一个注册表值,如果有这个键值就会把调试信息打出来,开着debugview就能监控到搜狗在搞什么小动作:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSoftwareSogouInput]
"lotusdebug"=dword:00000001
如果电脑没有装360,搜狗输入法直接就去服务器下载运行一个推广程序,这个地址就是搜狗服务器上的一个静默推广包:
http://download.ie.sogou.com/se/semini/SEMini_3.0.0.571_7805.exe
如果电脑有360,搜狗输入法推广浏览器的云控代码都在内存里,大概过程是这样的:
第一步,静默下载。sogoucloud.exe和云端通信,根据云端指令把搜狗浏览器的安装包下载回来。云控数据域名请求是下面抓包的内容:
第二步,经过请求内容解密出代码,代码功能里有从搜狗官网下载安装包,创建随机目录把安装包放进去,都是一些常见下载工具的目录,比如把搜狗浏览器安装包放到360、百度或者迅雷的下载目录里,不管你电脑里有没有装这些软件:
搜狗浏览器的安装包还会被放到以下固定的地方,都是搜狗输入法的目录,省的下次再去下载了。大家可以到下图中标红的路径里找找,类似sgim_sehelper.bin之类的文件都是搜狗浏览器的安装包:
第三步,模拟用户点击来安装搜狗浏览器。explorer里的sogou.ime会下载运控的shellcode执行后选择时机去推广浏览器,通过PostMessageW发消息自动模拟点击下载好的浏览器,这个浏览器安装包也通过进程间通信隐藏了安装界面,所以莫名其妙就装上了。如果一直盯着,全过程只会看到电脑上突然打开一个文件夹,又被关掉,然后就多了个搜狗浏览器。
PostMessageW模拟点击这都是我以前写外挂时最常用的,不过我是用来操作游戏,搜狗用来搞流氓推广。
- WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[中篇]
- 如何通过自定义MessageFilter的方式利用按键方式操作控件滚动条[附源代码]
- WCF技术剖析之十九:深度剖析消息编码(Encoding)实现(下篇)
- 《WCF技术剖析》博文系列汇总[持续更新中]
- 关于服务器的运行寿命 你应该知道这些事
- WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[下篇]
- WCF技术剖析之二十一: WCF基本的异常处理模式[上篇]
- 树大招风:细数2017年加密货币市场的幺蛾子事件
- 如何解决HP QC(Quality Center)在Windows 7下不能工作的问题
- WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[上篇]
- 5个典型实例启发:什么是数据可视化
- 智能家居“智商”不够,能靠情商来补吗
- 大话MVP
- AngularJS in Action读书笔记1——扫平一揽子专业术语
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python进程与线程小结实例分析
- PHP集成环境XAMPP的安装与配置
- Python socket服务常用操作代码实例
- Python select及selectors模块概念用法详解
- keras使用Sequence类调用大规模数据集进行训练的实现
- python的json包位置及用法总结
- 如何优雅的使用 laravel 的 validator验证方法
- phpMyAdmin通过密码漏洞留后门文件
- laravel中的一些简单实用功能
- PHP 获取客户端 IP 地址的方法实例代码
- 优秀开源AI框架推荐
- python中常见错误及解决方法
- tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
- Python如何实现后端自定义认证并实现多条件登陆
- safari下载文件自动加了html后缀问题