[tools is attached at the end of the thread! for those who dont like to read..]
this thread contains a videos of how to find you hp and ur target's hp base address using cheat engine in Archlord, along with a mini-simple tool written in C# that uses this info to find ur hp and ur target's hp by reading the process memory also the source code (for whom ever wants to use it in his own bot possibly!) ---> finding base address isnt always easy, it has try-and-error, interacting with the client to gather more info using CE... the initial 1098 value of the target mob could be replaced by another char (like open another client and use another char of urs which u know its hp, that is if u dont have the mobs list with their ids and hp vals -- or could be approximated into a range by dealing damage and approximating the value... -)
base address along with the right offsets are the only way to obtain the right values from external programming langauges or scipting langauges.
i saw few threads about similar topic before, and they either contain (finding the address each time u use a bot for example) or they tell you that they have a similar tool but they dont want to share it... so i i checked this out yesterday, found the base addresses and created the tool for whom ever wants.
(the tool is simple but many like to have a tool like this whether to check possible glitchers.. or what ever)
these videos can be a useful tutorial of how to find base address manually using CE (you can check CE forums for more specialized info about similar topics)
vid1: find targets HP base address and offsets (tutorial)
[Only registered and activated users can see links. Click Here To Register...]
vid2: find you hp base address and offsets (tutorial)
[Only registered and activated users can see links. Click Here To Register...]
vid3: mini tool that uses the info from the previous two tests
[Only registered and activated users can see links. Click Here To Register...]
(dont tell me why i didnt add thread or a better UI.... i just made it on the fly)
source code(in C#): for the mini tool
this thread contains a videos of how to find you hp and ur target's hp base address using cheat engine in Archlord, along with a mini-simple tool written in C# that uses this info to find ur hp and ur target's hp by reading the process memory also the source code (for whom ever wants to use it in his own bot possibly!) ---> finding base address isnt always easy, it has try-and-error, interacting with the client to gather more info using CE... the initial 1098 value of the target mob could be replaced by another char (like open another client and use another char of urs which u know its hp, that is if u dont have the mobs list with their ids and hp vals -- or could be approximated into a range by dealing damage and approximating the value... -)
base address along with the right offsets are the only way to obtain the right values from external programming langauges or scipting langauges.
i saw few threads about similar topic before, and they either contain (finding the address each time u use a bot for example) or they tell you that they have a similar tool but they dont want to share it... so i i checked this out yesterday, found the base addresses and created the tool for whom ever wants.
(the tool is simple but many like to have a tool like this whether to check possible glitchers.. or what ever)
these videos can be a useful tutorial of how to find base address manually using CE (you can check CE forums for more specialized info about similar topics)
vid1: find targets HP base address and offsets (tutorial)
[Only registered and activated users can see links. Click Here To Register...]
vid2: find you hp base address and offsets (tutorial)
[Only registered and activated users can see links. Click Here To Register...]
vid3: mini tool that uses the info from the previous two tests
[Only registered and activated users can see links. Click Here To Register...]
(dont tell me why i didnt add thread or a better UI.... i just made it on the fly)
source code(in C#): for the mini tool
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace ALFindMemoryLocations
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress,
byte[] lpBuffer, uint nSize, out int lpNumberOfBytesWritten);
[DllImport("Kernel32.dll")]
public static extern bool ReadProcessMemory
(
IntPtr hProcess,
IntPtr lpBaseAddress,
byte[] lpBuffer,
UInt32 nSize,
ref UInt32 lpNumberOfBytesRead
);
private void button1_Click(object sender, EventArgs e)
{
try
{
Process[] processList = null;
Process targetProcess = null;
String processName = "alefclient";
processList = Process.GetProcessesByName(processName);
if (processList == null || processList.Length == 0)
{
MessageBox.Show("target program not running");
return;
}
else
{
targetProcess = processList[0];
//OUR WINDOW handle is the mainwindow handle in this case
byte[] buffer = new byte[4];
uint bytesRead = 0;
System.Console.WriteLine();
int address = Convert.ToInt32("0089afb8", 16);
//base address for target hp is 0x0089afb8
/* so using cheat engine u can track the target hp into the base address manually
* you will get these offsets
* baseAddress=0x0089afb8
* to get the target value from that address u need to see the value of each pointer tell the final
* hp value
* (baseaddress+0x4a4)->(address1)
* address1+0x5c->(address2)
* address2+0x36->(address3)
* address3+0x74->(address4)
* address4+0x720->address5
* address5-> the target value
*
* only base address is fixed, all other addresses are dynamically allocated and change their values
**/
ReadProcessMemory(targetProcess.Handle, (IntPtr)address, buffer, 4, ref bytesRead);
address = BitConverter.ToInt32(buffer, 0) + 1188; //0x4a4 == 1188 (int)
ReadProcessMemory(targetProcess.Handle, (IntPtr)address, buffer, 4, ref bytesRead);
address = BitConverter.ToInt32(buffer, 0) + 92; //0x5c == 92
ReadProcessMemory(targetProcess.Handle, (IntPtr)address, buffer, 4, ref bytesRead);
address = BitConverter.ToInt32(buffer, 0) + 36; //0x9*4 == 36(int)
ReadProcessMemory(targetProcess.Handle, (IntPtr)address, buffer, 4, ref bytesRead);
address = BitConverter.ToInt32(buffer, 0) + 116; //0x74 == 116
ReadProcessMemory(targetProcess.Handle, (IntPtr)address, buffer, 4, ref bytesRead);
address = BitConverter.ToInt32(buffer, 0) + 1824; //0x720 == 1824
ReadProcessMemory(targetProcess.Handle, (IntPtr)address, buffer, 4, ref bytesRead);
txtTargetHP.Text = "" + BitConverter.ToInt32(buffer, 0);
}
}
catch (Exception ex)
{
MessageBox.Show("something went wrong somewhere, try again");
}
}
private void btnFindMyHP_Click(object sender, EventArgs e)
{
try
{
Process[] processList = null;
Process targetProcess = null;
String processName = "alefclient";
processList = Process.GetProcessesByName(processName);
if (processList == null || processList.Length == 0)
{
MessageBox.Show("target program not running");
return;
}
else
{
targetProcess = processList[0];
byte[] buffer = new byte[4];
uint bytesRead = 0;
System.Console.WriteLine();
int address = Convert.ToInt32("0089afb8", 16);
ReadProcessMemory(targetProcess.Handle, (IntPtr)address, buffer, 4, ref bytesRead);
address = BitConverter.ToInt32(buffer, 0) + 1184; //0x4a0 == 1184 (int)
ReadProcessMemory(targetProcess.Handle, (IntPtr)address, buffer, 4, ref bytesRead);
address = BitConverter.ToInt32(buffer, 0) + 92; //0x5c == 92
ReadProcessMemory(targetProcess.Handle, (IntPtr)address, buffer, 4, ref bytesRead);
address = BitConverter.ToInt32(buffer, 0) + 260; //0x41*4 == 260(int)
ReadProcessMemory(targetProcess.Handle, (IntPtr)address, buffer, 4, ref bytesRead);
address = BitConverter.ToInt32(buffer, 0) + 116; //0x74 == 116
ReadProcessMemory(targetProcess.Handle, (IntPtr)address, buffer, 4, ref bytesRead);
address = BitConverter.ToInt32(buffer, 0) + 1824; //0x720 == 1824
ReadProcessMemory(targetProcess.Handle, (IntPtr)address, buffer, 4, ref bytesRead);
txMyHP.Text = "" + BitConverter.ToInt32(buffer, 0);
}
}
catch (Exception ex)
{
MessageBox.Show("something went wrong somewhere, try again");
}
}
}
}