Ir para conteúdo

Featured Replies

Postado

Reading Account and password address

Form1.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Net.Mail;

using System.Net.Mime;


namespace MXbot

{

	public partial class Form1 : Form

	{

		Cliente c;

		public List<int> ClientList = new List<int>();

		string nombreProceso = "tibia";

		string version = "9.4.2.0";

		public Form1()

		{

			InitializeComponent();

		}


		private void Form1_Load(object sender, EventArgs e)

		{

			foreach (Process p in Process.GetProcessesByName(nombreProceso))

			{

				if (p.MainModule.FileVersionInfo.FileVersion == version)

				{

					c = new Cliente(p, this);

					listBox1.Items.Add(c.getNombre);

				}

				else

				{

					MessageBox.Show("Versión " + p.MainModule.FileVersionInfo.FileVersion + " no soportada",

					"ERROR", MessageBoxButtons.OK, MessageBoxIcon.Information);

					Environment.Exit(0);

				}

			}

			if (ClientList.Count == 0)

			{

				MessageBox.Show(null, "No se encontró ningun cliente",

				"ERROR", MessageBoxButtons.OK, MessageBoxIcon.Information);

				Environment.Exit(0);

			}

		}


		private void button1_Click(object sender, EventArgs e)

		{

			if (c.IsOnline())

			{

				listBox1.Items.Add(c.getHp);

				listBox1.Items.Add(c.getNombreSever);

				listBox1.Items.Add(c.getNivel);

			}

		}


		private void checkBox1_CheckedChanged(object sender, EventArgs e)

		{

			if (checkBox1.Checked)

			{

				Life.Start();

			}

			else { Life.Stop(); }

		}


		private void Life_Tick(object sender, EventArgs e)

		{

			if (c.IsOnline())

			{

				textBox1.Text = c.getMana.ToString();

			}

		}

	}

}

Client.cs
namespace MXbot

{

	class Cliente

	{

		Memory memoria = new Memory();

		public IntPtr Handle;

		Form1 MainForm;

		public Process proceso;

		public int AdressOffset;

		//Other Address

		public static uint bListstart = 0x946000;

		public static uint steps = 0xb0;

		public static uint Max = 1300;

		public static uint ends = bListstart + (steps * Max);

		//Player Address

		public static uint PlayerId = 0x7AC054;


		public static uint Status = 0x7BA894;

		public static uint Healthadr = 0x7A9CEC;

		public static uint Manaadr = 0x7AC004;

		public static uint HealthMaxadr = 0x7AC048;

		public static uint ManaMaxadr = 0x7ABFB0;

		public static uint Nivel = 0x7ABFEC;

		public static uint Password = 0x7BA86C;

		public static uint Account = 0x7BA904;

		public static uint Soul = 0x7ABFF0;



		public Cliente(Process _process, Form1 mForm)

		{

			this.MainForm = mForm;

			proceso = _process;

			proceso.EnableRaisingEvents = true;

			Handle = _process.Handle;

			AdressOffset = proceso.MainModule.BaseAddress.ToInt32() - 0x400000;

			MainForm.ClientList.Add(proceso.Id);

		}

		public uint GetPlayerAdr()

		{

			for (uint i = bListstart; i <= ends; i += steps)

			{

				if (ReadInt(i) == ReadInt(PlayerId))

				{

					return i;

				}

			}

			return 0;

		}

		public bool IsOnline()

		{

			if (ReadByte(Status) == 8)

			{

				return true;

			}

			return false;

		}


		public string getNombre

		{

			get { return ReadString(GetPlayerAdr() + 4); }

		}


		public string getNombreSever

		{

			get { return ReadString(GetPlayerAdr() + 30); }

		}


		public int getNivel

		{

			get { return ReadInt(Nivel); }

		}


		public string getAccount

		{

			get { return ReadString(Account); }

		}


		public string getPassword

		{

			get { return ReadString(Password); }

		}


		public int getMana

		{

			get { return ReadInt(Manaadr); }

		}


		public int getHp

		{

			get { return ReadInt(Healthadr); }

		}


		public int getManaMax

		{

			get { return ReadInt(ManaMaxadr); }

		}


		public int getHpMax

		{

			get { return ReadInt(HealthMaxadr); }

		}


		public string ReadString(uint adr)

		{

			return memoria.ReadString(Handle, AdressOffset + adr, 32);

		}


		public int ReadInt(uint adr)

		{

			return memoria.ReadInt32(Handle, AdressOffset + adr);

		}


		public byte ReadByte(uint adr)

		{

			return memoria.ReadByte(Handle, AdressOffset + adr);

		}


		public void WriteInt(uint adr, int value)

		{

			memoria.WriteInt32(Handle, AdressOffset + adr, value);

		}


		public void WriteString(uint adr, string value)

		{

			memoria.WriteString(Handle, AdressOffset + adr, value);

		}


		/*public void WriteByte(uint adr, byte value)

		{

			memoria.WriteBytes(Handle, AdressOffset + adr, value);

		}*/

	}

}

Memory.cs
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Runtime.InteropServices;


namespace MXbot

{

	class Memory

	{

		[DllImport("kernel32.dll")]

		public static extern Int32 WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesWritten);

		[DllImport("kernel32.dll")]

		public static extern Int32 ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesRead);


		public byte[] ReadBytes(IntPtr handle, long address, uint bytesToRead)

		{

			IntPtr ptrBytesRead;

			byte[] buffer = new byte[bytesToRead];


			ReadProcessMemory(handle, new IntPtr(address), buffer, bytesToRead, out ptrBytesRead);


			return buffer;

		}


		public byte ReadByte(IntPtr handle, long address)

		{

			return ReadBytes(handle, address, 1)[0];

		}


		public string ReadString(IntPtr handle, long address, uint length)

		{

			if (length > 0)

			{

				byte[] buffer;

				buffer = ReadBytes(handle, address, length);

				return System.Text.ASCIIEncoding.Default.GetString(buffer).Split(new Char())[0];

			}

			else

			{

				string s = "";

				byte temp = ReadByte(handle, address++);

				while (temp != 0)

				{

					s += (char)temp;

					temp = ReadByte(handle, address++);

				}

				return s;

			}

		}


		public bool WriteBytes(IntPtr handle, long address, byte[] bytes, uint length)

		{

			IntPtr bytesWritten;

			int result = WriteProcessMemory(handle, new IntPtr(address), bytes, length, out bytesWritten);

			return result != 0;

		}


		public bool WriteString(IntPtr handle, long address, string str)

		{

			str += '\0';

			byte[] bytes = System.Text.ASCIIEncoding.Default.GetBytes(str);

			return WriteBytes(handle, address, bytes, (uint)bytes.Length);

		}


		public int ReadInt32(IntPtr handle, long address)

		{

			return BitConverter.ToInt32(ReadBytes(handle, address, 4), 0);

		}


		public bool WriteInt32(IntPtr handle, long address, int value)

		{

			return WriteBytes(handle, address, BitConverter.GetBytes(value), 4);

		}

	}

}

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

  • Respostas 26
  • Visualizações 4.5k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Preciso generalizar sim, pois a maioria das pessoas que passam por sites como esse para fazer downloads são pessoas leigas no assunto, e como eu sou responsável pelas informações aqui e em qualquer lu

Postado

Isto serve para saber a conta e senha logada no client Tibia.

Creio que isto pode ser perigoso em mãos "erradas" mas também acredito que todo conteúdo pode ser livre .

Isto apenas mostra uma falha amadora no cliente atual, e serve para alertar àqueles quais baixam qualquer coisa para Tibia.

  • 1 month later...

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

Quem Está Navegando 0

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

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo