Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Olá pessoal, apartir do update 9.1, a Cipsoft botou um novo sistema, que agora os programadores precisam pegar a base do endereço para o seu bot funcionar perfeitamente em computadores com sistemas operacionais Windows 7 e Windows Vista.

Bom, foi um sistema falho...

Declare nas uses:

PsAPI
Declare a função necessaria para pegar a base do endereço:
function GetTibiaBaseAddress(ProcessID: Cardinal): Pointer;

var

  Modules: Array of HMODULE;

  cbNeeded, i: Cardinal;

  ModuleInfo: TModuleInfo;

  ModuleName: Array [0 .. MAX_PATH] of Char;

  PHandle: THandle;

begin

  Result := nil;

  SetLength(Modules, 1024);

  PHandle := OpenProcess(PROCESS_QUERY_INFORMATION + PROCESS_VM_READ, FALSE,

    ProcessID);

  if (PHandle <> 0) then

    begin

	  EnumProcessModules(PHandle, @Modules[0], 1024 * SizeOf(HMODULE),

	    cbNeeded);

	  SetLength(Modules, cbNeeded div SizeOf(HMODULE));

	  for i := 0 to Length(Modules) - 1 do

	    begin

		  GetModuleBaseName(PHandle, Modules[i], ModuleName, SizeOf(ModuleName)

		    );

		  if AnsiCompareText('Tibia.exe', ModuleName) = 0 then

		    begin

			  GetModuleInformation(PHandle, Modules[i], @ModuleInfo, SizeOf

				  (ModuleInfo));

			  Result := ModuleInfo.lpBaseOfDll;

			  CloseHandle(PHandle);

			  Exit;

		    end;

	    end;

    end;

end;
Declare as variaveis:
  PH: THandle;

  PID, Thid: Dword;

  Offset: Integer;

  TibiaH: THandle
Declare a função para ler os endereços de memoria:
function ReadInteger(Address: Integer): Integer;

var

  value: Integer;

  ler: Dword;

begin

  Thid := GetWindowThreadProcessId(TibiaH, @PID);

  PH := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);

  ReadProcessMemory(PH, Ptr(Address), @value, 4, ler);

  Result := value;

end;
Declare a função para pegar o ProcessID:
function ProcessID: Integer;

begin

  TibiaH := FindWindow('TibiaClient', nil);

  Thid := GetWindowThreadProcessId(TibiaH, @PID);

  PH := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);

  Result := PID;

end;
Pronto, agora já podemos burlar o sistema da Cipsoft. Agora um simples exemplo de como você deve usar: Declare as consts:
const

  adrXOR = $7ADFD0;

  adrMyHP = $943000;

  adrMyMana = $7AE024;
Agora, declare a função para retornar o Health do seu character:
function PlayerHealth: Integer;

var

  HP: Integer;

  uXor: Integer;

begin

  Offset := Integer(GetTibiaBaseAddress(ProcessID));

  HP := ReadInteger((adrMyHP + Offset) - $400000);

  uXor := ReadInteger((adrXOR + Offset) - $400000);

  Result := HP xor uXor;

end;
Função para pegar a Mana do seu character:
function PlayerMana: Integer;

var

  Mana: Integer;

  uXor: Integer;

begin

  Offset := Integer(GetTibiaBaseAddress(ProcessID));

  Mana := ReadInteger((adrMyMana + Offset) - $400000);

  uXor := ReadInteger((adrXOR + Offset) - $400000);

  Result := Mana xor uXor;

end;
Vou deixar como o meu .pas ficou:

Qualquer duvida, só postar.

{ ---------------------------

    Feito por Kimoszin

    www.TibiaKing.com

---------------------------- }


unit uMain;


interface


uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, PsAPI, StdCtrls;


type

  TForm1 = class(TForm)

    lbHealth: TLabel;

    Button1: TButton;

    lbMana: TLabel;

    procedure Button1Click(Sender: TObject);

    private

    public

  end;


var

  Form1: TForm1;

  { Variaveis }

  PH: THandle;

  PID, Thid: Dword;

  Offset: Integer;

  TibiaH: THandle;


implementation


{$R *.dfm}


