2013-03-18 43 views
0

所以我加载函数与此语法:如何检查从dll加载的地址是函数还是变量?

typedef void* (*unknownf)(
#ifdef __cplusplus 
... 
#endif 
); 
unknown funci=(unknownf*)GetProcAddress(dll, "SomeFunction");` 

和数据与此

typedef void* (*unknownd); 
conversiontype *some=(unknownd*)GetProcAddress(dll,"SomeData"); 

如何检查地址中包含的数据或者功能?还有什么可以在那里?

编辑:请问有没有一些编程方法如何检查它?

回答

0

我发现了一种方法,我检查DLL的IMAGE_DOS_HEADER部分.data .edata .rdata和.reloc,然后我尝试确定哪个部分是名称。

0

看看指针指向的前几个字节。如果你看到这样的事情:

55 89 e5 

(在x86)或:

55 48 89 e5 

(上的x86-64)

那么它可能是一个功能。