-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код выглядит следующим образом:
Использую в маппере для работы с модулями и импортами, оно напрочь отказывается их получать. Делаю так:
Процесс правильно находит, но ни один модуль не берется и все, даже после полной загрузки игры
В чем может быть проблема?
C++:
HMODULE C_Utils::GetRemoteModuleByName( HANDLE hProcess, const char* szModuleName )
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, GetProcessId(hProcess));
if (!hSnapshot)
return 0;
MODULEENTRY32 ModuleEntry;
ModuleEntry.dwSize = sizeof(MODULEENTRY32);
if (!Module32First(hSnapshot, &ModuleEntry))
{
CloseHandle(hSnapshot);
return 0;
}
HMODULE hModule = 0;
while (Module32Next(hSnapshot, &ModuleEntry))
{
if (strcmp(szModuleName, ModuleEntry.szModule))
continue;
hModule = ModuleEntry.hModule;
break;
}
if (!hModule)
hModule = this->LoadModuleExternal(hProcess, szModuleName);
CloseHandle(hSnapshot);
return hModule;
}
C++:
#define AddModuleByName( Name, szName ) \
DWORD Name = ( DWORD )( g_Utils->GetRemoteModuleByName( g_Utils->GetCSGOProcess( ), szName ) );\
while ( !Name ) \
{\
Name = ( DWORD )( g_Utils->GetRemoteModuleByName( g_Utils->GetCSGOProcess( ), szName ) );\
LI_FN( Sleep ) ( 1000 );\
}\
C++:
AddModuleByName( dwClientDll, _S( "client.dll" ) );
AddModuleByName( dwEngineDll, _S( "engine.dll" ) );
AddModuleByName( dwD3D9, _S( "d3d9.dll" ) );
AddModuleByName( dwMaterialSystem, _S( "materialsystem.dll" ) );
AddModuleByName( dwFileSystem, _S( "filesystem_stdio.dll" ) );
AddModuleByName( dwVSTDLib, _S( "vstdlib.dll" ) );
AddModuleByName( dwDataCache, _S( "datacache.dll" ) );
AddModuleByName( dwVPhyiscs, _S( "vphysics.dll" ) );
AddModuleByName( dwInputSystem, _S( "inputsystem.dll" ) );
AddModuleByName( dwLocalize, _S( "localize.dll" ) );
AddModuleByName( dwShaderApiDX9, _S( "shaderapidx9.dll" ) );
AddModuleByName( dwVGui, _S( "vguimatsurface.dll" ) );
AddModuleByName( dwVGui2, _S( "vgui2.dll" ) );