返回提交历史
Modified
XFEExtension.NetCore.MemoryEditor/MemoryEditor.cs
+24
-6
Modified
XFEExtension.NetCore.MemoryEditor/ProcessType.cs
+9
-0
XFEstudio/XFEExtension.NetCore.MemoryEditor
修复数个问题,添加实例中解析基址的方法
ac93e2a
代码差异
2 个文件
+33
-6
@@ -22,6 +22,10 @@ public partial class MemoryEditor
22
22
/// </summary>
23
23
public nint ProcessHandle { get; set; }
24
24
/// <summary>
25
/// 进程位数类型(32/64)
26
/// </summary>
27
public ProcessType ProcessBiteType { get; set; }
28
/// <summary>
25
29
/// 读取指定地址的内存
26
30
/// </summary>
27
31
/// <typeparam name="T">目标类型(int,float,long等)</typeparam>
@@ -36,34 +40,48 @@ public partial class MemoryEditor
36
40
/// <param name="source">待写入值</param>
37
41
public void WriteMemory<T>(nint address, T source) where T : struct => WriteMemory<T>(ProcessHandle, address, source);
38
42
/// <summary>
43
/// 解析基址对应的实际地址
44
/// </summary>
45
/// <param name="moduleName">模块名称(基址的进程部分,可以是DLL等)</param>
46
/// <param name="baseAddress">基址的地址部分</param>
47
/// <param name="offsets">基址的偏移组</param>
48
/// <returns>实际地址</returns>
49
public nint ResolvePointerAddress(string moduleName, int baseAddress, params int[] offsets) => ResolvePointerAddress(TargetProcess.ProcessName, moduleName, baseAddress, ProcessBiteType, offsets);
50
/// <summary>
39
51
/// 内存编辑器
40
52
/// </summary>
41
/// <param name="process"></param>
53
/// <param name="process">进程</param>
54
/// <param name="processType">进程位数类型(32/64)</param>
42
55
/// <param name="processAccessFlags">进程访问权限</param>
43
public MemoryEditor(Process process, ProcessAccessFlags processAccessFlags = ProcessAccessFlags.All)
56
public MemoryEditor(Process process, ProcessType processType = ProcessType.Bit64, ProcessAccessFlags processAccessFlags = ProcessAccessFlags.All)
44
57
{
45
58
TargetProcess = process;
46
59
ProcessHandle = GetProcessHandle(TargetProcess.Id, processAccessFlags);
60
ProcessBiteType = processType;
47
61
}
48
62
/// <summary>
49
63
/// 内存编辑器
50
64
/// </summary>
51
/// <param name="processName"></param>
65
/// <param name="processName">进程名称</param>
66
/// <param name="processType">进程位数类型(32/64)</param>
52
67
/// <param name="processAccessFlags">进程访问权限</param>
53
public MemoryEditor(string processName, ProcessAccessFlags processAccessFlags = ProcessAccessFlags.All)
68
public MemoryEditor(string processName, ProcessType processType = ProcessType.Bit64, ProcessAccessFlags processAccessFlags = ProcessAccessFlags.All)
54
69
{
55
70
TargetProcess = Process.GetProcessesByName(processName).First();
56
71
ProcessHandle = GetProcessHandle(TargetProcess.Id, processAccessFlags);
72
ProcessBiteType = processType;
57
73
}
58
74
/// <summary>
59
75
/// 内存编辑器
60
76
/// </summary>
61
/// <param name="processId"></param>
77
/// <param name="processId">进程PID</param>
78
/// <param name="processType">进程位数类型(32/64)</param>
62
79
/// <param name="processAccessFlags">进程访问权限</param>
63
public MemoryEditor(int processId, ProcessAccessFlags processAccessFlags = ProcessAccessFlags.All)
80
public MemoryEditor(int processId, ProcessType processType = ProcessType.Bit64, ProcessAccessFlags processAccessFlags = ProcessAccessFlags.All)
64
81
{
65
82
TargetProcess = Process.GetProcessById(processId);
66
83
ProcessHandle = GetProcessHandle(TargetProcess.Id, processAccessFlags);
84
ProcessBiteType = processType;
67
85
}
68
86
#region 静态方法
69
87
/// <summary>
@@ -1,7 +1,16 @@
1
1
namespace XFEExtension.NetCore.MemoryEditor;
2
2
3
/// <summary>
4
/// 进程的操作系统类型
5
/// </summary>
3
6
public enum ProcessType
4
7
{
8
/// <summary>
9
/// 32位进程
10
/// </summary>
5
11
Bit32,
12
/// <summary>
13
/// 64位进程
14
/// </summary>
6
15
Bit64
7
16
}