示例#1
0
        static void Main(string[] args) {
            wow = new BlackMagic();
            wow.OpenProcessAndThread(SProcess.GetProcessFromWindowTitle(processwindowtitle));
            uint gamebase = (uint)wow.MainModule.BaseAddress;
            uint plvl1 = wow.ReadUInt(gamebase + 0x00A42788);
            uint plvl2 = wow.ReadUInt(plvl1 + 0x9c);
            uint plvl3 = wow.ReadUInt(plvl2 + 0x5c);
            uint plvl4 = wow.ReadUInt(plvl3 + 0x60);
            uint player_guid = plvl3 - 0x10;
            //uint playerbase = wow.ReadUInt(wow.ReadUInt(wow.ReadUInt(0x0A87EC2C+0x40))); //this is the player base
            string playername = wow.ReadASCIIString(0x00DBE820, 256); //reads player name
            Console.WriteLine(wow.ReadUInt(player_guid+(uint)descriptors.Health));
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            /*Console.WriteLine(playername + plvl4);
                for (uint j = 0; j < 1; j++) {
                try {
                    uint c = uint.Parse(Console.ReadLine());

                    for (uint i = 0; i < 2000; i++) {
                        uint temp = wow.ReadUInt(plvl3 + (0x10 * i));
                        if (temp > 0 && temp < 200000) {
                            Console.WriteLine("Value: " + temp + " at 0x{0:X}", (0x10 * i));
                            if (temp == c) {
                                Console.WriteLine("Found it! Press enter to continue...");
                                Console.ReadLine();
                            }
                        }
                    }
                }
                catch {

                }
            }
            for (uint i = 0; i < 100; i++) {
                try {
                    uint offset = uint.Parse(Console.ReadLine());
                    Console.WriteLine(wow.ReadUInt(plvl3 + offset));
                }
                catch {

                }
            }
            */
            //////////////////
            Console.ReadLine();
        }
示例#2
0
        static void Main(string[] args) {
            //Open the proccess
            wow = new BlackMagic();
            wow.OpenProcessAndThread(SProcess.GetProcessFromWindowTitle(PROCESS_WINDOW_TITLE));
            //Setup Object Manager and First object base address
            ObjMgrAddr = wow.ReadUInt(wow.ReadUInt((uint)wow.MainModule.BaseAddress + (uint)Constants.Const.ObjectManager.CurMgrPointer) + (uint)Constants.Const.ObjectManager.CurMgrOffset);
            FirstObject = new GameObject(wow.ReadUInt(ObjMgrAddr + (uint)Constants.Const.ObjectManager.FirstObject));
            //Read TargetGUID from globals and find in the Object Manager
            //UInt64 CurrTargetGUID = wow.ReadUInt64((uint)wow.MainModule.BaseAddress + (uint)Const.Globals.CurrentTargetGUID);
            UInt64 CurrTargetGUID = wow.ReadUInt64((uint)wow.MainModule.BaseAddress + (uint)Constants.Const.Globals.CurrentTargetGUID);
            PlayerObject = new GameObject(wow.ReadUInt64((uint)wow.MainModule.BaseAddress + (uint)Constants.Const.Globals.PlayerGUID));
            TargetObject = new GameObject(CurrTargetGUID);
            PlayerObject.Wowclass = wow.ReadByte(PlayerObject.DescriptorArrayAddress + (uint)Const.descriptors.Class8);

            System.Timers.Timer aTimer = new System.Timers.Timer();
            aTimer.Interval = 100;
            if (PlayerObject.Wowclass == 9) {
                Console.WriteLine("Initiate Affliction Warlock DPS BOT v1.0");
                aTimer.Elapsed += WarlockDPS.DpsEvent;
            }
            else if (PlayerObject.Wowclass == 11) {
                Console.WriteLine("Initiate Feral Druid DPS BOT v0.1");
                aTimer.Elapsed += DruidDPS.DpsEvent;
            }
            aTimer.AutoReset = true;
            aTimer.Enabled = true;
            while (true) {
                switch (Console.ReadLine()) {
                    case "stop":
                        Console.WriteLine("STOP");
                        aTimer.Elapsed -= DruidDPS.DpsEvent;
                        aTimer.Elapsed -= WarlockDPS.DpsEvent;
                        aTimer.Elapsed -= PrinterEvent;
                        break;
                    case "printer":
                        aTimer.Elapsed += PrinterEvent;
                        break;
                    case "start":
                        if (PlayerObject.Wowclass == 9) {
                            Console.WriteLine("Initiate Affliction Warlock DPS BOT v1.0");
                            aTimer.Elapsed += WarlockDPS.DpsEvent;
                        }
                        else if (PlayerObject.Wowclass == 11) {
                            Console.WriteLine("Initiate Feral Druid DPS BOT v0.1");
                            aTimer.Elapsed += DruidDPS.DpsEvent;
                        }
                        break;
                }
            }
        }
