一枚邪恶的输入法浅析
“输入法”或许是计算机软件领域最伟大的发明之一了,也是我们日常的计算机使用中最常用到的软件,一款好的输入法能让我们事半功倍。随着计算机的软硬件不断发展,输入法的功能也不再局限于协助用户完成“输入”的工作,各家输入法为了拉拢用户,绞尽脑汁的为输入法添加了各种各样的小功能,往往能让人眼前一亮。
但试想,如果输入法的附加功能是弹广告呢?近日,360安全中心接到用户的反馈,说自己的浏览器首页被改了,还莫名其妙的弹出好多广告来。经过我们的一番排查,最终捕获到了这样的一款弹广告的输入法……
来自色站的你
正所谓“英雄难过美人关”,这仿佛是一个永恒的定律,各种亦真亦假色情网站始终是病毒、木马、流氓推广程序的集中“发货地”。而这次也不例外。唯一不同的是提示你需要安装“男人播放器”的不再是以往的alert弹窗,而改成了一个图片。这样做一来更贴近系统弹窗,有更好的迷惑性;二来是即便你点了取消依然会开始下载(限于尺度问题,我不得不把那些令人血脉舒张的图片盖住,大家可自行脑补):
一个页面中弹窗图片,就像这样:
好吧,因为误认为是系统弹窗而用鼠标点击了上面图片的请自觉面壁5秒,谢谢配合。而在真实的恶意网站上,如果点击了这个图片,会触发onclick属性指向的go()函数:
<SCRIPT type=text/javascript>
function go() {
window.location='</SCRIPT>
页面直接被定为到了程序的下载页面上,剩下的工作就交给你的浏览器吧……另外再提一句,不要对这种网站弹窗意外的那些图片和链接抱有任何不切实际的幻想——他们同样都是指向上面这个go()函数的……
悄悄的进村,打枪的不要
下载回来的程序,是一个自称“快手输入法” 的安装包,并且带有数字签名:
程序启动的时候会查看自身文件名
旦发现自身的文件名是一个推广格式,就直接跳过ShowWindow,全程静默安装。
Be Evil
静默安装本来就已经有些不妥了,更为恶劣的是在装完之后……
其实,浏览器的首页并没有被篡改——因为一旦有人动浏览器首页,360是一定会弹窗报警的。于是软件作者便退而求其次——再桌面上创建了一个快捷方式
看图标确实是IE浏览器,但也只有图标是IE浏览器……其实这个快捷方式是指向快手输入法主程序的
而以link为参数启动时,快手输入法的主程序便会打开一个特定的URL——这样用户所感觉到的,就是浏览器打开的时候,首页被篡改了:
与此同时,主程序还会释放出两个子程序,分别用于弹出右下角广告和热点资讯:
结语
输入法本应是提高我们日常工作效率的工具,但却成了某些人获取获取利益的手段。一款看似正规的输入法,却为了自己的获利而不惜干扰用户——我想这种获利也是目光短浅的眼前利益而已。
[本文作者/360安全卫士(企业帐号),在不影响文章整体质量的情况下可能包含少量商业信息,转载请注明来自FreeBuf.COM]
- 针对iPhone的pt、Android的dp、HTML的css像素与dpr、设计尺寸和物理像素的浅分析
- babel入门基础
- 如何构建爬虫代理服务?
- (19) 接口的本质 / 计算机程序的思维逻辑
- (18) 为什么说继承是把双刃剑 / 计算机程序的思维逻辑
- 有效的python属性管理:描述符的使用
- (17) 继承实现的基本原理 / 计算机程序的思维逻辑
- (16) 继承的细节
- Python时间处理完全手册
- 计算机程序的思维逻辑 (15) - 初识继承和多态
- 前端自动化测试漫长路之——Selenium初探
- 计算机程序的思维逻辑 (14) - 类的组合
- webpack中tree-shaking技术介绍
- Python进行远程视频监控
- 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 数组属性和方法
- 关于WebView 重定向行为导致的多次加载的问题
- 解决webview内的iframe中的事件不可用的问题
- Android WebView拦截iframe标签内部跳转教程
- Android实现WebView点击拦截跳转原生
- Android实现带节点的进度条
- Android WebView userAgent 设置为桌面UA实例
- Android WebView 内处理302重定向不跳转的解决
- android studio集成极光推送的操作步骤
- Android中的webview监听每次URL变化实例
- 解决Android WebView拦截url,视频播放加载失败的问题
- Android 极光推送别名与标签方式
- Android Webview的postUrl与loadUrl加载页面实例
- android Web跳转到app指定页面并传递参数实例
- Dialog全屏,去掉状态栏的方式
- Android 通过TCP协议上传指定目录文件的方法