利用DbgHelp获取导出函数信息
2013-08-14 16:34
246 查看
#include "stdafx.h" #include <Windows.h> #include <imagehlp.h> #include <locale.h> #pragma comment(lib,"DbgHelp.lib") BOOL CALLBACK CallBackProc( PSYMBOL_INFO pSymInfo, ULONG SymbolSize, PVOID UserContext ) { printf( "函数名: %s\r\n地址: %08X \r\n\r\n", pSymInfo->Name, pSymInfo->Address ); return TRUE; } char* UnicodeToAnsi( const wchar_t* szStr, char* szDest ) { int nLen = WideCharToMultiByte( CP_ACP, 0, szStr, -1, NULL, 0, NULL, NULL ); if ( nLen == 0 ) { return NULL; } char* pResult = new char[nLen]; WideCharToMultiByte( CP_ACP, 0, szStr, -1, pResult, nLen, NULL, NULL ); strcpy( szDest, pResult ); delete pResult; return szDest; } BOOL GetSymbol( LPCTSTR FileName ) { HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId() ); CloseHandle( hProcess ); if ( !SymInitialize( hProcess, NULL, FALSE ) ) { return FALSE; } DWORD dwOpt = SymGetOptions(); SymSetOptions( dwOpt | SYMOPT_DEFERRED_LOADS | SYMOPT_UNDNAME | SYMOPT_CASE_INSENSITIVE ); char sFileName[MAX_PATH] = {0}; UnicodeToAnsi( FileName, sFileName ); DWORD64 dwSymModule = SymLoadModuleEx( hProcess, NULL, sFileName, NULL, 0, 0, NULL, 0 ); if ( 0 == dwSymModule ) { SymCleanup( hProcess ); return -1; } if ( !SymEnumSymbols( hProcess, dwSymModule, 0, ( PSYM_ENUMERATESYMBOLS_CALLBACK )CallBackProc, NULL ) ) { SymCleanup( hProcess ); return -1; } return SymCleanup( hProcess ); } int _tmain( int argc, _TCHAR* argv[] ) { const TCHAR* sDllPath = _T( "C:\\Windows\\System32\\WS2_32.DLL" ); if ( !GetSymbol( sDllPath ) ) { return -1; } getchar(); return 0; }
相关文章推荐
- 利用PDB文件获取未导出全局变量、函数等信息
- delphi数字签名验证及能够获取数字签名文件信息(利用wintrust.dll的导出函数,翻译一下)
- Linux下利用ioctl函数获取网卡信息
- 利用DoDataExchange函数获取Edit控件的文本信息
- Linux下利用ioctl函数获取网卡信息
- 【转载】利用GetNetworkParams函数获取本地网络配置信息
- Excel中身份证相关信息利用函数获取一例
- java使用poi导出excel的内容,同时可以利用反射进行动态获取信息
- Linux下利用ioctl函数获取网卡信息
- Linux下利用ioctl函数获取网卡信息
- PHP 获取图像信息 getimagesize 函数
- 利用虚函数减少导出DLL的头文件依赖
- C++ 获取当前正在执行的函数的相关信息
- PHP 获取图像信息 getimagesize 函数
- 利用手机gps获取经纬信息定位
- 利用“PHP彩蛋”进行敏感信息获取
- 利用HttpWebReuest获取需要身份验证的页面信息
- 利用获取页面html,导出excel
- 利用PStore获取帐号信息