`
izuoyan
  • 浏览: 9373693 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[Windows编程] 监视DLL装载/卸载

阅读更多

Windows 驱动开发库里面提供了函数 LdrRegisterDllNotification, LdrUnregisterDllNotification , 可以让你监视进程装载/卸载DLL 的事件。 当你想在某个DLL被加载的时候Hook它的函数; 或者当你想在某个DLL推出之前做一些保存清理工作; 或者当你想阻止某个DLL 被加载(比如外挂) .... 这个机制正可以派上用场 。

以下是代码示例如何使用 LdrRegisterDllNotification, LdrUnregisterDllNotification监听DLL装载/卸载。

运行程序, 输出如下。可以证实以上代码监听了 mshtml.dll 的装载和卸载。 而且系统自动装载的其他DLL也被监视到。

Dll Loaded: C:\Windows\system32\mshtml.dll
Dll Loaded: C:\Windows\system32\msls31.dll
Dll Loaded: C:\Windows\system32\VERSION.dll
Dll Unloaded: C:\Windows\system32\mshtml.dll
Dll Unloaded: C:\Windows\system32\VERSION.dll
Dll Unloaded: C:\Windows\system32\msls31.dll

>> 原创文章的版权属于作者,转载请注明出处和作者信息(http://blog.csdn.net/WinGeek/), 谢谢。 <<

分享到:
评论

相关推荐

    Qt:Windows编程—DLL注入与卸载 示例demo

    在Windows编程中,DLL(动态链接库)注入和卸载是一种常见的技术,常用于系统调试、性能监控或恶意软件操作。Qt是一个跨平台的应用程序开发框架,它也提供了与Windows API交互的能力,使得我们能够在Qt应用程序中...

    API监听Dll的加载/卸载消息

    本程序调用LdrRegisterDllNotification实现,详见MSDN:LdrUnregisterDllNotification 函数。本程序可以监控Dll的加载/卸载事件。例如本程序可以利用本程序实现反Dll注入。其他功能可自行拓展。

    易语言DLL自卸载

    学习易语言DLL自卸载不仅可以帮助你更好地理解DLL的生命周期管理,还可以提升你在Windows平台上的编程技能。通过实践和理解这个源码,你可以掌握如何在易语言环境中编写高效、可靠的动态链接库。

    DLL注入与卸载

    DLL注入与卸载是Windows编程中的重要技术,涉及进程间通信和资源管理。了解这些概念和技术对于系统级开发者、逆向工程师和安全研究人员至关重要。正确理解和使用DLL注入与卸载,不仅可以提高程序效率,还能帮助预防...

    自制简单的安装/卸载程序

    在这个案例中,`NtInstall.exe`可能是这样一个自定义的安装程序,它可能由编程语言如C++、Visual Basic或.NET Framework的安装项目(如WiX工具集或Inno Setup)编写而成。用户通过运行这个可执行文件来开始安装过程...

    C#实现非托管资源DLL的装载与卸载

    C#实现非托管资源DLL的装载与卸载封装类。

    DLL自卸载.rar

    在Windows编程中,DLL自卸载是一项技术,允许DLL在不再被任何进程引用时自动从内存中卸载,以节省系统资源。 在"DLL自卸载.rar"这个压缩包中,包含的是易语言(EasyLanguage)的源码,易语言是一种简洁明了、面向...

    利用反射,动态加载DLL,卸载DLL

    首先,我们需要了解DLL(动态链接库)在Windows操作系统中的作用。DLL文件是一组可重用的函数和数据,多个应用程序可以共享它们,以减少内存占用并提高代码复用性。在.NET中,DLL可以包含任何.NET支持的编程语言编写...

    dll注入与卸载.rar

    总结来说,DLL注入和卸载是Windows编程中复杂但重要的技术,涉及到进程、内存管理和IPC等多个方面。在C++和MFC环境下,虽然可以简化一些操作,但仍需要深入理解底层原理,并确保代码的质量和安全性。对于初学者,这...

    C#中加载和卸载DLL

    在软件开发过程中,动态链接库(Dynamic Link Library,简称DLL)作为一种重要的模块化工具,广泛应用于多种编程语言中。在C++中,通过`LoadLibrary`和`FreeLibrary`函数可以轻松地加载和卸载DLL。而在C#中,虽然...

    Dll注入和卸载源码

    DLL(Dynamic Link Library)是Windows操作系统中的一个重要组成部分,它是一种可重用的代码和数据集合,可以在多个程序之间共享资源,提高系统效率。DLL注入是一种技术,允许一个进程将DLL加载到另一个进程中,使得...

    用自删除dll实现应用程序的安装卸载代码.zip_dll_dll卸载_卸载_程序自删除_自删除

    在IT行业中,DLL(Dynamic Link Library)文件是Windows操作系统中的一种共享库,它包含可由多个执行程序同时使用的代码和数据。DLL文件的使用能够节省内存,提高系统效率,因为多个程序可以共享同一份资源。本话题...

    不用dll文件自动卸载注册

    在Windows操作系统中,DLL(Dynamic Link Library)文件是共享库,包含了执行某些特定功能的代码和数据。这些文件被多个程序共享,以节省内存并优化系统资源。然而,随着时间的推移,系统的DLL注册状态可能会变得...

    易语言源码易语言DLL自卸载源码.rar

    易语言是一种专为初学者设计的编程语言,它采用了贴近自然语言的设计,使得编程过程更加简单易懂。本文将深入探讨“易语言源码”以及“易语言DLL自卸载源码”的相关知识点。 首先,易语言源码指的是使用易语言编写...

    实现DLL的注入与卸载

    在Windows操作系统中,DLL(Dynamic Link Library)是共享库文件,它们包含可由多个程序同时使用的代码和数据。DLL注入是一种技术,通过该技术,我们可以将一个DLL文件加载到另一个正在运行的进程上下文中,从而使得...

    C/C++:Windows编程—调用DLL程序的2种方法 示例demo

    在Windows编程中,DLL(Dynamic Link Library)是一种重要的机制,它允许不同进程共享代码和数据。本篇文章将详细讲解如何在C/C++中调用DLL程序的两种主要方法,并通过具体的示例代码来演示。 首先,我们要理解DLL...

    C#中动态加载和卸载DLL

    在C#编程中,动态加载和卸载DLL是常见的需求,特别是在处理插件系统或需要在运行时替换组件的情况下。通常,C++使用LoadLibrary和FreeLibrary函数来完成这一任务,但C#的设计有所不同,它依赖于.NET框架的垃圾回收...

    教你如何卸载被注入到进程中的dll

    可以使用Windows的任务管理器查看正在运行的进程,或者使用更高级的工具,如Process Hacker或Process Explorer,它们能提供更详细的信息,包括每个进程加载的DLL列表。 一旦确定了被注入的DLL,卸载它并非易事。...

    使用bat批处理注册卸载ocx,dll

    在Windows操作系统中,批处理(Batch)是一种自动化执行命令序列的方式,它可以帮助用户批量处理相似的任务,例如注册或卸载OCX(OLE控件)和DLL(动态链接库)文件。OCX是Microsoft开发的一种控件,常用于开发...

    dll注入卸载工具

    完美实现dll的远程注入和卸载功能,可对被注入的进程进行选择

Global site tag (gtag.js) - Google Analytics