{ Endereços de Memoria Tibia 9.53 }

const

  adrXOR = $7ADFD0;

  adrMyHP = $943000;

  adrMyMana = $7AE024;


{ Função para ler números (Int)eiros }

function ReadInteger(Address: Integer): Integer;

var

  value: Integer;

  ler: Dword;

begin

  Thid := GetWindowThreadProcessId(TibiaH, @PID);

  PH := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);

  ReadProcessMemory(PH, Ptr(Address), @value, 4, ler);

  Result := value;

end;


{ Função para pegar o número do processo do Tibia }

function ProcessID: Integer;

begin

  TibiaH := FindWindow('TibiaClient', nil);

  Thid := GetWindowThreadProcessId(TibiaH, @PID);

  PH := OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);

  Result := PID;

end;


{ Função para pegar o endereço base do Tibia }

function GetTibiaBaseAddress(ProcessID: Cardinal): Pointer;

var

  Modules: Array of HMODULE;

  cbNeeded, i: Cardinal;

  ModuleInfo: TModuleInfo;

  ModuleName: Array [0 .. MAX_PATH] of Char;

  PHandle: THandle;

begin

  Result := nil;

  SetLength(Modules, 1024);

  PHandle := OpenProcess(PROCESS_QUERY_INFORMATION + PROCESS_VM_READ, FALSE,

    ProcessID);

  if (PHandle <> 0) then

    begin

	  EnumProcessModules(PHandle, @Modules[0], 1024 * SizeOf(HMODULE),

	    cbNeeded);

	  SetLength(Modules, cbNeeded div SizeOf(HMODULE));

	  for i := 0 to Length(Modules) - 1 do

	    begin

		  GetModuleBaseName(PHandle, Modules[i], ModuleName, SizeOf(ModuleName)

		    );

		  if AnsiCompareText('Tibia.exe', ModuleName) = 0 then

		    begin

			  GetModuleInformation(PHandle, Modules[i], @ModuleInfo, SizeOf

				  (ModuleInfo));

			  Result := ModuleInfo.lpBaseOfDll;

			  CloseHandle(PHandle);

			  Exit;

		    end;

	    end;

    end;

end;


{ Função que retornar o Health(Vida) do personagem }

function PlayerHealth: Integer;

var

  HP: Integer;

  uXor: Integer;

begin

  Offset := Integer(GetTibiaBaseAddress(ProcessID));

  HP := ReadInteger((adrMyHP + Offset) - $400000);

  uXor := ReadInteger((adrXOR + Offset) - $400000);

  Result := HP xor uXor;

end;


{ Função que retornar a Mana do personagem }

function PlayerMana: Integer;

var

  Mana: Integer;

  uXor: Integer;

begin

  Offset := Integer(GetTibiaBaseAddress(ProcessID));

  Mana := ReadInteger((adrMyMana + Offset) - $400000);

  uXor := ReadInteger((adrXOR + Offset) - $400000);

  Result := Mana xor uXor;

end;


procedure TForm1.Button1Click(Sender: TObject);

begin

{ Modo de usar }

  lbHealth.Caption := 'Health: ' + IntToStr(PlayerHealth);

  lbMana.Caption := 'Mana: ' + IntToStr(PlayerMana);

end;


end.

