<!-- Search Google -->

输入您的搜索字词 提交搜索表单

<!-- Search Google --> 这几天研究了一下雅虎助手是如何干扰360卫士的,发现如果安装雅虎助手的时候不安装3721就不会有问题,看来问题出在3721上了。于是在安装雅虎助手的时候选择安装3721,结果问题果然出现了,联想到前几天在360论坛上看到vcmfc提到雅虎助手/3721通过一个系统CBT钩子干扰“360安全卫士”和“兔子”,于是特别留意了一下系统钩子运行的情况。安装了雅虎助手之后,我先运行了一个自编的系统钩子检查程序AntiHook.exe,果然立刻发现了雅虎助手安装的钩子,见下图:

yhelper.dll没有加密措施,对“360安全卫士”和“兔子”的代码随处可见,比如,下面的代码是从Runonce中删除“兔子”和“360”的启动项,干扰这两个程序的运行:
.text:53002C9E loc_53002C9E: ; CODE XREF: sub_53002993+285
.text:53002C9E mov esi, ds:SHDeleteValueA
.text:53002CA4 mov ebx, offset pszSubKey ; "SOFTWARE//Microsoft//Windows//CurrentVersi"...
.text:53002CA9 push offset pszValue ; "Super Rabbit Winspeed"
.text:53002CAE mov edi, 80000002h
.text:53002CB3 push ebx ; pszSubKey
.text:53002CB4 push edi ; hkey
.text:53002CB5 call esi ; SHDeleteValueA
.text:53002CB7 push offset a360safe_0 ; "360Safe"
.text:53002CBC push ebx ; pszSubKey
.text:53002CBD push edi ; hkey
.text:53002CBE call esi ; SHDeleteValueA
.text:53002CC0 pop ebp
.text:53002CC1 pop ebx

上面的代码只是小手段,下面才是真正导致“360安全卫士”和“兔子”无法运行的“罪魁祸首”,这段代码运行的时候yhelper.dll钩子已经被安装(钩)到应用程序进程空间中了,所以已经可以访问被钩程序进程空间中的资源了,来看看代码:

.text:53001BF2 loc_53001BF2: ; CODE XREF: DllMain(x,x,x)+50j
.text:53001BF2 mov ecx, offset unk_53006740
.text:53001BF7 call sub_53002E25
.text:53001BFC push 1 ; int
.text:53001BFE push offset aWinspeed ; "WINSPEED"
.text:53001C03 call sub_53002993
.text:53001C08 push 1 ; int
.text:53001C0A push offset a360safe ; "360SAFE"
.text:53001C0F call sub_53002993
.text:53001C14 add esp, 10h
.text:53001C17 jmp short loc_53001C42
.text:53001C19 ; ---------------------------------------------------------------------------

关键点是函数sub_53002993,这个函数接受一个字符串参数,就是“360安全卫士”和“兔子”的进程名称,sub_53002993是函数做什么呢?很简单,就是先调用GetModuleFileName()得到当前Hook的进程名称,然后通过字符串比较确定是不是“360安全卫士”和“兔子”。如果是就通过API钩子的方式Hook以下API:
DeleteFileA
TerminateProcess
RegDeleteKeyA
RegDeleteValueA
OpenProcess
DeleteFileW
MoveFileExW
MoveFileW
MoveFileExA
MoveFileWithProgressA
MoveFileWithProgressW
RegDeleteKeyW
RegDeleteValueW
ShellExecuteA

