parent
aaea0fff1f
commit
888b71881b
@ -0,0 +1,36 @@
|
||||
#include "stdafx.hpp"
|
||||
|
||||
__declspec( dllexport ) std::uint8_t entry_buffer[5]; // To be filled by mapper (Original bytes of DllEntryPoint to be restored on execution)
|
||||
__declspec( dllexport ) std::uint32_t entry_rva; // RVA to the DllEntryPoint filled by mapper.
|
||||
|
||||
bool dll_main( const std::uint64_t image_base, const std::uint32_t reason, const void* reserved )
|
||||
{
|
||||
const auto dbg_print = [ ]( const char* msg, ... ) -> void
|
||||
{
|
||||
va_list args;
|
||||
va_start( args, msg );
|
||||
|
||||
char buffer[512];
|
||||
mini_vsprintf_s( buffer, sizeof(buffer), msg, args );
|
||||
LI_FN( OutputDebugStringA ).get_safe()( buffer );
|
||||
return va_end( args );
|
||||
};
|
||||
|
||||
dbg_print( "[EACMapper] Image Base: 0x%x", image_base );
|
||||
dbg_print( "[EACMapper] DllEntryPoint: 0x%x", entry_rva );
|
||||
|
||||
const auto eac_dll_fn =
|
||||
reinterpret_cast<decltype( &dll_main )>( image_base + entry_rva );
|
||||
|
||||
memcpy( eac_dll_fn, &entry_buffer[ 0 ], sizeof( entry_buffer ) );
|
||||
|
||||
// EasyAntiCheat.dll returns 0 to prevent reverse engineers from using LoadLibraryA to unpack the module....
|
||||
const auto result = eac_dll_fn( image_base, reason, reserved );
|
||||
|
||||
{
|
||||
dbg_print( "[EACMapper] DllMain returned: 0x%x", result );
|
||||
dbg_print( "[EACMapper] Hello World from RustClient.exe!" );
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
Loading…
Reference in new issue