获取函数所在模块的方法

学习VLD2.0代码,看到如下函数:

HMODULE GetCallingModule( UINT_PTR pCaller )
{
    HMODULE hModule = NULL;
    MEMORY_BASIC_INFORMATION mbi;
    if ( VirtualQuery((LPCVOID)pCaller, &mbi, sizeof(MEMORY_BASIC_INFORMATION)) == sizeof(MEMORY_BASIC_INFORMATION) )
    {
        // the allocation base is the beginning of a PE file
        hModule = (HMODULE) mbi.AllocationBase;
    }
    return hModule;
}

入参是函数地址或eip/rip,可以得到其所在的模块句柄。

时间: 2024-10-09 07:15:23

获取函数所在模块的方法的相关文章

javascript 获取函数形参个数

分享下javascript获取函数形参个数的方法. /** * 获取函数的形参个数 * @param {Function} func [要获取的函数] * @return {*} [形参的数组或undefind]* @site www.jbxue.com */function getFuncParameters(func) { if (typeof func == 'function') { var mathes = /[^(]+\(([^)]*)?\)/gm.exec(Function.pro

Python获取脚本所在目录的正确方法

http://www.jb51.net/article/49035.htm 文章主要介绍了Python获取脚本所在目录的正确方法 1.以前的方法 如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数. 如果是要获得当前执行的脚本的所在目录位置,那么需要使用sys模块的sys.path[0]变量或者sys.argv[0]来获得.实际上sys.path是Python会去寻找模块的搜索路径列表,sys.path[0]和sys.argv[0]是一回事因为Python会

获取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 ( 指定为哪个函数 [上面解释],

python装饰器内获取函数有用信息方法

装饰器内获取函数有用信息方法 .__doc__用于得到函数注释信息 .__name_用于得到函数名 在函数引用装饰器的时候,函数名会变为装饰器内部执行该函数的名字,所有在直接执行函数名加.__doc__或__name_的时候得到的是,装饰器内部函数的注释信息和名字.因为函数名被替换了. 所以想得到实际的内容,需要引用一个模块,from functools import wraps,并在装饰器函数内部再加一个@wraps的形式改变,得到实际想得到的信息. 作用是在函数加上装饰器后让能够得到真正原来

Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法

Qt 程序获取程序所在路径.用户目录路径.临时文件夹等特殊路径的方法 经常我们的程序中需要访问一些特殊的路径,比如程序所在的路径.用户目录路径.临时文件夹等.在 Qt 中实现这几个功能所用的方法虽然都不难,但是各不相同,每次用到时还要现去查,很不方便.因此就写了这篇博客,把这几种需求的实现方式总结了一下.算是个备忘录吧. 程序所在路径 获取程序所在路径,QCoreApplication 类里就实现了相关的功能: QString QCoreApplication::applicationDirPa

delphi根据进程PID获取程序所在路径的函数(用OpenProcess取得句柄,用GetModuleFileNameEx取得程序名)

uses psapi; {根据进程PID获取程序所在路径的函数}function GetProcessExePath(PID: Cardinal): string;varpHandle: THandle;buf: array[0..MAX_PATH] of Char;begin{获取进程句柄}pHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, PID);{获取进程路径}GetModuleFileN

js 获取函数的所有参数和遍历JavaScript某个对象所有的属性名称和值的方法

获取所有参数 function test(){ for(var i=0;i<arguments.length;i++)  document.write(arguments[i]); } 遍历某个对象所有的属性名称和值的方法 <script language="javascript"> var obj = new Object(); obj.myname = "我是对象"; obj.pro2 = "23"; obj.pro3 = 

函数参数的获取:嵌入汇编的方法

函数参数的获取:嵌入汇编的方法 通常我们能够想到的函数参数有两种,一种是显示的定长参数,还有就是变长,这两种方式都有各自的捞取参数的方法,但是如果是定长参数却没有参数名该怎么办呢,这节我们就是要讨论一下这个问题,这个尽管在大多数情况下使用不上,但是有时候还是大有用武之地,改文也是为: 深入探讨this指针:从汇编的角度考虑做铺垫的. 该文测试环境:VS2010 (win7)  其他平台实现可能会不一样(汇编吗,毕竟不兼容) 案例: 有函数void  show(int*,char*),且参数没有名

批处理文件中获取当前所在路径的几种方法

原文:批处理文件中获取当前所在路径的几种方法 @echo off setlocal EnableDelayedExpansion echo 当前正在运行的批处理文件所在路径:!cd! pause @echo off echo 当前目录是:%cd% pause @echo off :: set "abc=%cd%" echo 当前正在运行的批处理文件所在路径:%~dp0 pause @echo off echo 当前的盘符及路径:%~dp0 echo 当前的盘符及路径的短文件名格式:%~