告别加载dll 出错开机加载项大揭秘
提到开机加载(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 出错开机加载项大揭秘的更多相关文章
- Delphi静态加载DLL和动态加载DLL示例
下面以Delphi调用触摸屏动态库xtkutility.dll为例子,说明如何静态加载DLL和动态加载DLL. 直接上代码. 1.静态加载示例 unit Unit1; interface uses W ...
- vc静态加载dll和动态加载dll
如果你有a.dll和a.lib,两个文件都有的话可以用静态加载的方式: message函数的声明你应该知道吧,把它的声明和下面的语句写到一个头文件中 #pragma comment(lib, &quo ...
- SharpSvn 调用在运行时提示加载程序集出错,或有依赖项
策略后引用: SharpSvn, Version=1.8009.3299.43, Culture=neutral, PublicKeyToken=d729672594885a28日志: 尝试下载新的 ...
- C# 利用反射动态加载dll
笔者遇到的一个问题,dll文件在客户端可以加载成功,在web端引用程序报错.解决方法:利用反射动态加载dll 头部引用加: using System.Reflection; 主要代码: Assembl ...
- 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 ...
- C#使用SQLite出错:无法加载 DLL“SQLite.Interop.dll”,找不到指定的模块
在SQLite官方下载了System.Data.SQLite,编写如下测试代码: 复制内容到剪贴板 程序代码 using (SQLiteConnection conn = new SQLiteConn ...
- C# 实现动态加载DLL插件 及HRESULT:0x80131047处理
本代码实现DLL的动态加载, 类似PS里的滤镜插件! 1. 建立一个接口项目类库,此处名称为:Test.IPlugin using System; namespace Test.IPlugin { p ...
- 无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)
SQLite部署-无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块 近期刚使用SQLite,主要引用的是System.Data.SQLite.dll这个dll,在部署到测试 ...
- 加载dll过程中assembly失败
错误现象: 进行插件读取时出现错误:“尝试从一个网络位置加载程序集,在早期版本的 .NET Framework 中,这会导致对该程序集进行沙盒处理.此发行版的 .NET Framework 默认情况下 ...
随机推荐
- win7利用winSCP上传文件到ubuntu server
1.为ubuntu server设置root密码: sudo passwd root 先设密码在登录 2. su root进入root账户: 3.安装SSH:sudo apt-get install ...
- MyBatis之Mapper XML 文件详解(三)-Result Maps
resultMap 元素是 MyBatis 中最重要最强大的元素.它就是让你远离 90%的需要从结果 集中取出数据的 JDBC 代码的那个东西, 而且在一些情形下允许你做一些 JDBC 不支持的事 情 ...
- 由Oracle 11g SYSAUX 和 SYSTEM 表空间回收引发的联想
0x00--目的 整理一下以前一个SYSTEM表空间和SYSAUX表空间使用率达到99%上限的处理思路和相关知识点,好记性不如烂笔头 0x01--表空间使用率现状 通过查询可得知目前表空间使用情况如下 ...
- MySQL的空值和NULL区别
从本质上区别: 1.空值不占空间 2.null值占空间 通俗的讲: 空值就像是一个真空转态杯子,什么都没有,而null值就是一个装满空气的杯子,虽然看起来都是一样的,但是有着本质的区别. ...
- Kibana6.3.1安装
Kibana安装 Kibana官方下载地址: https://www.elastic.co/cn/downloads/kibana 也可以直接使用以下命令下载(文章下载目录一概为/home/tools ...
- mysql的length与char_length的区别
length: 是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符 char_length:不管汉字还是数字或者是字母都算是一个字符 同时这两个函数,可用于判断数据中是否有中文文字 例 ...
- Spark运行模式_local(本地模式)
本地运行模式 (单机) 该模式被称为Local[N]模式,是用单机的多个线程来模拟Spark分布式计算,直接运行在本地,便于调试,通常用来验证开发出来的应用程序逻辑上有没有问题. 其中N代表可以使用N ...
- java instanceof 的理解
简单来说,java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法 ...
- JAVA8 Stream API的使用
/** * @auther hhh * @date 2018/12/31 12:48 * @description Stream流:用来处理数组.集合的API * 1.不是数据结构,没有内部存储(只是 ...
- Git项目管理
参考 参考书籍 <git学习指南> 参考网站 https://git-scm.com/ Git局限性讨论 高复杂度 两张图看懂集中式版本管理系统和分布式管理系统的区别-集中式vs分布式 g ...