Editado por Kimoszin (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 2 weeks later...
  • 3 weeks later...

.

Editado por yurinho190 (veja o histórico de edições)

"Cada um de nós é livre para acreditar no que quiser, e minha resposta mais simples para isso é: Deus não existe. Ninguém criou o universo e ninguém comanda a nossa fé."

-Stephen Hawking

stephen-hawking-250x200.jpg

Link para o post
Compartilhar em outros sites
  • 1 month later...
  • 4 months later...

Se eu utilizar o Delphi 7 para fazer este programa, funcionará ou será necessário em Delphi superior ?

Funciona perfeitamente no Delphi 7

Link para o post
Compartilhar em outros sites

Funcionou beleza!

Mas, como eu faço para fazer uma leitura em tempo real ?

Do jeito que o código está, ele só faz a leitura ao clicar no botão.

Eu tentei usar while, fazendo um loop infinito ao clicar no botão, mas trava!

Abaixo:

procedure TForm1.Button1Click(Sender: TObject);

var

x: integer;

begin

x := 1;

while x = 1 do

begin

lbHealth.Caption := 'Health: ' + IntToStr(PlayerHealth);

lbMana.Caption := 'Mana: ' + IntToStr(PlayerMana);

end;

end;

end.

No aguardo!

Link para o post
Compartilhar em outros sites

Há como identificar uma criatura que está te atacando, e com isto atacá-la ?

Já estou raciocinando sobre isto há 1 dia e não consegui enxergar ainda hehe.. Alguém poderia clarear um pouco minhas ideias ?

No aguardo!

Link para o post
Compartilhar em outros sites

Como eu faço para mostrar a quantidade de experiência que eu tenho no char ?

A função para encontrar o número é igual as funções de health e mana ?

Encontrei os endereços para a última versão do tibia neste site, mas na lista não tem o endereço para experiência.. não encontrei..

http://www.blackdtools.com/forum/showthread.php?59794-9-8-Blackd-Tibia-addresses-9-8

;]

Link para o post
Compartilhar em outros sites
  • 1 month later...

Esta dando erro aqui:

ReadProcessMemory(PH, ptr(Address), @value, 4, ler);

[dcc32 Error] Unit1.pas(93): E2033 Types of actual and formal var parameters must be identical

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
  • 4 months later...

No Delphi xe2 tbm da isso:

ReadProcessMemory(PH, ptr(Address), @value, 4, ler);

[dcc32 Error] Unit1.pas(93): E2033 Types of actual and formal var parameters must be identical

@Edit:

No Delphi 7 funciona normal. o.O

@EDIT 2~

