2024年4月6日发(作者:)

通过符号表找到系统未导出的函数地址源码

作 者: FlyToTheSpace

时 间: 2007-12-09,19:24

链 接: /?t=56284

说明:第一步设置符号表路径.比如 E:WINDOWSsystem32Symbols

第二步指定系统动态库,比如

第三步指定系统库函数名比如ValidateHwnd.

如果调用成功的话,返回值就为未导出的库函数地址.

例外说明.使用ollydbg设置好了符号表路径,好像是没有效果.

只有把符号文件放到系统目录system32symbols里面才能加载.

class ProcedureAddrRetrieve

{

public:

ProcedureAddrRetrieve(TCHAR *PdbSearchPath,DWORD _Options = NULL);

~ProcedureAddrRetrieve();

BOOL LoadSymbol(TCHAR *DllName);

BOOL EnumSymbol(TCHAR *pSearchMask = NULL);

DWORD64 RetrieveAddr(TCHAR *_szProcedureName);

protected:

private:

BOOL GetFileSize( const TCHAR* pFileName, DWORD& FileSize );

static BOOL CALLBACK EnumSymbolsCallback( SYMBOL_INFO*

ULONG SymbolSize, PVOID UserContext );

DWORD64 ModBase64;

char szProcedureName[MAX_PATH];

DWORD64 Address;

};

pSymInfo,