采用的方式很老套,就是修改API函数的前五个字节为一个跳转语句,跳到钩子程序中的处理函数,在处理函数中根据情况进行一下过滤。下面以雅虎助手用于替换DeleteFileA的处理函数为例,看看它都做了些什么。这个处理函数功能很简单,就是过滤一下要删除的文件,当检测到“兔子”和“safe360”在删除与自己相关的东西时就不执行删除工作,直接返回成功欺骗这两个程序,看看对DeleteFileA的处理函数:
.text:5300217B ; int __stdcall YhDeleteFileA(char *)
.text:5300217B YhDeleteFileA proc near ; 函数名字是我命名的
....................................... ;省略一些代码
.text:530021C9 mov esi, ds:strstr
.text:530021CF lea eax, [ebp+var_104]
.text:530021D5 push offset aCns_0 ; "CNS"
.text:530021DA push eax ; char *
.text:530021DB call esi ; strstr ;名字里有没有“cns”?
.text:530021DD add esp, 14h
.text:530021E0 test eax, eax
.text:530021E2 pop edi
.text:530021E3 jnz short loc_53002228 ;是雅虎的文件,就直接跳转到返回点
.text:530021E5 lea eax, [ebp+var_104]
.text:530021EB push offset aYahoo ; "YAHOO"
.text:530021F0 push eax ; char *
.text:530021F1 call esi ; strstr ;名字里有没有“yahoo”?
.text:530021F3 pop ecx
.text:530021F4 test eax, eax
.text:530021F6 pop ecx
.text:530021F7 jnz short loc_53002228 ;是雅虎的文件,就直接跳转到返回点
.text:530021F9 lea eax, [ebp+var_104]
.text:530021FF push offset a3721 ; "3721"
.text:53002204 push eax ; char *
.text:53002205 call esi ; strstr ;名字里有没有“3721”?
.text:53002207 pop ecx
.text:53002208 test eax, eax
.text:5300220A pop ecx
.text:5300220B jnz short loc_53002228 ;是雅虎的文件,就直接跳转到返回点
.text:5300220D lea eax, [ebp+var_104]
.text:53002213 push offset aV ; "雅虎"
.text:53002218 push eax ; char *
.text:53002219 call esi ; strstr ;名字里有没有“雅虎”?
.text:5300221B pop ecx
.text:5300221C test eax, eax
.text:5300221E pop ecx
.text:5300221F jnz short loc_53002228 ;是雅虎的文件,就直接跳转到返回点
.text:53002221 push [ebp+arg_0] ;
.text:53002224 call ebx ; unk_530070A4,调用保存在530070A4地址处的真正的DeleteFileA
.text:53002226 jmp short loc_53002232
.text:53002228 ; ---------------------------------------------------------------------------
.text:53002228 ; 雅虎文件的返回点
.text:53002228 loc_53002228: ;
.text:53002228 ; 如果要删除的文件名包含yahoo的关键字,就转到这里
.text:53002228 push 1 ;直接返回1表示成功,欺骗safe360和兔子以为文件已经删除
.text:5300222A pop eax
.text:5300222B jmp short loc_53002232
....................................... ;省略一些代码
.text:53002232
.text:53002232 loc_53002232: ;
.text:53002232 pop esi
.text:53002233 pop ebx
.text:53002234 leave
.text:53002235 retn 4
.text:53002235 YhDeleteFileA endp

现在明白了吧,“360安全卫士”和“兔子”一旦被钩上这个钩子,正常的功能就丧失了,因为所有与雅虎助手和3721相关的文件,注册表和进程都无法删除了。做软件的人都知道,在系统中安装钩子会影响系统的性能,一般都不会采用这种方法实现软件的功能,而雅虎助手和3721使用系统钩子与自己的本身功能没有任何关系,仅仅是为了干扰别人的软件就采用这种方式安装系统钩子,是不是太过分了?这种对其它软件的破坏是赤裸裸的,就根据这一点,“360安全卫士”和“兔子”就足以将雅虎助手和3721告上法庭。

