捆绑安装浏览器:技术剖析搜狗输入法中的猫腻
不知道从什么时候开始,上网变成了搜狗浏览器。卸载后,过几天又莫名其妙安装上。搜狗也算是名门正派,竟然会用这么恶劣的手段捆绑软件!这么做跟病毒有什么区别?!
专门花时间重现了搜狗推广的手段,顺手看到搜狗还有一个调试信息输出开关,只要增加一个注册表值,如果有这个键值就会把调试信息打出来,开着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模拟点击这都是我以前写外挂时最常用的,不过我是用来操作游戏,搜狗用来搞流氓推广。
- python使用rsa库做公钥解密(网上别处找不到)
- 通过“四大行为”对WCF的扩展[原理篇]
- WCF客户端运行时架构体系详解[下篇]
- WCF客户端运行时架构体系详解[上篇]
- WCF服务端运行时架构体系详解[续篇]
- [WCF-Discovery] 实例演示:如何利用服务发现机制实现服务的“动态”调用?
- [WCF-Discovery]服务如何能被”发现”
- 我的数据访问函数库的源代码(一)—— 共用部分
- 《WCF服务编程》关于“队列服务”一个值得商榷的地方
- 我的数据访问函数库的源代码(二)—— SQL语句部分
- 来源于WCF的设计模式:可扩展对象模式[上篇]
- 我的数据访问函数库的源代码(三)——返回结构数组
- 我的数据访问函数库的源代码(四)—— 存储过程部分,包括存储过程的参数的封装
- [WCF 4.0新特性] 路由服务[实例篇]
- 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 数组属性和方法
- 和低效 IO 说再见,回头补一波 Java 7 的 NIO.2 特性
- 框架源码调试实战之easypoi异常解决方案精讲
- MySQL8.0的错误日志
- Shiro学习笔记(一)
- Shiro学习笔记(二)
- Shiro学习笔记 三(认证授权)
- Shiro学习笔记四(Shiro集成WEB)
- Shiro学习笔记五(Shiro标签,及通配符)
- Shiro学习笔记六(自定义Reaml-使用数据库设置 user roles permissions)
- Luncene学习 第一天 《入门程序》
- Luncene学习二《搜索索引》
- JavaWeb--简单分页技术
- 使用Python制作第一个爬虫程序
- 使用BeautifulSoup 爬取一个页面上的所有的超链接
- 使用PlaceHolder,测试碰见的问题