Files
marohook/Andromeda-CS2-Base/Andromeda-CS2-Base/DllLauncher.cpp
T
2026-03-25 08:31:15 +03:00

128 lines
2.5 KiB
C++

#include "DllLauncher.hpp"
#include <string>
#include <winternl.h>
#include <Common/CrashLog.hpp>
#include <Common/Helpers/StringHelper.hpp>
#include <CS2/CSDK_Loader.hpp>
#include <CS2/CHook_Loader.hpp>
#include <CS2/SDK/CFunctionList.hpp>
#include <AndromedaClient/CAndromedaClient.hpp>
static CDllLauncher g_CDllLauncher{};
auto CDllLauncher::OnDllMain( LPVOID lpReserved , HINSTANCE hInstace ) -> void
{
if ( lpReserved )
{
ManualMapParam_t* pParam = reinterpret_cast<ManualMapParam_t*>( lpReserved );
if ( pParam )
{
m_DllDir = pParam->DllPath;
m_DllDir += "\\";
m_DllDir = m_DllDir.substr( 0 , m_DllDir.find_last_of( '\\' ) + 1 );
}
}
else
{
char szDllDir[MAX_PATH];
GetModuleFileNameA( hInstace , szDllDir , MAX_PATH );
m_DllDir = szDllDir;
m_DllDir = m_DllDir.substr( 0 , m_DllDir.find_last_of( '\\' ) );
m_DllDir += '\\';
}
m_hDllImage = hInstace;
m_SizeofImage = GetSizeOfImageInternal();
m_BaseOfCode = GetBaseOfCodeInternal();
char szGameFile[MAX_PATH] = { 0 };
GetModuleFileNameA( 0 , szGameFile , MAX_PATH );
m_CS2Dir = szGameFile;
m_CS2Dir = m_CS2Dir.substr( 0 , m_CS2Dir.find_last_of( "\\/" ) );
m_CS2Dir += '\\';
memset( szGameFile , 0 , MAX_PATH );
CreateThread( 0 , 0 , StartCheatTheard , lpReserved , 0 , 0 );
}
auto CDllLauncher::OnDestroy() -> void
{
if ( !m_bDestroyed )
{
GetDevLog()->Destroy();
GetHook_Loader()->DestroyHooks();
GetCrashLog()->DestroyVectorExceptionHandler();
m_bDestroyed = true;
}
}
auto WINAPI CDllLauncher::StartCheatTheard( LPVOID lpThreadParameter ) -> DWORD
{
GetDevLog()->Init();
GetCrashLog()->InitVectorExceptionHandler();
#if ENABLE_CONSOLE_DEBUG == 1
DEV_LOG( "[+] StartCheatThread: %s\n" , ansi_to_utf8( GetDllDir() ).c_str() );
#endif
if ( !GetHook_Loader()->InitalizeMH() )
{
DEV_LOG( "[error] Hook_Loader::InitalizeMH\n" );
return 0;
}
if ( !GetHook_Loader()->InstallFirstHook() )
{
DEV_LOG( "[error] Hook_Loader::InstallFirstHook\n" );
return 0;
}
if ( !GetFunctionList()->OnInit() )
{
DEV_LOG( "[error] FunctionList::OnInit\n" );
return 0;
}
if ( !GetSDK_Loader()->LoadSDK() )
{
DEV_LOG( "[error] CSDK_Loader::LoadSDK\n" );
return 0;
}
if ( !GetHook_Loader()->InstallSecondHook() )
{
DEV_LOG( "[error] Hook_Loader::InstallSecondHook\n" );
return 0;
}
GetAndromedaClient()->OnInit();
return 0;
}
auto GetDllDir()->std::string&
{
return GetDllLauncher()->m_DllDir;
}
auto GetCS2Dir() -> std::string
{
return GetDllLauncher()->m_CS2Dir;
}
auto GetDllLauncher() -> CDllLauncher*
{
return &g_CDllLauncher;
}