提到开机加载(load)项,大家不要以为就是系统启动(run)项。最简单的例子是,杀毒软件或者用户手动删除病毒文件后,注册表中的自动加载信息仍在,登陆系统时就会提示“加载*dll出错,系统找不到指定的模块”,这些dll就是病毒寄生在系统进程之下的加载项。

出错开机加载项大揭秘">

加载dll出错

病毒本身被阻止运行,却“挟系统以令用户”,辗转藏在系统进程后面继续狐假虎威,大行其道;它们被发现并删除后,下次系统登陆、启动服务、初始化用户配置、启动外壳explorer.exe时,依然会按注册表的指示运行rundll32.exe调用这些加载项,这时系统找不到文件实体,就会提示加载失败。虽然不影响使用,但那“嗡”的一声,有如晴天霹雳,让人一开机就憋得慌!点击确定后也一直如坐针毡,总感觉自己中毒了。

其实,只要在注册表中搜索这个dll删掉,一般就能就地解决。问题是,很多dll在注册表中根本搜索不到,但开机时它就是要弹框!别慌,只要去注册表中如下固定位置扫荡一遍,疏而不漏,总能找到蛛丝马迹。以下位置最前四字母均为首字母缩写,在注册表利器Registry
Workshop的地址栏中通用,可直接粘贴回车转到,并加入收藏,收藏还可分类哦~Let's Go!


(1)WinLoad

HKCU\Software\Microsoft\Windows
NT\CurrentVersion\Windows\load

出错开机加载项大揭秘">

Windows_load

如图,这项原本不存在,或者默认为空。如果病毒将自己的dll添加到这里,可想而知系统启动时就会自动加载它。


(2)Notify

HKLM\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Winlogon\Notify

出错开机加载项大揭秘">

Winlogon_notify

这里是windows登陆“通知”,图中的项都是正常项。以前Windows
正版增值计划通知(WGA)提示Windows不是正版,就是通过wgalogon.dll在这里添加了一个项,登陆时通知调用WgaTray.exe,在托盘弹出提示的。如果病毒也在这里嵌入一个“通知”,开机时当然会有所表现并有所动作。


(3)Userinit

HKLM\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Winlogon\Userinit

出错开机加载项大揭秘">

Winlogon_Userinit

当“欢迎使用”或“正在加载个人配置”的窗口飘过后,我们打开任务管理器,可以看到这个Userinit.exe进程逗留了很久方去,它就是用户个人配置初始化程序。其默认值是C:\WINDOWS\system32\userinit.exe,(带英文半角逗号),如果这项被修改,加载个人配置时就会难产弹错;如果被改成病毒程序,后果不堪设想。

告别加载dll 出错开机加载项大揭秘的更多相关文章

  1. Delphi静态加载DLL和动态加载DLL示例

    下面以Delphi调用触摸屏动态库xtkutility.dll为例子,说明如何静态加载DLL和动态加载DLL. 直接上代码. 1.静态加载示例 unit Unit1; interface uses W ...

  2. vc静态加载dll和动态加载dll

    如果你有a.dll和a.lib,两个文件都有的话可以用静态加载的方式: message函数的声明你应该知道吧,把它的声明和下面的语句写到一个头文件中 #pragma comment(lib, &quo ...

  3. SharpSvn 调用在运行时提示加载程序集出错,或有依赖项

    策略后引用: SharpSvn, Version=1.8009.3299.43, Culture=neutral, PublicKeyToken=d729672594885a28日志: 尝试下载新的 ...

  4. C# 利用反射动态加载dll

    笔者遇到的一个问题,dll文件在客户端可以加载成功,在web端引用程序报错.解决方法:利用反射动态加载dll 头部引用加: using System.Reflection; 主要代码: Assembl ...

  5. Linux开机加载过程

    2015-01-06 10:29:13   目录 1 开机加载简介 2 常规加载流程 2.1 加载BIOS 2.2 读取MBR 2.3 boot loader 2.4 加载内核 2.5 init依据i ...

  6. C#使用SQLite出错:无法加载 DLL“SQLite.Interop.dll”,找不到指定的模块

    在SQLite官方下载了System.Data.SQLite,编写如下测试代码: 复制内容到剪贴板 程序代码 using (SQLiteConnection conn = new SQLiteConn ...

  7. C# 实现动态加载DLL插件 及HRESULT:0x80131047处理

    本代码实现DLL的动态加载, 类似PS里的滤镜插件! 1. 建立一个接口项目类库,此处名称为:Test.IPlugin using System; namespace Test.IPlugin { p ...

  8. 无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)

    SQLite部署-无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块 近期刚使用SQLite,主要引用的是System.Data.SQLite.dll这个dll,在部署到测试 ...

  9. 加载dll过程中assembly失败

    错误现象: 进行插件读取时出现错误:“尝试从一个网络位置加载程序集,在早期版本的 .NET Framework 中,这会导致对该程序集进行沙盒处理.此发行版的 .NET Framework 默认情况下 ...

随机推荐

  1. LeetCode21.合并两个有序链表 JavaScript

    将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1->2- ...

  2. 6.可见性关键字(volidate)

    可见性关键字(volidate): 如果对java内存模型了解较清楚的话,我们知道每个线程都会被分配一个线程栈. 线程栈里存的是对象的引用,但当前cache缓存机制,可能会把数据拷贝. 就是,命中缓存 ...

  3. java web项目用cookie记住用户名、密码

    1.jsp页面: <% String flag = (String)session.getAttribute("flag")==null?"":(Stri ...

  4. 《Linux 学习》01---redis安装, 并使用Redis Desktop Manager 连接

    一.环境简介: linux 系统:centos 7.X 二.安装大纲: 1.下载安装包 2.安装 3.统一管理redis 配置文件 4.编辑redis配置文件,设置常用的功能 5.(1)命令启动,连接 ...

  5. Oracle语句(一)之简单查询

    1.查询数据表的所有列: select * from 表名; 程序员正常用法:select 列名,列名... form 表名; 2.起别名: select 列名 [AS 别名],列名 别名...fro ...

  6. jQuery 遍历 - children() 方法 获取指定id下子元素的值

    <a id="Aobj_2_2" class="" specid="2" specvid="2" href=&qu ...

  7. HTML | video的封面平铺方法

    <video style="object-fit:fill;"></video>

  8. React Native开发之expo中camera的基本使用

    之前做RN项目没调用过本地摄像头,今天下班早,做了一个简单的小demo:主要实现的功能:点击拍照按钮进入拍照界面,点击flip进行前后摄像头转换,点击开始拍照实现拍照功能(没写保存到本地的功能,大家可 ...

  9. php.ini修改后,重启无效

    今天做项目,上传图,需要修改php.ini.发现修改后,多次长期服务器也没用,在网上找了好多方案.介绍一下我的流程 1.使用phpinfo()找到php.ini的位置,如果位置不准确,修改肯定没有任何 ...

  10. MySQL数据库的原理

    点进去就是你历经千辛万苦找到的数据库的原理: https://www.cnblogs.com/smallyard/p/5626061.html