Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[TUT] Podrabianie GUID w Punkbusterze


Rekomendowane odpowiedzi

Opublikowano

W tym poradniku pokażę wam jak podrobić GUID w PBSS.

 

Narzędzia:

-OllyDbg

-Microsoft Visual Studio 2010(może być inny)

 

1.Włączamy grę(w moim przypadku Battlefeild Play4Free)

2.następnie uruchamiamy Ollydbg.

3.W OllyDbg wchodzimy w File, wybieramy Attach... i szukamy naszej gry, klikamy Attach i następnie F9.

post-961817-0-69234900-1372926379_thumb.jpg

4.Wchodzimy w View i kklikamy "Exectuable modules", pojawi nam się takie okno:

post-961817-0-23477200-1372927216.jpg

żeby było wygodniej sortujemy według "Name", szukamy pbcl(jeśli nie znajdziemy musimy wejść na oficjalny serwer) i klikamy dwa razy LPM.

5.Teraz w oknie "CPU - main thread - module pbcl" klikamy PPM i wybieramy opcje "All referenced string" w "Search for"

post-961817-0-71609700-1372927194_thumb.jpg

7.Szukamy naszego GUID(ciąg 32 znaków) i klikamy dwa razy LPM.

post-961817-0-43039800-1372927391_thumb.jpg

przeniesie nas z powrotem do okna "CPU - main thread - module pbcl" klikamy 2x LPM na trzecią kolumnę i kopiujemy wszystko bez "MOV ESI," czyli w moim przypadku "51A49E3D"

post-961817-0-35642300-1372927607_thumb.jpg

8.Obliczamy offset.

Do tego potrzebny jest nam adres w którym zaczyna sie moduł "pbcl.dll", pierwsza kolumna w "Exectuable modules".

 

GUID = 51A49E3D

BASE = 51990000

 

Offset = GUID - BASE

Offset = 51A49E3D - 51990000 = B9E3D

 

Teraz piszemy prostą aplikacje w C++

#include <Windows.h>
#include <tlhelp32.h>

#define OFFSET 0xB9E3D

DWORD GetPID(char* proc)
{
	PROCESSENTRY32   pe32;
	HANDLE         hSnapshot = NULL;

	pe32.dwSize = sizeof( PROCESSENTRY32 );
	hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );

	if( Process32First( hSnapshot, &pe32 ) )
	{
		do{
			if( strcmp( pe32.szExeFile, proc ) == 0 )
				break;
		}while( Process32Next( hSnapshot, &pe32 ) );
	}

	if( hSnapshot != INVALID_HANDLE_VALUE )
		CloseHandle( hSnapshot );

	return pe32.th32ProcessID;
}

DWORD GetModuleHandle(char* name, DWORD pid){
	HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);
	if( snapshot == INVALID_HANDLE_VALUE )
    {
        return 0;
    }
	MODULEENTRY32 mod;
    mod.dwSize = sizeof(MODULEENTRY32);
	if( Module32First(snapshot, &mod) )
    {
        if( strcmp(mod.szModule, name) == 0 )
            return (unsigned long)mod.modBaseAddr;

        while( Module32Next(snapshot, &mod) )
        {
            if( strcmp(mod.szModule, name) == 0 )
                return (unsigned long)mod.modBaseAddr;
        }
        return 0;
    }
    else
    {
        return 0;
    }
}

void main()
{
	DWORD PID = GetPID("BFP4f.exe");
	if(!(DWORD)GetModuleHandle("pbcl.dll", PID))
		return;
	DWORD pGUID = (DWORD)GetModuleHandle("pbcl.dll", PID) + OFFSET;
	HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS,false,PID);
	char newGUID[32] = "MPCForum.pl wita :)";
	WriteProcessMemory(proc, (LPVOID)pGUID, &newGUID, sizeof(newGUID), NULL); 
	return;
}

Zmieniamy OFFSET na nasz, kompilujemy i gotowe.

post-961817-0-74459600-1372929023.png

 

Powodzenia :)

 

ZAKAZ JEST KOPIOWANIA PORADNIKA BEZ ZGODY AUTORA

Nie pomagam na PW, od tego macie forum!!!

 

#PHP-things

 

 

08FMpDu.png

 

  • 4 tygodnie później...
  • 3 tygodnie później...
Opublikowano

Moze mi ktoś pomoc? Nie rozumiem obliczania offsetu.Wogóle.Jak ktoś by obliczył go za mnie to był bym bardzo wdzięczny 0C8FA911 - 0C840000



W tym poradniku pokarzę wam jak podrobić GUID w PBSS.

 

