Bypassing Gameguard: Imported functions
Expanding a bit more on this anti-cheat.
GetGameGuard? Another GG function that's wrapped.
GGPTR? Location of this function
Shad0w just print the functions like this:
Credit:Shad0w
dont thanks me yet just wait for any suggestion about this code.
Code:
void function_list_dump( )
{
dwGameGuardClassBase = GetGameGuard( );
do
{
GGMethodTable = *(PDWORD*)dwGameGuardClassBase;
Sleep(10);
}
while( !GGMethodTable );
while( *(PDWORD)((DWORD)dwGameGuardClassBase + 4) == NULL )
Sleep(10);
do
{
GGMethodTable2 = **(PDWORD**)((DWORD)dwGameGuardClassBase + 4);
}
while( !GGMethodTable2 );
#ifdef LOG_GG
pLog->log("\n-------------\nGG Method Table 1\nsize = %d", dwGetMethodCount(GGMethodTable));
PrintMethodLocations( GGMethodTable );
pLog->log("\n-------------\nGG Method Table 2\nsize = %d", dwGetMethodCount(GGMethodTable2));
PrintMethodLocations( GGMethodTable2 );
ExitProcess(0);
#endif
}
{
dwGameGuardClassBase = GetGameGuard( );
do
{
GGMethodTable = *(PDWORD*)dwGameGuardClassBase;
Sleep(10);
}
while( !GGMethodTable );
while( *(PDWORD)((DWORD)dwGameGuardClassBase + 4) == NULL )
Sleep(10);
do
{
GGMethodTable2 = **(PDWORD**)((DWORD)dwGameGuardClassBase + 4);
}
while( !GGMethodTable2 );
#ifdef LOG_GG
pLog->log("\n-------------\nGG Method Table 1\nsize = %d", dwGetMethodCount(GGMethodTable));
PrintMethodLocations( GGMethodTable );
pLog->log("\n-------------\nGG Method Table 2\nsize = %d", dwGetMethodCount(GGMethodTable2));
PrintMethodLocations( GGMethodTable2 );
ExitProcess(0);
#endif
}
GetGameGuard? Another GG function that's wrapped.
Code:
typedef PVOID (__cdecl* tGetGameGuard)( );
tGetGameGuard GetGameGuard = (tGetGameGuard)GGPTR;
tGetGameGuard GetGameGuard = (tGetGameGuard)GGPTR;
GGPTR? Location of this function
Code:
mov eax, offset off_D25874
retn
retn
Shad0w just print the functions like this:
Code:
void PrintMethodLocations( PDWORD pdwVMT )
{
DWORD dwIndex = 0;
for ( dwIndex = 0; pdwVMT[ dwIndex ]; dwIndex++ )
{
if ( IsBadCodePtr( ( FARPROC ) pdwVMT[ dwIndex ] ) )
{
break;
}
pLog->log("%i [ 0x%x ]", dwIndex, pdwVMT[dwIndex]);
}
}
{
DWORD dwIndex = 0;
for ( dwIndex = 0; pdwVMT[ dwIndex ]; dwIndex++ )
{
if ( IsBadCodePtr( ( FARPROC ) pdwVMT[ dwIndex ] ) )
{
break;
}
pLog->log("%i [ 0x%x ]", dwIndex, pdwVMT[dwIndex]);
}
}
Credit:Shad0w
dont thanks me yet just wait for any suggestion about this code.


why u puting theus. in this web is soo many who dont know waht to do witch them, why u dont creat fils whitch we can just bypas gg
zz