[OpenSource] RessourceCheck Bypass

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Status
Not open for further replies.

Astropilot

The Lord
V.I.P
V
Jan 6, 2011
9,283
17
1,254
France
dpuaol6e8cd.png

Salut tout le monde :)
Je vous partage un petit logiciel bien sympa qui permet
de contourner la vérification des ressources ce qui vous permet
de les modifier sans prendre de déconnexion du serveur :3
Un merci au développeur FazeDaFapper, le créateur de ce tool :)

main.cpp
Code:
#include "misc.h"
#include <process.h> // _beginthread | _endthread

void Init(void*)
{
    uintptr_t dwBaseAddress = (DWORD) GetModuleHandle(0);

    while (!(*reinterpret_cast<uint32_t*>(dwBaseAddress + 0x16B6140)))
        Sleep(10);

    GameServerC2S * m_GameServerC2S = *reinterpret_cast<GameServerC2S**>(dwBaseAddress + 0x16B6140);

    VT_RMI_MessageSend = (p_VT_RMI_MessageSend)(*(PDWORD**)(&m_GameServerC2S))[3];
    VMTH::HookVMTFunction(reinterpret_cast<PDWORD*>(&m_GameServerC2S), reinterpret_cast<DWORD>(&hk_RMI_MessageSend), 3);

    _endthread();
}

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
{
    if (fdwReason == DLL_PROCESS_ATTACH)
    {
        DisableThreadLibraryCalls(hinstDLL);
        _beginthread(&Init, 0, 0);
        return TRUE;
    }
    return FALSE;
}
misc.h
Code:
#pragma once
#include <Windows.h>
#include "VMTH.h"
#include "GameServerC2S.h"

#define Check_Hash_Key_Value_Req 3122

typedef BOOL(__thiscall* p_VT_RMI_MessageSend)(uintptr_t*, int8_t*, int32_t, int32_t, int32_t, void* , int32_t);
p_VT_RMI_MessageSend VT_RMI_MessageSend;

BOOL __fastcall hk_RMI_MessageSend(uintptr_t * ecx, void * edx, int8_t* a2, int32_t a3, int32_t a4, int32_t a5, void * a6, int32_t RMI_ID)
{
    switch(RMI_ID)
    {
    case Check_Hash_Key_Value_Req:

        DWORD Proud_Packet_ByteArray    = *reinterpret_cast<DWORD*>(a5 + 0x8);
        DWORD Pointer_ByteArray            = *reinterpret_cast<DWORD*>(Proud_Packet_ByteArray + 0x8);

        uint32_t size = 37;
        memcpy((DWORD*)(Proud_Packet_ByteArray + 0xC), &size, sizeof(uint32_t)); // Size

        strcpy((char*)(Pointer_ByteArray + 0x5), "a31585229d6e07e16d035e5b7ddf6bad"); // Static Hash

        break;
    }

    return VT_RMI_MessageSend(ecx, a2, a3, a4, a5, a6, RMI_ID);
}
GameServerC2S.h
Code:
#pragma once

#include <cstdint>

class GameServerC2S
{
public:
    // Thats all we need
    virtual void function0();
    virtual void function1();
    virtual void function2();
    virtual bool RMI_MessageSend(int8_t* a2, int32_t a3, int32_t a4, int32_t a5, void * a6, int32_t a7);

};
VMTH.h
Code:
#include <windows.h>
 
using namespace std;
 
namespace VMTH
{
    //===========================================================================//
    //==== CountVMTFunctions - Count number of functions inside VMT =============//
    //===========================================================================//
 
    UINT CountVMTFunctions ( PDWORD pdwVMT );
     
    //===========================================================================//
    //==== SwapWMT - Copy VMT to a new one and then change VMT class pointer ====//
    //===========================================================================//
 
    bool SwapVMT ( PDWORD *ppdwClassBase );
 
    //===========================================================================//
    //==== ReHookVMT - Update VMT class pointer to an already swapped VMT =======//
    //===========================================================================//
 
    bool ReHookVMT ( PDWORD *ppdwClassBase, PDWORD dwNewVMT );
 
    //===========================================================================//
    //==== HookVMTFuncion - Hook a function inside VMT ==========================//
    //===========================================================================//
 