Não consigo retornar o health/mana do player, já atualizei os address. :(

Alguém sabe o por que ?

Editado por Ti0Branc0 (veja o histórico de edições)

"Perdoamos quando não sentimos mais necessidade de usar as mágoas antigas como garantia contra alguém."

Jacqueline Collodo Gomes

"As vezes construímos sonhos em cima de grandes pessoas.

O tempo passa e descobrimos que grandes mesmo eram os sonhos e as pessoas pequenas demais para torná-los reais!"

Bob Marley

Twitter:

@ewertont

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Nogard
      Não deixe seu evento de Natal para última hora, faltam apenas 4 dias. 

      Aproveite as sprites com desconto no site: https://otsprites.com
       
       
       

       

       
       
       
    • Por otpokesalense
      🧿Base Tibia Solebran totalmente otimizada!  
       
       ✔️ OTClient (Version Old);
      ✔️ Update 2.2;
      ✔️ Site Póprio;
      ✔️ Map Global
      ✔️ Bugs, Minimo (2x) talvez;
      ✔️ PVP 💯 Funcional.
       
       
      Get Servidor: https://files.fm/f/7qumr8943e 💸 Buy! otimo projeto para vc utilizá-lo.
      Lembrando:: ao comprar o download será disponibilizado automaticamente.
       
      🧑‍💻System Operacional: Windows (VPS)
      👨‍💻Programador (27) 998931903 - - - O Valor já inclui o serviço de programação! 🤗
       

       
       

       
       
    • Por Arkanjo39
      CUIDA, CUIDA E VEM CONHECER NOSSO SERVER. KING BAIAK ACABOU DE SER LANÇADO!!! VEM SER O TOP 1 Site com Otclient: https://kingbaiak.com/ PARA NOVOS JOGARES ADM TA DANDO AQUELA FORCINHA! SERVIDOR 8.60 COM RESETS, MONTARIAS E GOLDEN OUTFIT! INFORMAÇÕES BÁSICAS DO SERVIDOR: [+] MAPA BAIAK [+] HIGH EXP [+] RESETS COM + DAMAGE [+] AUTOLOOT AUTOMÁTICO [+] CITY DONATE [+] ROSHAMUUL, ORAMOND E NETHER [+] MONTARIAS E GOLDEN OUTFIT [+] INVASÃO DE MONSTROS AUTOMÁTICAS [+] DAILY MONSTER QUE APARECE AO LOGAR [+] MONTARIAS COM COMANDO !MOUNT [+] SISTEMA DE ROLETA ATUAL [+] CAST WATCH [+] FAST ATTACK [+] CAST ARROWS [+] PUSH CRUZADO [+] REWARD CHEST [+] WARSQUARE [+] COMBO EXP DE POTIONS [+] MINERAÇÃO COM LOJA [+] SISTEMA DE BOSS [+] CRITICAL/DODGE [500/500] [+] LIFE E MANA EM PORCENTAGEM* [+] VARIAS QUESTS [+] EVENTO DTT (AUTOMÁTICO) [+] EVENTO BATLEFIELD (AUTOMÁTICO) [+] EVENTO SNOWBALLWAR (AUTOMÁTICO) [+] EVENTO DESERT WAR (AUTOMÁTICO) [+] EVENTO ZOMBIE (AUTOMÁTICO) [+] EVENTO CAMPO MINADO (AUTOMÁTICO) [+] EVENTO TEAM BATLE (AUTOMÁTICO) [+] EVENTO CAPTURE THE FLAG (AUTOMÁTICO)
    • Por BTitan
      Baiak Titan: Uma Experiência Incomparável no Universo Baiak
       
      O Baiak Titan combina a nostalgia dos antigos tempos de OTServ com a inovação e modernidade atuais. Oferecemos um mapa vasto, com mais de 100 áreas de caça para explorar, além de vocações equilibradas para um PvP justo e emocionante. Diversos eventos automáticos ocorrem diariamente, garantindo diversão constante para os jogadores. O servidor conta com vários sistemas, como por exemplo, montarias para quem utiliza o cliente exclusivo, monstros do Tibia 9.6+, sistema de mineração, entre outros!
       
      Por Que Escolher o Baiak Titan?
       
      PvP de Alta Qualidade: Embora seja um servidor Baiak, nosso mapa é cuidadosamente projetado para proporcionar ganho de experiência sem perder a seriedade do jogo, oferecendo desafios instigantes e um equilíbrio perfeito para combates épicos.
      Jogabilidade Customizada: O mapa Baiak foi exclusivamente adaptado para promover intensas batalhas de PvP, com recursos inovadores que mantêm a jogabilidade sempre fresca e emocionante.

      Detalhes do Servidor:
       
      IP: baiaktitan.com Website: https://baiaktitan.com Account Manager: 1/1
        Principais Características:
       
      Uptime 24/7, Sem Lag: Jogue a qualquer hora com a estabilidade de servidores dedicados e de alta performance. Velocidade de Ataque Equilibrada: Ajustada perfeitamente para garantir combates dinâmicos e justos. Sistema de Cast: Transmita suas jogadas ao vivo e assista aos seus amigos em ação. Cliente Exclusivo: Software personalizado com novos outfits, montarias e criaturas, enriquecendo ainda mais sua experiência no jogo. Runas, Poções e Flechas Não Infinitas: Valorizamos uma jogabilidade mais estratégica e desafiadora, onde os recursos precisam ser geridos com sabedoria.
      Eventos Automáticos:
       
      Zombie Team Battle Monster Hunter Castle (War of Emperium) Capture The Flag DOTA Corrida Arena War (O último sobrevivente ganha) Fire Storm
        Taxas do Servidor:
       
      EXP: 200x (com stages)
      Skill: 100x
      Magic: 30x
      Loot: 3x
       
      Junte-se à nossa comunidade e viva essa aventura única. O Baiak Titan espera por você!
    • Por campospkks
      Servidor muito bem otimizado, com amplo map para uma diversão imperdível. 
       
      *  Quest System
      * bugs corrigidos 90,0%
      * Client Específico (V8)
      * Mobile Adaptavel e Otimizado
      * database.sql já com (Modulo Pix) 
      * site 95,9% atualizado (Troque, pois a marca já possuí proprietário)
      * Franquia Tibia Custom baseado em armas.
       
      Site Original: soulgun.com.br
      discord.gg/cCWcaMwjuB
      Relançamento Servidor 20-09-2024
      Horario 17:00
      whatsap Grupo
      https://chat.whatsapp.com/JsAyLAmwJQyGEWgHTI4096
      Video Do Game
      https://youtu.be/N8asxdnzmGw


×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo