XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension.NetCore.MemoryEditor

【DLL】内存读写工具/编辑器

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEExtension.NetCore.MemoryEditor

修复数个问题,添加实例中解析基址的方法

ac93e2a
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

2 个文件 +33 -6
Modified XFEExtension.NetCore.MemoryEditor/MemoryEditor.cs +24 -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>
Modified XFEExtension.NetCore.MemoryEditor/ProcessType.cs +9 -0
@@ -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 }