通过地址获取函数名称

有了这个代码,我可以通过它的名字得到一个函数的地址:

DWORD dwAddr = (DWORD)GetProcAddress(GetModuleHandleA("user32.dll"),"MessageBoxA");

但是可以做相反的过程? 从函数地址find函数名?

假设MessageBoxA地址是0x1234abcd 。 我想要的是这样的:

char *func_name = this_is_what_i_want(0x1234abcd); printf("%s",func_name); // this will print "MessageBoxA"

操作系统:Windows

libeio在windows上

确定HWND是否代表顶级窗口的最佳方法是什么?

区分由cl.exe生成的64位PE对象文件(Visual Studio C ++)

最好的方法来检查许可证

获取.NET枚举的Windows本地化

每个线程组的线程互斥

使用VC ++ express编程windows

setuid()返回0,但没有效果

一个共享库静态链接到我的共享库

更快的方式来读取文件比boost :: file_mapping?

使用SYMBOL_INFO结构的SymFromAddr 。 该结构将包含Name成员中的Name 。

SYMBOL_INFO的分配内存非常棘手,请务必阅读文档。

如何分配SYMBOL_INFO:

const size_t array_size = 256 ; const size_t size = sizeof( SYMBOL_INFO ) + ( array_size-1 )*sizeof( TCHAR ) ; SYMBOL_INFO* symbol = calloc( 1,size ) ; if( !symbol ) { //deal with it } symbol->SizeOfStruct = sizeof( *symbol ) ; //both values must symbol->MaxNameLen = array_size ; //be set by user

请注意,我们在这里减1: ( array_size-1 )因为结构已经给我们一个字节,我们希望我们的字符串数组大小为256而不是257。

这个结构现在有足够的空间来存放长度为255的字符串。

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...