看看雅虎助手是如何“兔子”和“360安全卫士”的相关推荐

  1. 怎样使用计算机的桌面助手,360安全卫士如何整理电脑桌面?360桌面助手使用说明...

    很多电脑用户平时在收发文件或者安装软件的时候,往往都会贪图一时的方便就将它们扔在桌面.可是时间久了,文件多了,快捷图标也多了,就会让整个电脑桌面很凌乱,找个文件或者图标都要找半天.360桌面助手恰可以 ...

  2. 全面剖析雅虎助手以及网络实名的流氓行径(6)

    10.后台运行的消息钩子 有兴趣的人可以看看图中的钩子类型,看看雅虎助手利用的大量钩子函数在干些什么.(图20) 11.植入浏览器右键菜单的"雅虎搜索"菜单项 12.雅虎助手yas ...

  3. 细数3721(雅虎助手)两年来的流氓升级史

    =================================刚才分析了Yahoo上网助手的34号patch包,找到一些同360安全卫士PK的有意思的东西,便对上网助手的patch感兴趣起来了,想 ...

  4. MJ0011技术分析:细数3721(雅虎助手)两年来的流氓升级史

    http://www.cnbeta.com/modules.php?name=News&file=article&sid=16554 ========================= ...

  5. win7关闭开机启动项_老司机给你传授 win7系统设置开机不启动360安全卫士只启动软件小助手的图文教程 -win7系统使用教程...

    win7旗舰版是用户量最大的一款操作系统:有不少人在使用中都遇见了win7系统设置开机不启动360安全卫士只启动软件小助手的问题,太多的用户是不想看到win7系统设置开机不启动360安全卫士只启动软件 ...

  6. 提取360安全卫士中的360手机助手(绿色化)

    作为一个Android手机用户,电脑里面没装几个手机助手,出门都不好意思跟人打招呼.现在已经用过了豌豆荚手机助手.腾讯的应用助手forAndroid还有就是360手机助手. 个人感觉,豌豆荚的优点是整 ...

  7. 360安全卫士电脑版_教你降服“流氓头子”正确打开360安全卫士的姿势,还你电脑流畅体验...

    最近老哥家的电脑经常出问题 原因是熊孩子玩儿完电脑,最后总是一堆莫名其妙的流氓软件占据桌面的半壁江山 然后恢复电脑流畅运行的任务,就交到我这个"懂电脑"的人手里. 如此反复两次,脾 ...

  8. 360浏览器升级_360安全卫士下载|360安全卫士 12.0 最新版

    有没有一款软件是你不论换了多少台机子,都是优先第一时间想要保存在电脑上的?那么这一款软件应该就是你心目中都想要的吧.不然你为什么会搜索到这个软件上来呢?就是不知道这款软件是不是最新版,还是需要用户自己 ...

  9. 360安全卫士v3.0beta3版发布!

    倾力打造全新主动防御功能,拒恶意软件于电脑之外!<可自行选择是否开启> 恶意软件入侵拦截准确判断伪装成其它软件的的恶意软件安装程序,防止用户误运行 明确提示捆绑在正常软件当中的恶意软件,堵 ...

  10. 深度调查:危险的“360安全卫士”!

    [转]不管这是不是企业间的栽赃,至少,360绑架用户,我是亲身体会了的:开学的时候,我把电脑格式化了,然后重装系统,重装软件,为了方便,我下了360卫士,下载一些必备的软件,我知道360会诱导用户下载 ...

最新文章

  1. 宏定义来实现一个结构体成员相对于该结构体首地址的偏移量
  2. 分享五款java学习辅助工具,总有你用的上的~
  3. Android之选项菜单和上下文菜单解析
  4. 年会抽奖程序准备好了吗?没有的话,直接来取!
  5. 关于 golang 代理设置的
  6. android 程序退出广播,android 利用广播实现程序的强制退出
  7. msfvenom生成木马和内网穿透
  8. c++之对vector排序并获得其索引
  9. <c++STL>: map的常见用法
  10. arm开发板上找不到/dev/i2c-*设备
  11. 机智云智慧烟感物联网解决方案
  12. 99%的工程师都不知道vscode还有这个功能
  13. 实现一个行内三个div等分_一个div,包含三个小的div,平均分布的样式
  14. Running “flutter pub get“ in xxxx... 解决方案
  15. 找出最接近的数据-MATLAB
  16. 【黄啊码】php结合微信公众号实现裂变海报(基本技术点)
  17. react实现一个周日历表
  18. CAS:1222468-90-7,p-SCN-Bn-Deferoxamine的分子量为752.9
  19. 梦幻西游手游服务器维护公告,《梦幻西游》手游2019年2月27日维护公告:梦幻狂欢月来临_ 《梦幻西游》手游官网-人人都玩,无处不在...
  20. linux shellshock漏洞,shellshock漏洞分析

热门文章

  1. 郝兵c语言_郝斌C语言教程全套视频180集下载地址
  2. 阿里巴巴矢量图标批量下载
  3. 重庆邮电大学801信号与系统考研最核心知识点
  4. 用 TypeScript 写一个轻量级的 UI 框架之八:表单控件之富文本编辑器
  5. android自定义壁纸制作,如何为Android制作自己的自定义壁纸 | MOS86
  6. python计算条件概率_统计算法_概率基础
  7. 微信小程序人脸识别之人脸属性检测
  8. python制作模型排放清单_四川省人为源大气污染物排放清单及特征
  9. 第二章注解深入浅出(三、插桩)
  10. 跳转页面 bscroll 无法无法从顶部滚动