    bool HookVMTFunction ( PDWORD *ppdwClassBase, DWORD dwNewFunction, UINT uiFunctionIndex );
}
VMTH.cpp
Code:
#include "VMTH.h"
 
namespace VMTH
{
    //===========================================================================//
    //==== CountVMTFunctions - Count number of functions inside VMT =============//
    //===========================================================================//
 
    UINT CountVMTFunctions ( PDWORD pdwVMT )
    {
        UINT dwIndex = 0;
 
        for ( dwIndex = 0; pdwVMT [ dwIndex ]; dwIndex++ )
        {
            if ( IsBadCodePtr ( ( FARPROC ) pdwVMT [ dwIndex ] ) )
            {
                break;
            }
        }
 
        return dwIndex;
    }
     
    //===========================================================================//
    //==== SwapWMT - Copy VMT to a new one and then change VMT class pointer ====//
    //===========================================================================//
 
    bool SwapVMT ( PDWORD *ppdwClassBase )
    {
        PDWORD pdwOldVMT = *ppdwClassBase;
     
        // get vmt size
        UINT dwVMTSize = CountVMTFunctions ( pdwOldVMT );
        if ( ! dwVMTSize ) { return false; }
 
        // allocate memory for new vmt
        PDWORD pdwNewVMT = new DWORD [ dwVMTSize ];
        if ( ! pdwNewVMT ) { return false; }
 
        // copy old vmt into new vmt
        memcpy ( pdwNewVMT, pdwOldVMT, sizeof ( DWORD ) * dwVMTSize );
 
        // update pointer
        *ppdwClassBase = pdwNewVMT;
 
        return true;
    }
 
    //===========================================================================//
    //==== ReHookVMT - Update VMT class pointer to an already swapped VMT =======//
    //===========================================================================//
 
    bool ReHookVMT ( PDWORD *ppdwClassBase, PDWORD dwNewVMT )
    {   
        if
        (
                *ppdwClassBase
            &&  dwNewVMT
        )
        {
            *ppdwClassBase = dwNewVMT;
            return true;
        }
 
        return false;
    }
 
    //===========================================================================//
    //==== HookVMTFuncion - Hook a function inside VMT ==========================//
    //===========================================================================//
 
    bool HookVMTFunction ( PDWORD *ppdwClassBase, DWORD dwNewFunction, UINT uiFunctionIndex )
    {
        PDWORD pdwVMT = *ppdwClassBase;
 
        if
        (
                pdwVMT
            &&  uiFunctionIndex <= CountVMTFunctions ( pdwVMT )
            &&  uiFunctionIndex >= 0
        )
        {
            pdwVMT [ uiFunctionIndex ] = dwNewFunction;
            return true;
        }
 
        return false;
    }
}

dloaup6e8d1.png

Téléchargez l'archive compressée
Extraire le fichier .dll
Injectez le au lancement du jeu avec un injecteur
Enjoy :)

uaopld6e8d8.png

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
auoldp6e8db.png

Source: ep*p
Créateur: FazeDaFapper​
 
Aug 22, 2015
890
6
744
44
faire un tuto vidéo pour injecter une dll ?!

Sinon merci Bae même si du coup, ça sera le retour du tool ig ;(
 

Astropilot

The Lord
V.I.P
V
Jan 6, 2011
9,283
17
1,254
France
Le tuto n'est pourtant pas compliqué :')
Si vous ne savez pas injecter une dll il y a des tutoriels un peu partout :)
 

blizzy

Membre
Mar 3, 2013
10
0
201
au choix du serveur je me tape un time out, et sa me deco, comme si je n'utilisais pas le .dll, puis j'ai un message de xigncode.
J'utilise faith injector que j'ouvre en admin.
 

shinobika

Membre actif
Oct 6, 2012
231
2
934
c'est un bypass?

---------- Message ajouté à 21h55 ---------- Le message précédent était à 21h47 ----------

sa marche?
 

ZesPriss

Nouveau membre
Sep 28, 2016
4
0
1
28
vous povez faire un tuto en video psk je c pas comment faire pour utiliser se cheat !!!
 
Status
Not open for further replies.