Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

[Ajuda] Erro no trainer


shenow
 Compartilhar

Posts Recomendados

To com erro na seguinte linha do trainer:

 

É necessário se cadastrar para acessar o conteúdo.

 

Os zeros são só pra eu nao sair divulgando o address por ae...

O erro é o seguinte:

 

Access violation at address 00000000 in modulo 'exemplo.exe'. Read of address 00000000.
Link para o comentário
Compartilhar em outros sites

Cara eu dei uma arrumada aqui:

 

Declarei duas váriaveis globais:

 

Write : Dword;

PHandle : THandle;

 

Depois em um button coloquei:

 

procedure TForm1.Button1Click(Sender: TObject);

var

Value: Word;

begin

WriteProcessMemory(PHandle, pointer(PWORD($00000000)^ + $00), addr(value), 4, Write);

end;

Link para o comentário
Compartilhar em outros sites

É necessário se cadastrar para acessar o conteúdo.

 

1 - O correto não seria isso?

É necessário se cadastrar para acessar o conteúdo.

 

Se você usa "pointeiro^", você especifica o valor no ponteiro segundo o tipo de ponteiro.

Ex:

 

É necessário se cadastrar para acessar o conteúdo.

 

Portanto, em "PWORD($alguma coisa)^ + $00" você tenta pegar 2 bytes no endereço de memória "alguma coisa" e somar esses 2 bytes com 0 (o que não altera em nada). O Access Violation é por isso, você tenta ler um valor em uma região de memória que provavelmente não existe (o máximo que o valor pode ser é $FFFF nem neste endereço há memória, se você ignorasse essa exceção e continuasse daria Access Violation no WriteProcessMemory da mesma forma).

Link para o comentário
Compartilhar em outros sites

@Surfistinha

O jogo é tibia, to criando um cheat basico, por enquanto só lê os valores de mp e hp, esse seria o cheat para full light... e não,nao tem nenhum address igual a esse no trainer...

 

@vittoroliveira

cara tentei aqui e ainda nao foi,continua com erro de access violation

 

@Ryokusei

e somar esses 2 bytes com 0 (o que não altera em nada)

No código real nao são zeros, no caso é a offset do address para poder ter a localização certa do ponteiro...

Link para o comentário
Compartilhar em outros sites

Shenow, de qualquer forma não vai dar certo.

 

É necessário se cadastrar para acessar o conteúdo.

 

O que acontece aí é o seguinte (vou chutar valores de address e memória):

 

PWORD($00BDAEBA)^ = x

 

x é um valor que contém apenas os 2 primeiros bytes no endereço 00BDAEBA, ou seja, se o valor DWORD em 00BDAEBA for $E1AA281D, então x = E1AA. Isso limita o valor máximo de x à $FFFF. Então você soma + 1 byte (+ $00), vamos dizer que esse 1 byte é y, então o valor máximo de y é $FF. O valor máximo dessa soma será z = $FFFF + $FF = $100FE. Então chegamos a parte

É necessário se cadastrar para acessar o conteúdo.

O valor máximo de z é um endereço onde há memória em nenhuma hipótese, a lógica usando PWORD não permite isso. Verifique se o correto seria usar PDWORD aí.

Tente fazer o processo parte por parte verificando cada valor lido para identificar onde há o erro.

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.