GetModuleHandle(NULL)获取当前DLL模块基址?

做一项目想在DLL内部代码实现获取本DLL的模块基址,而且不知道本DLL名称

最简单的方法是想到GetModuleHandle(NULL),是否可以呢?

参看http://blog.csdn.net/guzhou_diaoke/article/details/8826558到的答案是否

自己尝试了一下:

DLL代码(testDll):

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        {
            HMODULE hModule = GetModuleHandle(NULL);
            WCHAR wszhModule[MAX_PATH] = {0};
            swprintf_s(wszhModule, L"DLL里调用GetModuleHandle(NULL)获取到的地址为:0x%x",                 (DWORD)hModule);
            MessageBoxW(0, wszhModule, L"提示", 0);
        }
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

EXE代码(test):

int _tmain(int argc, _TCHAR* argv[])
{
    LoadLibrary(L"testDll");

    return 0;
}

得到的结果:

结论:

在DLL内部调用GetModuleHandle(NULL),获取的是主模块(EXE)基址

时间: 2024-11-05 13:45:40

GetModuleHandle(NULL)获取当前DLL模块基址?的相关文章

第2讲:搜索PEB结构获取kernel32.dll的基址

学习笔记之卸载远程目标进程中的DLL模块(转)

学习笔记之卸载远程目标进程中的DLL模块 (2007-07-23 23:51:02) 转载▼ 学习笔记之卸载远程目标进程中的DLL模块2007/7/231.首先得把DLL模块中的线程结束使用CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0);创建系统线程的快照然后用Thread32First()和Thread32Next()遍历系统中所有线程.将遍历到的线程保存到THREADENTRY32结构,然后判断结构中的th32OwnerProcessID成员是否与

获取当前进程目录 GetCurrentDirectory() 及 获取当前运行模块路径名GetModuleFileName()

GetCurrentDirectory 获得的是当前进程的活动目录(资源管理器决定的),可以用SetCurrentDirectory 修改的. 转自 http://m.blog.csdn.net/blog/scuthanman/10094793 GetModuleFileName函数可以获取当前执行模块所在位置的绝对路径名,无论是哪里的进程对模块进行调用. 而GetCurrentDirectory获取的是当前进程所在的当前目录,跟执行模块所在的位置并没有关系,返回的是主进程所在目录. GetCu

获取VB类模块成员函数指针(转)

最近在做一些VB6.VBA的项目,被如何获取类模块中的函数指针这个问题所困扰,收集整理后,有2分资料值得收藏,特将关键部分留存,以备后续查找. 参照连接1:http://www.cnblogs.com/pctgl/articles/1352916.html 参照连接2:http://blog.csdn.net/lyserver/article/details/4224676 以下是链接1中的部分内容: 1. 函数地址 = GetClassProcAddress ( 指定为哪个函数 [上面解释],

NetSarang软件中nssock2.dll模块被植入恶意代码技术分析与防护方案

原文地址:http://blog.nsfocus.net/nssock2-dll-module-malicious-code-analysis-report/ NetSarang是一家提供安全连接解决方案的公司,该公司的产品主要包括Xmanager, Xmanager 3D, Xshell, Xftp 和Xlpd.最近,官方在2017年7月18日发布的软件被发现有恶意后门代码,该恶意的后门代码存在于有合法签名的nssock2.dll模块中.从后门代码的分析来看,该代码是由于攻击者入侵的开发者的主

利用OllyDebug查看程序调用的dll模块

最近在做一个Qt项目,在产品发布的时候一直为找不到程序到底缺少了哪些dll组件而困扰.具体问题是,在我的项目中使用到了QMediaPlayer播放一段音频文件,我使用的开发环境的Win7 32位,而在发布安装包的时候,还是照常去掉Qt相关的环境变量,然后运行可执行程序,提示缺少什么dll,我就向可执行程序的目录下拷贝对应的dll,直到程序可以正常启动运行.就是按照上面的方法,我制作了软件的安装包,但是,当将这个软件安装到XP系统上测试时,发现程序没有声音了,这个问题让我很纠结. 后来,我在网上找

C#获取C# DLL中的指定接口的所有实现实例 - qq_19759475的博客 - CSDN博客

原文:C#获取C# DLL中的指定接口的所有实现实例 - qq_19759475的博客 - CSDN博客 public static List<T> CreateTarInterface<T>(string dllpath) { List<T> rs = new List<T>(); var dlllll = Assembly.Load(dllpath); foreach (var item in dlllll.GetTypes()) { object ob

n第一个参数hInstance就是DLL模块局并,而GetModuleFileName()只有传入DLL模块句柄才能获取DLL路径(壹)

http://bbs.a9vg.com/thread-4519306-1-1.html http://bbs.a9vg.com/thread-4519311-1-1.html http://bbs.a9vg.com/thread-4519312-1-1.html http://bbs.3dmgame.com/thread-4780495-1-1.html http://bbs.3dmgame.com/thread-4780494-1-1.html http://bbs.3dmgame.com/t

第一个参数hInstance就是DLL模块局并,而GetModuleFileName()只有传入DLL模块句柄才能获取DLL路径(柒)

http://www.moxiu.com/17376892/apps/theme http://www.moxiu.com/17376917/apps/theme http://www.moxiu.com/17376919/apps/theme http://www.moxiu.com/17376922/apps/theme http://www.moxiu.com/17376925/apps/theme http://www.moxiu.com/17376930/apps/theme http