MCPcopy Create free account
hub / github.com/EmmyLua/EmmyLuaDebugger / PE_FOREACH_MODULE_SYMBOL

Function PE_FOREACH_MODULE_SYMBOL

emmy_hook/src/libpe/libpe.cpp:933–981  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

931 char szModuleName[MAX_PATH + 1] = {0};
932
933 PE_FOREACH_MODULE_SYMBOL( pModule, pSymbol )
934 {
935 PE_SYMBOL *pResolved = NULL;
936
937 if( pSymbol->Name[0] == 0 )
938 {
939 if( PE_MASK_HAS_BIT( dwOptions, PE_IMPORT_OPT_RESOLVE_ORDINALS ) )
940 {
941 if( peModule.dwParseState == PE_NONE_PARSED )
942 {
943 if( peLocateModule( pe, pModule, &peModule ) != ERROR_SUCCESS ||
944 peParseExportTable( &peModule, 0xFFFF ) != ERROR_SUCCESS )
945 {
946 goto next_module;
947 }
948 }
949
950 if( peGetExportedSymbolByOrdinal( &peModule, pSymbol->Ordinal, &pResolved ) == ERROR_SUCCESS )
951 {
952 strncpy_s( pSymbol->Name, pResolved->Name, 0xFE );
953 }
954 }
955 else if( PE_MASK_HAS_BIT( dwOptions, PE_IMPORT_OPT_RENAME_ORDINALS ) )
956 {
957 if( szModuleName[0] == 0 )
958 {
959 strncpy_s( szModuleName, pModule->Name, MAX_PATH );
960 char *p = strrchr( szModuleName, '.' );
961 if( p )
962 *p = '\0';
963 }
964
965 sprintf_s( pSymbol->Name, "%s@%u", szModuleName, pSymbol->Ordinal );
966 }
967 }
968
969 if( PE_MASK_HAS_BIT( dwOptions, PE_IMPORT_OPT_DEMANGLE_NAMES ) )
970 {
971 if( pSymbol->Name[0] != 0 )
972 {
973 char szUndecoratedBuffer[0xFF] = {0};
974
975 if( UnDecorateSymbolName( pSymbol->Name, szUndecoratedBuffer, 0xFE, UNDNAME_COMPLETE ) )
976 {
977 strncpy_s( pSymbol->Name, szUndecoratedBuffer, 0xFE );
978 }
979 }
980 }
981 }
982
983next_module:
984

Callers

nothing calls this directly

Calls 3

peLocateModuleFunction · 0.85
peParseExportTableFunction · 0.85

Tested by

no test coverage detected