`
deepfuture
  • 浏览: 4397806 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80032
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:69998
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103284
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285619
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15001
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67492
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32099
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45965
社区版块
存档分类
最新评论

dll通告消息

阅读更多

1、当一个进程载入或卸载一个DLL时,DLLMAIN会被调用(DLLMAIN获得DLL_PROCESS_ATTACH消息),线程也是一样(获得DLL_THREAD_ATTACH消息)

BOOL WINAPI DLLMAIN(
HANDLE hinstDll,//DLL的MOUDULE HANDLE
DWORDfdwReason,//被调用的原因,可能是DLL_PROCESS_ATTACH,DLL_THREAD_ATTACH
//DLL_THREAD_DETACH,DLL_PROCESS_DETACH
LPVOID lpRerved//可以为DLL_PROCESS_ATTACH
);
2、抑制通告消息
DLLMAIN被自动调用(以单线程为例,进程一次,线程一次),DLLMAIN()在新线程的CONTEXT中被调用,如何减轻这些负担呢,使用抑制通告消息。
BOOL DISABLETHREADLIBRARYCALLS(
HMODULE hLibModule//DLL的MODULE HANDLE
)
3、TreminateThread阻止了DLL通告消息可以会留下已附着的DLLS
4、动态加载
一个DLL被LOADLIBRARY或LOADLIBRARYEX动态载入时,DLLMAIN不会收到在执行中的线程的DLL_THREAD_ATTACH通告消息,但只有调用LOADLIBRARY的那一个可以收到。而且DLLMAIN可以收到所有那些线程的DLL_THREAD_DETACH通告消息
5、总结
(1)进程调用LOADLIBRARY时,有一个以下的线程正在运行,那么DLL_THREAD_ATTACHI不会针对每一个线程送出,但只有调用LOADLIBRARY的那一个可以送出
(2)DLLMAIN不会接受第一个线程的DLL_THREAD_ATTACH,而以DLL_PROCESS_ATTACH取代之
(3)DLLMAIN()不接受任何因TreminateThread而结束之线程的DLL_THREAD_DETACH通告消息,如果程序调用exit(1)或ExitProcess结束自己,这种情况会发生
6、MFC的DLL通告消息
一个使用MFC的DLL,拥有它自己的CWINTHRAED对象,可视为CWINAPP对象的一部分,当DLL接收到DLL_PROCESS_ATTACH时,MFC就会调用INITINSTANCE(),会接受到DLL_PROCESS_DETACH时,MFC会调用CWinThread::ExitInstance(),这是两虚函数,可以提供自己的函数,没有任何虚函数在DLL_THREAD_DETACH,DLL_PROCESS_DETACH发生被调用
分享到:
评论

相关推荐

    vc 网络验证授权代码示例程序

    客户端需要的DLL,你可以拷贝服务器目录下的DLL过去即可。或者参考我们以前的本地验证注册程序,但是不要使用他的DLL,因为以前发布的本地验证注册网络验证有问题,只有这个版本才修正了 客户端DEMO有示例代码,你...

    SPiiPlus ACSPL+ Command & Variable Reference Guide.pdf

    是这份文档的版权所有者,该公司在1999年到2013年期间定期对文档中的信息进行更新和修改,并以发布版的说明来进行通告。在文档的使用上,未经ACSMotionControl Ltd.的书面许可,任何人不得以任何形式复制文档内容。...

    各容易被利用端口封闭工具

    2. **winipsec.dll**:这可能是一个动态链接库文件,为Windows IP 安全策略提供支持。它可能用于配置IPSec(Internet Protocol Security),这是一种用于加密网络通信并确保数据安全的协议。 3. **ipseccmd.exe**:...

    个性化ODOllyDbg

    发现Bug,请及时通告,e_mail:gjianbo@163.com QQ:30481007 以下是OllyDbg Fix Module的介绍 OllyDbg Fix Module v0.9.0.0 使用 LordPE 等工具在 Ollydbg 导入表中添加以下 dll 和函数即可使用增强功能,完成...

    OllyDbg 1.1 增强版

    发现Bug,请及时通告,e_mail:gjianbo@163.com QQ:30481007 以下是OllyDbg Fix Module的介绍 OllyDbg Fix Module v0.9.0.0 使用 LordPE 等工具在 Ollydbg 导入表中添加以下 dll 和函数即可使用增强功能,完成...

    七大 Windows系统故障解析.docx

    "无效页错误"通告解析 **问题描述**:用户在操作电脑时,可能会遇到“Invalid Page Fault”(无效页错误)的提示。 **原因分析**: - 物理内存不足导致虚拟内存运行不稳定。 - 剩余硬盘空间不足。 - 虚拟内存损坏...

    autorun.inf的代码编写.txt

    制作AUTO-CD的关键就是如何编写自动运行信息文件Autorun.inf,它是AUTO-CD所必须的。...但是,如果关闭了光驱的自动插入通告功能,则只能使用Shell32.DLL(存于Windows的System目录下)中的默认光盘图标。

    FusionCompute 6.5.1_Installer.zip

    1. **msvcr110.dll** 和 **msvcp110.dll**:这是Microsoft Visual C++运行时库的动态链接库文件,用于支持某些应用程序的运行,特别是由Visual C++编译器编译的软件,如FusionCompute的安装程序可能依赖这些库。...

    Windows操作系统下创建进程的过程.docx

    在新进程的上下文中,操作系统会完成地址空间的初始化,包括加载必要的DLL和库文件,确保进程可以正常调用系统和自定义功能。 6. **开始执行**: 最后,进程和线程的环境准备就绪后,操作系统开始执行初始线程,...

    Expect 5.21r1b1 for Windows

    "ANNOUNCE.NT"可能是发布通告,详细说明了这个版本的发布背景、主要特性及对用户的潜在影响。通过这个文件,用户可以快速了解到新版本的亮点和改进,以及可能需要关注的问题。 "LICENSE.TXT"文件包含了软件的许可...

    洛基瓦尔海姆

    适用于瓦尔海姆的作品0.145.6(2021-02-16)使用抓取并提取到游戏目录: : 将所需的mod DLL复制到BepInEx\plugins 运行游戏! 至少运行一次游戏后,导航到BepInEx\config以编辑mod配置再次运行游戏!当前模组请注意...

    JEDI Code Format Integration Expert 1.0 for Delphi 2005

    在Delphi 2005中编译后 (你也许需要修改对Borland.Studio.ToolsAPI.dll的引用), 运行批处理程序 "install for D2005.bat"。下次IDE启动时菜单栏会多出一项JcfExpert。2.运行批处理程序 "uninstall ...

    API之网络函数---整理网络函数及功能

    GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 GetMessageTime 取得消息队列中上一条消息处理完毕时的时间 PostMessage 将一条消息投递到指定窗口的消息队列 PostThreadMessage 将一条...

    电脑高手必备 Windows系统35招实用技巧

    rundll32.exe user32.dll, LockWorkStation,单击“下一步”。输入快捷 方式名称。你可将其命名为“锁定工作站”或选用你所喜欢的任何名称,单 击“完成”。你还可对快捷方式图标进行修改(我最喜欢的一个是由 ...

    Windows内核安全与驱动开发光盘源码

    13.3.2 在用户态通过DLL使用通信端口的范例 311 13.4 Minifilter的安装与加载 314 13.4.1 安装Minifilter的INF文件 314 13.4.2 启动安装完成的Minifilter 316 第14章 网络传输层过滤 317 14.1 TDI概要 317 ...

    Windows内核安全驱动开发(随书光盘)

    13.3.2 在用户态通过DLL使用通信端口的范例 311 13.4 Minifilter的安装与加载 314 13.4.1 安装Minifilter的INF文件 314 13.4.2 启动安装完成的Minifilter 316 第14章 网络传输层过滤 317 14.1 TDI概要 317 ...

Global site tag (gtag.js) - Google Analytics