WoW Memory Editing Tutorial
Hello and welcome to this tutorial, this tutorial is made by me and i would like for it not to be copy/pasted anywhere but mmowned.com, if you do copy/paste any code or anything please give credits, Thank you.
First of all i would like to say that this is my way of memory editing i don't care if you do it another way, this i will always do it this way if you choose to follow this way or not is not up to me.
Ok, to start first the things you will need for doing it this way.
1, Microsoft Visual C# 2008 express edition -credits to microsoft
2, blackmagic dll -credits to Shynd
You can download these:
Microsoft Visual C# 2008 express edition -HereVisual C# 2008 Express Edition
blackmagic,fasm_managed dll -Here http://www.shynd.com/public/BlackMagic.1.1.rar
Now to start with the actual memory editing,
1) Open C# and click on File>>>New Project,
2) Click on "Console Application" rename it to whatever you want i named mine "Memory Editing Tutorial- Console App".
3) Then click "OK".
4) Remember the blackmagic dll that you downloaded? Well extract it to anywere i put it on my desktop for now.
5) In C# right-click "References" and click "Add Reference..." Click on "Browse" click on "Look in" then browse to where you extracted your blackmagic folder.
6) Select "BlackMagic.dll" and "fasmdll_managed.dll" Then click "OK"
7) Now back to C# where it says in the text "using _______;" go to the bottom and type "using Magic;" without the quotes.
Now you need to open the wow process via blackmagic so... in:
Code:
static void Main(string[] args)
{
}
Write:
Code:
BlackMagic wow = new BlackMagic(); //Create new function to open wow process
wow.OpenProcessAndThread(SProcess.GetProcessFromWindowTitle("World of Warcraft")); //This Opens "World of Warcraft" window
now you will have:
Code:
static void Main(string[] args)
{
BlackMagic wow = new BlackMagic(); //Create new function to open wow process
wow.OpenProcessAndThread(SProcess.GetProcessFromWindowTitle("World of Warcraft")); //This Opens "World of Warcraft" window
}
you don't have to put the // It just makes it easier later on because you don't have to go through the code you can just read the notes.
Now we are going to read the wow memory such as your player name,health,mana,level, and so on, then im going to show you how to write to wow memory so you can have basic x,y,z movement via ClickToMove.
Ok, so the code we have so far should be:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Magic;
namespace Memory_Editing_Tutorial__Console_App
{
class Program
{
static void Main(string[] args)
{
BlackMagic wow = new BlackMagic(); //Create new function to open wow process
wow.OpenProcessAndThread(SProcess.GetProcessFromWindowTitle("World of Warcraft")); //This Opens "World of Warcraft" window
}
}
}
The next lines we will insert will be:
Code:
uint playerbase = wow.ReadUInt(wow.ReadUInt(wow.ReadUInt(0x00CF7C00) + 0x34) + 0x24); //this is the player base
string playername = wow.ReadASCIIString(0x00C923F8, 12); //reads player name
uint Level = wow.ReadUInt(wow.ReadUInt(playerbase + 0x8) + (0x35 * 4)); // Reads players level
I will explain all of this a little later just put it in for now.
Ok so with this code we are reading Playerbase,Playername, and playerlevel
now we will write this to console so we can see it all come to action.
add:
Code:
Console.WriteLine("Player Name is: " + playername); //writes to console to tell player name
Console.WriteLine("Player level is:" + Level); //writes to console to tell player level
to the code now we will have:
Code:
BlackMagic wow = new BlackMagic(); //Create new function to open wow process
wow.OpenProcessAndThread(SProcess.GetProcessFromWindowTitle("World of Warcraft")); //This Opens "World of Warcraft" window
uint playerbase = wow.ReadUInt(wow.ReadUInt(wow.ReadUInt(0x00CF7C00) + 0x34) + 0x24); //this is the player base
string playername = wow.ReadASCIIString(0x00C923F8, 12); //reads player name
uint Level = wow.ReadUInt(wow.ReadUInt(playerbase + 0x8) + (0x35 * 4)); // Reads players level
Console.WriteLine("Player Name is: " + playername); //writes to console to tell player name
Console.WriteLine("Player level is:" + Level); //writes to console to tell player level
in the main block of code.
Ok, so now to test what we have out.
Do Ctrl+F5 or go to "Debug>>>Start Without Debugging"
It should look like this:
Ok now that would be basic memory reading lets try memory writing.
add this to your code:
Code:
float playerx = wow.ReadFloat(Pbase + 0x798); // Read players xlocation
float playery = wow.ReadFloat(Pbase + 0x79C); // Read players ylocation
float playerz = wow.ReadFloat(Pbase + 0x7A0); // Read players zlocation
ok this code reads your x,y,z values also known as your cordinates we will now take these and try to move by a few feet or so.
add this to your code:
Code:
Console.WriteLine("Player X cord is:" + playerx); //writes to console to tell players x cordinate
Console.WriteLine("Player Y cord is:" + playery); //writes to console to tell players y cordinate
now do "ctrl+F5" again and it should tell your player name,level,x and y cordinates. You need to be ingame in wow while you do this, now don't move your character and write down what the x,y values are as we are going to need them, also when your ingame go to interface>>>mouse and enable click-to-move.
now we will write to the code to make your character move, write this code:
Code:
wow.WriteFloat(0x00CB9814, x here); // x pos from prompt
wow.WriteFloat(0x00CB9818, y here); // y pos from prompt
where it says in the code "x here" type for example if the x cord you wrote down earlier was 1000 write 1005 as it will increase your x by 5, do the same for the "y here" except write the y cord you wrote down earlier also plus 5.
now add to the code:
Code:
wow.WriteInt(0x00CB97A4, 4);//makes character walk
this activates your click-to-move so it makes your character walk
now you should have:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Magic;
namespace Memory_Editing_Tutorial__Console_App
{
class Program
{
static void Main(string[] args)
{
BlackMagic wow = new BlackMagic(); //Create new function to open wow process
wow.OpenProcessAndThread(SProcess.GetProcessFromWindowTitle("World of Warcraft")); //This Opens "World of Warcraft" window
uint playerbase = wow.ReadUInt(wow.ReadUInt(wow.ReadUInt(0x00CF7C00) + 0x34) + 0x24); //this is the player base
string playername = wow.ReadASCIIString(0x00C923F8, 12); //reads player name
uint Level = wow.ReadUInt(wow.ReadUInt(playerbase + 0x8) + (0x35 * 4)); // Reads players level
float playerx = wow.ReadFloat(playerbase + 0x798); // Read players xlocation
float playery = wow.ReadFloat(playerbase + 0x79C); // Read players ylocation
float playerz = wow.ReadFloat(playerbase + 0x7A0); // Read players zlocation
Console.WriteLine("Player Name is: " + playername); //writes to console to tell player name
Console.WriteLine("Player level is:" + Level); //writes to console to tell player level
Console.WriteLine("Player X cord is:" + playerx); //writes to console to tell players x cordinate
Console.WriteLine("Player Y cord is:" + playery); //writes to console to tell players y cordinate
wow.WriteFloat(0x00CB9814, x here); // x pos from prompt
wow.WriteFloat(0x00CB9818, y here); // y pos from prompt
wow.WriteInt(0x00CB97A4, 4);//makes character walk
}
}
}
now do "ctrl+F5" and it should make your character move to whatever x,y cord you put in there and that's memory writing.
Thank you for reading this tut and i hope you enjoyed it.