示例#3
0
 public static bool ConnectToGame(out BlackMagic w, string title) {
     w = new BlackMagic();
     try {
         if (!w.OpenProcessAndThread(SProcess.GetProcessFromWindowTitle(title))) {
             return false;
         }
         Console.WriteLine("Process found...");
         uint ObjMgrAddr = w.ReadUInt(w.ReadUInt((uint)w.MainModule.BaseAddress + (uint)ConstOffsets.ObjectManager.CurMgrPointer) + (uint)ConstOffsets.ObjectManager.CurMgrOffset);
         Console.WriteLine("Object Manager found... at x{0:X}",ObjMgrAddr);
         FirstObject = new GameObject(w,(UIntPtr)w.ReadUInt(ObjMgrAddr + (uint)ConstOffsets.ObjectManager.FirstObject));
         Console.WriteLine("First Object found...");
         return true;
         
     }
     catch {
         return false;
     }
 }
示例#4
0
        static void Main(string[] args)
        {
            uint dwCodeLoc;
            BlackMagic wow = new BlackMagic();
            if (wow.OpenProcessAndThread(SProcess.GetProcessFromProcessName("wow")))
            {
                Console.WriteLine(wow.GetModuleFilePath());
                DateTime dt = DateTime.Now;

                //dwCodeLoc = SPattern.FindPattern(wow.ProcessHandle, wow.MainModule, PATTERN_CLIENT_CONNECTION, MASK_CLIENT_CONNECTION, ' ');
                dwCodeLoc = wow.FindPattern(PATTERN_CLIENT_CONNECTION, MASK_CLIENT_CONNECTION);
                Console.WriteLine("Pattern found in {0}ms", DateTime.Now.Subtract(dt).TotalMilliseconds);
                Console.WriteLine("Code loc: 0x{0:X08}", dwCodeLoc);
                Console.WriteLine("CLIENT_CONNECTION: 0x{0:X08}", wow.ReadUInt(dwCodeLoc + 0x16));
                Console.WriteLine("CURMGR_OFFSET: 0x{0:X08}", wow.ReadUInt(dwCodeLoc + 0x1C));

            }
            else
            {
                Console.WriteLine("World of Warcraft could not be opened for read/write.");
            }

            Console.ReadLine();
        }
        public static Structs.PatternList FindPatternList(Structs.PatternList patternList)
        {
            Structs.PatternList newPatternList = new Structs.PatternList();
            newPatternList.processName = patternList.processName;
            uint baseModule = 0;

            BlackMagic memread = new BlackMagic();
            if (memread.OpenProcessAndThread(SProcess.GetProcessFromProcessName(patternList.processName)))
            {
                try
                {
                    // Dump module
                    ProcessModuleCollection modules = Process.GetProcessById(memread.ProcessId).Modules;
                    foreach (ProcessModule o in modules)
                    {
                        Structs.ModuleList m = new Structs.ModuleList();
                        m.Name = o.ModuleName;
                        m.baseAddressDec = (int)o.BaseAddress;
                        m.baseAddressHex = (o.BaseAddress).ToString("X");
                        patternList.Modules.Add(m);

                        // Check module base if exist.
                        if (patternList.baseModuleName != "")
                            if (patternList.baseModuleName.ToLower() == o.ModuleName.ToLower())
                                baseModule = (uint)o.BaseAddress;
                    }
                }
                catch { }

                foreach (Structs.Pattern p in patternList.Patterns)
                {
                    try
                    {
                        uint dwCodeLoc = memread.FindPattern(p.pattern, p.mask);
                        uint offset = memread.ReadUInt((uint)((int)dwCodeLoc + p.offsetLocation));
                        if (offset > 0)
                        {
                            offset = offset - baseModule;
                            dwCodeLoc = dwCodeLoc - baseModule;
                        }

                        if (offset > 0)
                        {
                            // Dump offset
                            p.offset = offset.ToString("X");
                            p.offsetDec = offset;
                            p.offsetUsedAtDec = (uint)((int)dwCodeLoc + p.offsetLocation);
                            p.offsetUsedAt = ((int)dwCodeLoc + p.offsetLocation).ToString("X");
                            try
                            {
                                switch (p.type)
                                {
                                    case "int64":
                                        p.value = Convert.ToString(memread.ReadUInt64(p.offsetDec));
                                        break;
                                    case "int":
                                        p.value = Convert.ToString(memread.ReadInt(p.offsetDec));
                                        break;
                                    case "float":
                                        p.value = Convert.ToString(memread.ReadFloat(p.offsetDec));
                                        break;
                                    case "string":
                                        p.value = Convert.ToString(memread.ReadASCIIString(p.offsetDec, 30));
                                        break;
                                }
                            }
                            catch { p.value = "No Found"; }
                        }
                        else
                            p.offset = "No Found";

                    }
                    catch
                    { p.offset = "No Found"; }
                    newPatternList.Patterns.Add(p);
                }
                memread.Close();
            }
            else
            {
                MessageBox.Show("Process no found.");
            }
            return patternList;
        }
        private void bCreatePattern_Click(object sender, EventArgs e)
        {
            if (cbProcess1.Text.Replace(" ", "") != "" && cbProcess2.Text.Replace(" ", "") != "" && tbOffset1.Text.Replace(" ", "").Replace("0x", "") != "" && tbOffset2.Text.Replace(" ", "").Replace("0x", "") != "")
            {
                string[] process1Array = cbProcess1.Text.Replace(" ", "").Split(Convert.ToChar("-"));
                string[] process2Array = cbProcess2.Text.Replace(" ", "").Split(Convert.ToChar("-"));
                if (process1Array != null && process2Array != null)
                {
                    if (process1Array.Length > 0 && process2Array.Length > 0)
                    {
                        try
                        {
                            // Process choose to ID
                            int process1Id = Convert.ToInt32(process1Array[0]);
                            int process2Id = Convert.ToInt32(process2Array[0]);

                            // Open Process
                            BlackMagic process1BM = new BlackMagic();
                            BlackMagic process2BM = new BlackMagic();
                            if (!process1BM.OpenProcessAndThread(process1Id))
                            {
                                MessageBox.Show("Open Process 1 failled.");
                                return;
                            }
                            if (!process2BM.OpenProcessAndThread(process2Id))
                            {
                                MessageBox.Show("Open Process 2 failled.");
                                return;
                            }

                            // Get Module
                            uint moduleBase1BM = 0;
                            uint moduleBase2BM = 0;
                            string moduleShow = "";
                            if (baseModuleNameTB.Text != "")
                            {
                                moduleBase1BM = (uint)process1BM.GetModule(baseModuleNameTB.Text).BaseAddress;
                                moduleBase2BM = (uint)process2BM.GetModule(baseModuleNameTB.Text).BaseAddress;
                                moduleShow = baseModuleNameTB.Text + " + ";
                                if (moduleBase1BM <= 0 || moduleBase2BM <= 0)
                                {
                                    MessageBox.Show("Module not found.");
                                    return;
                                }
                            }

                            // Offset choose to uint
                            uint offset1 = uint.Parse(tbOffset1.Text.Replace(" ", "").Replace("0x", ""), System.Globalization.NumberStyles.HexNumber) + moduleBase1BM;
                            uint offset2 = uint.Parse(tbOffset2.Text.Replace(" ", "").Replace("0x", ""), System.Globalization.NumberStyles.HexNumber) + moduleBase2BM;

                            // Offset to 4 Byte
                            string tPattern1 = offset1.ToString("X");
                            while (tPattern1.Length < 8)
                                tPattern1 = "0" + tPattern1;
                            string tPattern2 = offset2.ToString("X");
                            while (tPattern2.Length < 8)
                                tPattern2 = "0" + tPattern2;

                            // Offset 4 byte inverse
                            string t2Pattern1 = tPattern1.Substring(6, 2);
                            t2Pattern1 += " " + tPattern1.Substring(4, 2);
                            t2Pattern1 += " " + tPattern1.Substring(2, 2);
                            t2Pattern1 += " " + tPattern1.Substring(0, 2);
                            string t2Pattern2 = tPattern2.Substring(6, 2);
                            t2Pattern2 += " " + tPattern2.Substring(4, 2);
                            t2Pattern2 += " " + tPattern2.Substring(2, 2);
                            t2Pattern2 += " " + tPattern2.Substring(0, 2);

                            // Find offset used at
                            string tMask = "xxxx";
                            uint dwCodeLoc1 = process1BM.FindPattern(t2Pattern1, tMask);
                            uint dwCodeLoc2 = process2BM.FindPattern(t2Pattern2, tMask);
                            if (dwCodeLoc1 <= 0 || dwCodeLoc2 <= 0)
                            {
                                MessageBox.Show("Offset not found.");
                                return;
                            }

                            // Read Pattern
                            byte[] bytesPorcess1 = process1BM.ReadBytes(dwCodeLoc1, 16);
                            byte[] bytesPorcess2 = process2BM.ReadBytes(dwCodeLoc2, 16);

                            // Make mask
                            string mask = "";
                            for (int i = 0; i <= bytesPorcess1.Length - 1; i++)
                            {
                                if (bytesPorcess1[i] == bytesPorcess2[i] && i > 3)
                                    mask += "x";
                                else
                                {
                                    bytesPorcess1[i] = 0;
                                    bytesPorcess2[i] = 0;
                                    mask += "?";
                                }
                            }

                            // Pattern to String
                            string pattern = BitConverter.ToString(bytesPorcess1);
                            pattern = pattern.Replace("-", " ");

                            // Show Result
                            tbPattern.Text = "";
                            tbPattern.Text += "Offset 1 used at: " + moduleShow + "0x" + (dwCodeLoc1 - moduleBase1BM).ToString("x") + Environment.NewLine;
                            tbPattern.Text += "Offset 2 used at: " + moduleShow + "0x" + (dwCodeLoc2 - moduleBase2BM).ToString("x") + Environment.NewLine + Environment.NewLine;
                            tbPattern.Text += "<Pattern>" + Environment.NewLine;
                            tbPattern.Text += "     <offsetName>" + tbOffsetName.Text + "</offsetName>" + Environment.NewLine;
                            tbPattern.Text += "     <pattern>" + pattern + "</pattern>" + Environment.NewLine;
                            tbPattern.Text += "     <mask>" + mask + "</mask>" + Environment.NewLine;
                            tbPattern.Text += "     <offsetLocation>0</offsetLocation>" + Environment.NewLine;
                            tbPattern.Text += "     <type>" + cbValueType.Text + "</type>" + Environment.NewLine;
                            tbPattern.Text += "</Pattern>";

                            process1BM.Close();
                            process2BM.Close();
                        }
                        catch
                        {
                            MessageBox.Show("Error, please verif all info.");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Please select Process.");
                    }
                }
                else
                {
                    MessageBox.Show("Please select Process.");
                }
            }
            else
            {
                MessageBox.Show("Please enter all information.");
            }
        }
示例#7
0
文件: Memory.cs 项目: Bia10/clrn
        public void InitMemory()
        {
            try
            {
                wow = new BlackMagic(); //Create new function to open wow process
                if (PId == 0)
                    wow.OpenProcessAndThread(SProcess.GetProcessFromWindowTitle("World of Warcraft"));
                else wow.OpenProcessAndThread(PId);
                if (wow.ProcessId != 0)
                {
                    WowControl.hWnd = (uint)wow.WindowHandle;
                    GoTo(0, 0, 0, 0, 0);
                }
                else
                {

                    playerbase = 0;
                    BgStatus = 0;
                    IsIndoors = 0; IsMounted = 0;
                    BattlefieldInstanceExpiration = 0;
                    Location = ""; SubLocation = ""; LastError = "";
                    Speed = 0; ;
                    X = 0; Y = 0; Z = 0;
                    LastRead = new DateTime();
                    PlayerForm = 0;
                    Objects = new List<ObjectInfo>();
                    PlayerBuffs = new List<AURA>();
                }
            }
            catch (Exception) { }
        }