zoukankan      html  css  js  c++  java
  • dll

    dll可以有一个入口点函数,系统会在不同的时候调用这个入口函数。
    这个调用是通知性质的,通常被dll用来执行一些与进程或线程有关的初始化和清理工作
    如果将dll的入口点函数命名为DllMain之外的其他名称,那么虽然代码仍可以编译和链接成功,但入口函数将永远不会被
    调用
    DllMain函数执行的时候可能同一地址空间中的其他dll还没有执行他们的DllMain
    创建新进程时:系统分配进程地址空间
    映射exe,dll的文件映像
    创建主线程
    主线程调用每个dll的DllMain函数
    主线程执行可执行模块的C/C++运行时的启动代码
    主线程执行可执行程序的入口点函数
    LoadLibrary: 定位dll
    映射dll到进程的地址空间
    该线程调用dll的DllMain函数传递DLL_PROCESS_ATTACH
    DllMain返回true,线程继续执行
    DllMain范回false,系统自动从进程的地址空间撤销对dll文件的映射
    BOOL WINAPI DllMain(INSTANCE hInstDll,DWROD fdwReason,PVOID fImpLoad)
    hInstDll表示一个虚拟内存地址,dll的文件映像就被映射到进程地址空间中的这个位置
    fdwReason表示系统调用入口点函数的原因
    fImpLoad表示dll是不是隐式载入的

  • 相关阅读:
    Linux下安装maven
    非连续性及反脆弱
    高手是怎么练成的
    思维型大脑
    编写文档五轮模式
    Nginx初识
    ida快捷键
    ida+gdb调试任意平台
    gcc常用命令使用
    ida调试ios应用
  • 原文地址:https://www.cnblogs.com/xiaoxiaocaicai/p/3594847.html
Copyright © 2011-2022 走看看