1.病毒会在system32目录生成一个以tmp结尾的随机数命名的文件。

2.然后挂钩HOOK本进程空间的imm32.dll导出的ImmLoadLayout函数和ntdll.dll导出的ZwQueryValueKey。

3.被挂钩的ZwQueryValueKey的处理流程是:若查询的键值是“Ime File”,则把之前生成的tmp文件名拷贝到输入缓冲区中返回给调用者,其它情况恢复原来流程执行。

4.显式调用user32的函数LoadKeyboardLayoutA来加载新的键盘布局,该函数经过win32k的处理后最终调用ntdll的ZwQueryValueKey,所以病毒生成的tmp文件被返回给系统。

5.通过FindWindow(0, “Program Manager”); 找到explorer.exe的窗口句柄,并调用PostMessage向该窗口发送WM_INPUTLANGCHANGEREQUEST消息。

6.这样Explorer.exe就将病毒动态库加载起来了。

现在病毒就达到目的了,病毒dll被explorer.exe加载

在dll被加载之前,Microsoft 调用ApphelpCheckIME 去检查dll的合法性,但它并没有去检查该dll是否导出了IME functions。

发送一个language change消息将导致explorer去加载任意的dll,尽管dll没有导出任何的IME functions,这是很危险的!

现在imm32.dll的很多函数依旧没有被整理成文档 并且病毒作者 正越来越看好这些函数。 这种病毒 并未终结,我们应该防范新的IME 输入法注入方式。

最新文章

  1. django学习遇到的问题解决方式
  2. java学习第15天(Linklist Vector)
  3. poj 3126
  4. PHP 5.3.X 连接MS SQL Server php_mssql.dll
  5. C语言的强制类型转换
  6. cocos2dx 3.0正式版 于mac在新建项目
  7. ELF二进制目标文件详解
  8. Excel教程(13) - 统计函数
  9. BZOJ-1192-[HNOI2006]鬼谷子的钱袋
  10. 玩转webpack(二):webpack的核心对象
  11. CenoOS 7环境下编译OpenJDK8
  12. 一文让你秒懂互联网TCP/IP协议的深层含义
  13. 如何让gitbook与github仓库关联
  14. 读写方式 r , r+ , w , w+ , a , a+
  15. Omi框架学习之旅 - 组件通讯(data通讯) 及原理说明
  16. 八种排序算法--java实现(转)
  17. css实现16:9的图片比例
  18. Kaggle(1):数据挖掘的基本流程
  19. 50Hz工频干扰消除
  20. 使用DOS工具修复数据库

热门文章

  1. IIS网站属性中没有ASP.NET选项
  2. ArcGIS Server API for JavaScript调用错误:已阻止跨源请求:同源策略禁止读取位于......
  3. Hibernate缓存原理与策略 Hibernate缓存原理:
  4. ubuntu tomcat 部署java web
  5. 从远程服务器数据库中同步数据到本地数据库 sql server 2008 开启分布
  6. MassTransit RabbitMQ 参考文档
  7. node递归属性目录结构
  8. 将Word转为带书签的PDF
  9. 修改mysql默认字符集的方法
  10. 我是如何用Go语言搭建自己的博客的