10 |
using RomCheater.Logging; |
using RomCheater.Logging; |
11 |
using RomCheater.PluginFramework.Interfaces; |
using RomCheater.PluginFramework.Interfaces; |
12 |
using System.Diagnostics; |
using System.Diagnostics; |
13 |
|
using Sojaner.MemoryScanner.MemoryProviers; |
14 |
|
|
15 |
namespace RomCheater.Docking.UI |
namespace RomCheater.Docking.UI |
16 |
{ |
{ |
17 |
public partial class UIMemoryViewer : UserControl, IProcessConfig, IAcceptsPlugin<IConfigPlugin>//, IAcceptsMemoryRange |
public partial class UIMemoryViewer : UserControl, IAcceptsProcess<Process>, IAcceptsPlugin<IConfigPlugin>//, IAcceptsMemoryRange |
18 |
{ |
{ |
19 |
public UIMemoryViewer() |
public UIMemoryViewer() |
20 |
{ |
{ |
50 |
{ |
{ |
51 |
if (!DesignMode) |
if (!DesignMode) |
52 |
{ |
{ |
53 |
Sojaner.MemoryScanner.ProcessMemoryReader reader = new Sojaner.MemoryScanner.ProcessMemoryReader(); |
GenericMemoryProvider provider = new GenericMemoryProvider((IAcceptsProcessAndConfig)this); |
|
reader.ReadProcess = this.AcceptedProcess; |
|
|
reader.OpenProcess(); |
|
54 |
uint addr = 0; |
uint addr = 0; |
55 |
reader.ReadFirstNonZeroByte(MemoryStart, MemorySize, out addr); |
provider.ReadFirstNonZeroByte(MemoryStart, MemorySize, out addr); |
56 |
GotoAddress(addr); |
GotoAddress(addr); |
57 |
} |
} |
58 |
} |
} |
59 |
|
|
60 |
#region IProcessConfig Members |
#region IAcceptsProcess<Process> Members |
61 |
private Process _AcceptedProcess; |
private Process _AcceptedProcess; |
62 |
public Process AcceptedProcess |
public Process AcceptedProcess |
63 |
{ |
{ |
189 |
{ |
{ |
190 |
try |
try |
191 |
{ |
{ |
192 |
Sojaner.MemoryScanner.ProcessMemoryReader reader = new Sojaner.MemoryScanner.ProcessMemoryReader(); |
GenericMemoryProvider provider = new GenericMemoryProvider((IAcceptsProcessAndConfig)this); |
|
reader.ReadProcess = this.AcceptedProcess; |
|
|
reader.OpenProcess(); |
|
193 |
int bytesReadSize; |
int bytesReadSize; |
194 |
byte[] data; |
byte[] data; |
195 |
reader.ReadProcessMemory(CURRENT_TOP_ADDR, max_ram_view, out bytesReadSize, out data); |
provider.ReadProcessMemory(CURRENT_TOP_ADDR, max_ram_view, out bytesReadSize, out data); |
196 |
//this.Logger.LogDebugMessage(string.Format("GetMemory() -> Memory Size: {0}0x{2:X8}{1}", "{", "}", data.Length)); |
//this.Logger.LogDebugMessage(string.Format("GetMemory() -> Memory Size: {0}0x{2:X8}{1}", "{", "}", data.Length)); |
197 |
return data; |
return data; |
198 |
} |
} |
278 |
if (AcceptedPlugin == null) { return; } |
if (AcceptedPlugin == null) { return; } |
279 |
// Byte changed |
// Byte changed |
280 |
//byte[] data = (txtData.ByteProvider as DynamicByteProvider).Bytes.ToArray(); |
//byte[] data = (txtData.ByteProvider as DynamicByteProvider).Bytes.ToArray(); |
281 |
|
GenericMemoryProvider provider = new GenericMemoryProvider((IAcceptsProcessAndConfig)this); |
|
|
|
|
Sojaner.MemoryScanner.ProcessMemoryReader reader = new Sojaner.MemoryScanner.ProcessMemoryReader(); |
|
|
reader.ReadProcess = this.AcceptedProcess; |
|
|
reader.OpenProcess(); |
|
282 |
int bytesReadSize; |
int bytesReadSize; |
283 |
|
|
284 |
for (int i = 0; i < data.Length; i ++) |
for (int i = 0; i < data.Length; i ++) |
285 |
{ |
{ |
286 |
uint addr = (uint)(start_address + i); |
uint addr = (uint)(start_address + i); |
287 |
byte data_to_write = data[i]; |
byte data_to_write = data[i]; |
288 |
reader.WriteProcessMemory((UIntPtr)addr, data_to_write, out bytesReadSize); |
provider.WriteProcessMemory(addr, data_to_write, out bytesReadSize); |
289 |
} |
} |
290 |
} |
} |
291 |
catch (Exception ex) { logger.Error.WriteLine("{0}.WriteCurrentBytes():{1}{2}", this.GetType().Name, System.Environment.NewLine, ex.ToString()); } |
catch (Exception ex) { logger.Error.WriteLine("{0}.WriteCurrentBytes():{1}{2}", this.GetType().Name, System.Environment.NewLine, ex.ToString()); } |