Hi, I am a newbie for wow developing...
I am reading this fourm for many topics about start developing the bot by memory editing, but it seems outdated.
Now I am starting for a basic reading like a hello world which is read my char name, but I cannot get it out.
Can you tell me what`s wrong? Thanks a lot.
Here is a code, I am using GreyMagic on Wow classic 1.13 :
List<Process> wowProcs = new List<Process>();
foreach (Process p in Process.GetProcessesByName("WowClassic"))
{
wowProcs.Add(p);
}
//Get Wow handle
if (wowProcs.Count > 0)
{
IntPtr[] wowHandles = new IntPtr[wowProcs.Count];
for (int i = 0; i < wowProcs.Count; i++)
{
wowHandles[i] = wowProcs[i].MainWindowHandle;
wowProcs[i].PriorityClass = ProcessPriorityClass.Normal;
Console.WriteLine("Wow pid: {0}, Frame name:{1}", wowProcs[i].MainWindowHandle.ToInt32(), wowProcs[i].MainWindowTitle);
GreyMagic.ExternalProcessReader epr = new GreyMagic.ExternalProcessReader(wowProcs[i]);
IntPtr baseWow = epr.ImageBase;
UInt64 baseAddr = (UInt64)baseWow;
UInt64 objMgr = baseAddr + 0x2387B18;
string strVersion = epr.ReadString((IntPtr)(baseAddr + 0x1C38A44), Encoding.ASCII, 6);
string strRelease = epr.ReadString((IntPtr)(baseAddr + 0x1C38A5
, Encoding.ASCII, 6);
string strBuild = epr.ReadString((IntPtr)(baseAddr + 0x1C38A4C), Encoding.ASCII, 6);
Console.WriteLine("Wow version:{0}({1})", strVersion, strBuild);
var isIngamePtr = baseAddr + 0x25A9CD8;
bool isInGame = BitConverter.ToBoolean(epr.ReadBytes((IntPtr)(isIngamePtr), 1),0);
Console.WriteLine("Online State: {0}", isInGame);
var nameBase = baseAddr+ 0x1FB0B28;
var nameBytes = epr.ReadBytes((IntPtr)(nameBase+0x31), 12);
Console.WriteLine(Encoding.ASCII.GetString(nameBytes));
//var pGUID = epr.Read<UInt32>(IntPtr.Add(nameBasePtr,0x20));
/*
* 0x20 GUID
* 0x31 Player name
*/
//Console.WriteLine("Player GUID: {0}",pGUID.ToString());
//跳出
break;
}
}
else
{
Console.WriteLine("Cannot find any wow process");
}