From 3d412a4b30a9f7c7f51ea6562e694315948bd3da Mon Sep 17 00:00:00 2001 From: boris Date: Wed, 28 Nov 2018 16:00:02 +1300 Subject: cleaned up in short, the cheat and loader are now separate solutions. unused stuff was moved into the legacy solution in case anyone wants to compile it or whatever. i can change this back if you want to. also, i configured the loader to compile in x64, and have separate build types for linux and win64 --- cheat/gmod/is_paused.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 cheat/gmod/is_paused.cpp (limited to 'cheat/gmod/is_paused.cpp') diff --git a/cheat/gmod/is_paused.cpp b/cheat/gmod/is_paused.cpp new file mode 100644 index 0000000..48916a4 --- /dev/null +++ b/cheat/gmod/is_paused.cpp @@ -0,0 +1,19 @@ +#include "mem.hpp" +#include "hooks.hpp" + +bool __fastcall hooks::is_paused( void* ecx_, void* edx_ ) { + static auto return_addr = pattern::first_code_match( g_csgo.m_chl.dll( ), xors( "FF D0 A1 ? ? ? ? B9 ? ? ? ? D9 1D ? ? ? ? FF 50 34 85 C0 74 22 8B 0D" ), 0x29 ); + static auto is_paused_o = g_csgo.m_engine->get_old_function< decltype( &is_paused ) >( 91 ); + + stack_t stack( get_baseptr( ) ); + uintptr_t return_address = stack.return_address( ); + + //printf( "return address: %08x sig: %08x deref: %08x delta: %08x delta: %08x\n", return_address, return_addr, *( uintptr_t* )return_addr, return_address - return_addr, return_addr - return_address ); + + if( return_address == return_addr ) { + printf( "extrapolate\n" ); + return true; + } + + return is_paused_o( ecx_, 0 ); +} \ No newline at end of file -- cgit v1.2.3