2013-03-18 39 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)

那麼它可能是一個功能。

相關問題