Mostrando postagens com marcador balf. Mostrar todas as postagens
Mostrando postagens com marcador balf. Mostrar todas as postagens
[C++]Ler address do cliente pxg
Bruno Adriano | 10:18 |
balf
,
encontrar address pxg
,
endereço de memória
,
ler endereço de memória
,
pxg bot
Já havia feito isso em Pascal, agora estou programando em c++ e refiz o código, esse código lê alguns endereços de memória do cliente pxg, usei como base para criar as funções deste código este link.
Código:
#include <windows.h>
#include <iostream>
#include <TlHelp32.h>
using namespace std;
void RM(uintptr_t *result, uintptr_t address); //Função para obter o valor do endereço base
void RD(double *result, uintptr_t offset, uintptr_t base); //Função para obter os valores
int main(){
//Variaveis
uintptr_t baseaddress, offset, addr;
double PlayerHP, PokemonHP, PlayerLevel, PlayerExp, PlayerMaxHP;
addr = 0x006C53C0; //Endereço base
RM(&baseaddress, addr); //Obtem o valor do endereço base para a soma
RD(&PlayerHP, 0x348, baseaddress); //Define a HP do player
RD(&PlayerMaxHP, 0x350, baseaddress); //Define a HP máxima do player
RD(&PokemonHP, 0x380, baseaddress); //Define a HP do pokemon
RD(&PlayerLevel, 0x370, baseaddress); //Define o Level do player
RD(&PlayerExp, 0x368, baseaddress); //Define a exp atual do player
//Escreve na tela os valores
cout << "Player HP: " << PlayerHP << "/" << PlayerMaxHP << "\n"; cout << "Player Exp: " << PlayerExp << "\n";
cout << "Player Level: " << PlayerLevel << "\n";
cout << "Pokemon HP: " << PokemonHP << "\n";
system("pause");
return 0;
}
void RM(uintptr_t *result, uintptr_t address){
int y;
HWND h = NULL;
DWORD pid;
cout << "Searching PXG Client..." << "\n";
while (h == NULL)
{
h = FindWindow(NULL, "PXG Client");
Sleep(1000);
}
cout << "PXG Client found!" << "\n";
GetWindowThreadProcessId(h, &pid);
HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
ReadProcessMemory(proc, (LPCVOID)address, &y, 8, NULL);
*result = y;
}
void RD(double *result, uintptr_t offset, uintptr_t base){
uintptr_t address = base + offset;
double y;
HWND h = NULL;
DWORD pid;
while (h == NULL)
{
h = FindWindow(NULL, "PXG Client");
Sleep(100);
}
GetWindowThreadProcessId(h, &pid);
HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
ReadProcessMemory(proc, (LPCVOID)address, &y, 8, NULL);
*result = y;
}
Façam bom proveito do código.
Ler Address PXG
Bruno Adriano | 09:53 |
balf
,
delphi
,
ler address pxg
,
ler endereço de memória
,
reading pxg address
Olá amigos, tirei um tempo da minha sexta feira para ler as address do ot pokemon, consegui, e o melhor é que vou disponibilizar a source do código que usei e abaixo estarei explicando a lógica para a leitura dos endereços de memória.
Vamos lá, como podem ver na imagem está mostrando a address utilizada para leitura e a leitura da mesma, o que acontece que muitas pessoas não conseguiam achar ela ao usar o cheat engine se da ao fato de que os endereços de memória mudam a cada vez que o cliente é aberto (randômicos), porém todo endereço randômico tem uma forma de ser gerado, e o sistema aqui é bem simples, existe um endereço estático (que não se altera) quando o cliente é aberto e fechado, este endereço estático: 006C03B0 (4 bytes), que possui como valor um número em hexadecimal é sempre a base para alguns dos endereços de memória estáticos, entre eles os que estão na imagem.
Outro problema que leigos no cheat engine devem ter se deparado é o fato de não encontrarem nenhuma address, isso se dá porque os endereços de memória (pelo menos os que encontrei) estão no tipo double.
Ok, mas e agora? Você já possui o endereço de memória base para encontrar as address sempre que o cliente for aberto, possui o tipo de variável usando nos endereços de memória, como fazer para encontra-las?
Vamos lá, o método usado para os endereços de memória é bem simples, o valor do endereço de memória 006C03B0 (em hexadecimal) somado com o valor de uma offset vai nos resultar o endereço de memória que queremos saber, o offset é um valor que será somado também em hexadecimal, ao valor do endereço de memória 006C03B0, a soma desses valores nos resultará no endereço de memória que procuramos.
Por exemplo, o offset referente a vida do personagem é 348 (não se esqueça que esse valor está em hexadecimal), vamos imaginar que o valor de 006C03B0 é 0C99DA08, ao somarmos o valor $0C99DA08 + $348 obteremos 0C99DD50, o endereço de memória da vida do personagem, sobre o resultado dessa conta se lermos ele como double na linguagem que estivermos usando obteremos a vida atual do personagem como resposta.
Informação importante:
- O jogo pode alterar o endereço estático que informei após alguma atualização, até hoje não alteraram, esse endereço é do tipo 4 bytes e resulta um valor do tipo hexadecimal.
Para mais informações ou dúvidas contacte-me por e-mail.
Link para download do source: http://www.speedyshare.com/GD9tM/leraddress.rar



