using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Spellhider { class Program { public void Main(); public void Init() { ProcessMemoryReaderLib.ProcessMemoryReader pReader = new ProcessMemoryReaderLib.ProcessMemoryReader(); ProcessMemoryReaderLib.ProcessMemoryReader pReader2 = new ProcessMemoryReaderLib.ProcessMemoryReader(); System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName("Darkages"); if (myProcesses.Length == 0) { cleanup(); } else { pReader.ReadProcess = myProcesses[0]; pReader2.ReadProcess = myProcesses[1]; pReader.OpenProcess(); pReader2.OpenProcess(); int bytesReaded; byte[] memory; byte[] memory1; memory = pReader.ReadProcessMemory((IntPtr)InfoBasePtr, 4, out bytesReaded); memory1 = pReader2.ReadProcessMemory((IntPtr)InfoBasePtr, 4, out bytesReaded); int refTemp = (memory[0] + 256 * memory[1] + 256 * 256 * memory[2] + 256 * 256 * 256 * memory[3]); int refTemp2 = (memory1[0] + 256 * memory1[1] + 256 * 256 * memory1[2] + 256 * 256 * 256 * memory1[3]); XAddress = refTemp + XAddressOff; YAddress = refTemp + YAddressOff; fMapNumAddress = refTemp + MapNumAddressOff; lXAddress = refTemp2 + XAddressOff; lYAddress = refTemp2 + YAddressOff; lMapNumAddress = refTemp2 + MapNumAddressOff; if (XAddress > 0 && YAddress > 0) { memory = pReader.ReadProcessMemory((IntPtr)XAddress, 1, out bytesReaded); x = (memory[0]); memory = pReader.ReadProcessMemory((IntPtr)YAddress, 1, out bytesReaded); y = (memory[0]); memory = pReader.ReadProcessMemory((IntPtr)fMapNumAddress, 1, out bytesReaded); lmapn = (memory[0]); memory1 = pReader2.ReadProcessMemory((IntPtr)XAddress, 1, out bytesReaded); lx = (memory1[0]); memory1 = pReader2.ReadProcessMemory((IntPtr)YAddress, 1, out bytesReaded); ly = (memory1[0]); memory1 = pReader2.ReadProcessMemory((IntPtr)fMapNumAddress, 1, out bytesReaded); fmapn = (memory1[0]); if (checkBox1.Checked) { ////////HIDE SPELL LINES int BytesWritten; IntPtr BaseAddress = new IntPtr(0x49C523); byte[] NewVal = { 0x90, 0x90, 0x90 }; pReader.WriteProcessMemory(BaseAddress, NewVal, out BytesWritten); } else { //////RESTORE SPELL LINES int BytesWritten; IntPtr BaseAddress = new IntPtr(0x49C523); byte[] NewVal = { 0x8B, 0x4D, 0x14 }; pReader.WriteProcessMemory(BaseAddress, NewVal, out BytesWritten); } if (checkBox4.Checked) { ////////MAKE CREATURES ACT WIERD int BytesWritten; IntPtr BaseAddress = new IntPtr(0x5FC3AF); IntPtr BaseAddress2 = new IntPtr(0x611E4D); IntPtr BaseAddress3 = new IntPtr(0x5FC3A9); byte[] NewVal = { 0x90, 0x90, 0x90 }; pReader.WriteProcessMemory(BaseAddress, NewVal, out BytesWritten); pReader.WriteProcessMemory(BaseAddress2, NewVal, out BytesWritten); pReader.WriteProcessMemory(BaseAddress2, NewVal, out BytesWritten); } else { ////////////////RESTORE CREATURES int BytesWritten; IntPtr BaseAddress = new IntPtr(0x5FC3AF); IntPtr BaseAddress2 = new IntPtr(0x611E4D); IntPtr BaseAddress3 = new IntPtr(0x5FC3A9); byte[] NewVal = { 0x89, 0x4A, 0x44 }; byte[] NewVal2 = { 0x89, 0x48, 0x40 }; byte[] NewVal3 = { 0x89, 0x42, 0x40 }; pReader.WriteProcessMemory(BaseAddress, NewVal, out BytesWritten); pReader.WriteProcessMemory(BaseAddress2, NewVal2, out BytesWritten); pReader.WriteProcessMemory(BaseAddress2, NewVal3, out BytesWritten); } } } } } }