Narzędzia:

-OllyDbg

-Microsoft Visual Studio 2010(może być inny)

 

1.Włączamy grę(w moim przypadku Battlefeild Play4Free)

2.następnie uruchamiamy Ollydbg.

3.W OllyDbg wchodzimy w File, wybieramy Attach... i szukamy naszej gry, klikamy Attach i następnie F9.

attachicon.gifebhtuq.jpg

4.Wchodzimy w View i kklikamy "Exectuable modules", pojawi nam się takie okno:

attachicon.gifydmgqb.jpg

żeby było wygodniej sortujemy według "Name", szukamy pbcl(jeśli nie znajdziemy musimy wejść na oficjalny serwer) i klikamy dwa razy LPM.

5.Teraz w oknie "CPU - main thread - module pbcl" klikamy PPM i wybieramy opcje "All referenced string" w "Search for"

attachicon.gift7o6ih.jpg

7.Szukamy naszego GUID(ciąg 32 znaków) i klikamy dwa razy LPM.

attachicon.gif8ulrme.jpg

przeniesie nas z powrotem do okna "CPU - main thread - module pbcl" klikamy 2x LPM na trzecią kolumnę i kopiujemy wszystko bez "MOV ESI," czyli w moim przypadku "51A49E3D"

attachicon.gifgns14j.jpg

8.Obliczamy offset.

Do tego potrzebny jest nam adres w którym zaczyna sie moduł "pbcl.dll", pierwsza kolumna w "Exectuable modules".

 

GUID = 51A49E3D

BASE = 51990000

 

Offset = GUID - BASE

Offset = 51A49E3D - 51990000 = B9E3D

 

Teraz piszemy prostą aplikacje w C++

#include <Windows.h>
#include <tlhelp32.h>

#define OFFSET 0xB9E3D

DWORD GetPID(char* proc)
{
	PROCESSENTRY32   pe32;
	HANDLE         hSnapshot = NULL;

	pe32.dwSize = sizeof( PROCESSENTRY32 );
	hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );

	if( Process32First( hSnapshot, &pe32 ) )
	{
		do{
			if( strcmp( pe32.szExeFile, proc ) == 0 )
				break;
		}while( Process32Next( hSnapshot, &pe32 ) );
	}

	if( hSnapshot != INVALID_HANDLE_VALUE )
		CloseHandle( hSnapshot );

	return pe32.th32ProcessID;
}

DWORD GetModuleHandle(char* name, DWORD pid){
	HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);
	if( snapshot == INVALID_HANDLE_VALUE )
    {
        return 0;
    }
	MODULEENTRY32 mod;
    mod.dwSize = sizeof(MODULEENTRY32);
	if( Module32First(snapshot, &mod) )
    {
        if( strcmp(mod.szModule, name) == 0 )
            return (unsigned long)mod.modBaseAddr;

        while( Module32Next(snapshot, &mod) )
        {
            if( strcmp(mod.szModule, name) == 0 )
                return (unsigned long)mod.modBaseAddr;
        }
        return 0;
    }
    else
    {
        return 0;
    }
}

void main()
{
	DWORD PID = GetPID("BFP4f.exe");
	if(!(DWORD)GetModuleHandle("pbcl.dll", PID))
		return;
	DWORD pGUID = (DWORD)GetModuleHandle("pbcl.dll", PID) + OFFSET;
	HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS,false,PID);
	char newGUID[32] = "MPCForum.pl wita :)";
	WriteProcessMemory(proc, (LPVOID)pGUID, &newGUID, sizeof(newGUID), NULL); 
	return;
}

Zmieniamy OFFSET na nasz, kompilujemy i gotowe.

attachicon.gif0704_002.png

 

Powodzenia :)

 

ZAKAZ JEST KOPIOWANIA PORADNIKA BEZ ZGODY AUTORA

 

 

 

A jak obliczyć ten offset ?

Opublikowano

Moze mi ktoś pomoc? Nie rozumiem obliczania offsetu.Wogóle.Jak ktoś by obliczył go za mnie to był bym bardzo wdzięczny 0C8FA911 - 0C840000

 

 

 

 

A jak obliczyć ten offset ?

 

Zamieniasz sobie obydwa z hex na dec. obliczasz, a później wynik na hex.

9obpmnjr.png

  • 10 miesięcy temu...
  • 3 tygodnie później...
Opublikowano

Po co zamieniać z hex na dec? tak też można obliczyć...

Człowiek który o to prosił, raczej nie będzie umiał wykonywać obliczeń w hexie :D

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...