Skip to content

Commit 1113096

Browse files
committed
Moved NativeHelper to own namespace.
1 parent 5575016 commit 1113096

File tree

11 files changed

+123
-95
lines changed

11 files changed

+123
-95
lines changed

Forms/MainForm.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using ReClassNET.DataExchange;
1212
using ReClassNET.Logger;
1313
using ReClassNET.Memory;
14+
using ReClassNET.Native;
1415
using ReClassNET.Nodes;
1516
using ReClassNET.Plugins;
1617
using ReClassNET.UI;

Forms/PluginForm.cs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Linq;
77
using System.Windows.Forms;
88
using ReClassNET.Memory;
9+
using ReClassNET.Native;
910
using ReClassNET.Plugins;
1011
using ReClassNET.UI;
1112

@@ -54,15 +55,15 @@ internal PluginForm(PluginManager pluginManager, NativeHelper nativeHelper)
5455

5556
// Native Methods Tab
5657

57-
FillComboBox(enumerateProcessesComboBox, NativeHelper.RequestFunction.EnumerateProcesses);
58-
FillComboBox(enumerateRemoteSectionsAndModulesComboBox, NativeHelper.RequestFunction.EnumerateRemoteSectionsAndModules);
59-
FillComboBox(isProcessValidComboBox, NativeHelper.RequestFunction.IsProcessValid);
60-
FillComboBox(openRemoteProcessComboBox, NativeHelper.RequestFunction.OpenRemoteProcess);
61-
FillComboBox(closeRemoteProcessComboBox, NativeHelper.RequestFunction.CloseRemoteProcess);
62-
FillComboBox(readRemoteMemoryComboBox, NativeHelper.RequestFunction.ReadRemoteMemory);
63-
FillComboBox(writeRemoteMemoryComboBox, NativeHelper.RequestFunction.WriteRemoteMemory);
64-
FillComboBox(disassembleRemoteCodeComboBox, NativeHelper.RequestFunction.DisassembleCode);
65-
FillComboBox(controlRemoteProcessComboBox, NativeHelper.RequestFunction.ControlRemoteProcess);
58+
FillComboBox(enumerateProcessesComboBox, RequestFunction.EnumerateProcesses);
59+
FillComboBox(enumerateRemoteSectionsAndModulesComboBox, RequestFunction.EnumerateRemoteSectionsAndModules);
60+
FillComboBox(isProcessValidComboBox, RequestFunction.IsProcessValid);
61+
FillComboBox(openRemoteProcessComboBox, RequestFunction.OpenRemoteProcess);
62+
FillComboBox(closeRemoteProcessComboBox, RequestFunction.CloseRemoteProcess);
63+
FillComboBox(readRemoteMemoryComboBox, RequestFunction.ReadRemoteMemory);
64+
FillComboBox(writeRemoteMemoryComboBox, RequestFunction.WriteRemoteMemory);
65+
FillComboBox(disassembleRemoteCodeComboBox, RequestFunction.DisassembleCode);
66+
FillComboBox(controlRemoteProcessComboBox, RequestFunction.ControlRemoteProcess);
6667

6768
setAllComboBox.DisplayMember = nameof(NativeHelper.MethodInfo.Provider);
6869
setAllComboBox.DataSource = nativeHelper.MethodRegistry.Values
@@ -148,7 +149,7 @@ private void getMoreLinkLabel_LinkClicked(object sender, LinkLabelLinkClickedEve
148149

149150
#endregion
150151

151-
private void FillComboBox(ComboBox cb, NativeHelper.RequestFunction method)
152+
private void FillComboBox(ComboBox cb, RequestFunction method)
152153
{
153154
Contract.Requires(cb != null);
154155

Forms/ProcessBrowserForm.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Linq;
77
using System.Windows.Forms;
88
using ReClassNET.Memory;
9+
using ReClassNET.Native;
910
using ReClassNET.UI;
1011

1112
namespace ReClassNET.Forms
@@ -115,7 +116,7 @@ private void RefreshProcessList()
115116
dt.Columns.Add("id", typeof(IntPtr));
116117
dt.Columns.Add("path", typeof(string));
117118

118-
nativeHelper.EnumerateProcesses(delegate (ref NativeHelper.EnumerateProcessData data)
119+
nativeHelper.EnumerateProcesses(delegate (ref EnumerateProcessData data)
119120
{
120121
var moduleName = Path.GetFileName(data.Path);
121122
if (!filterCheckBox.Checked || !CommonProcesses.Contains(moduleName.ToLower()))

Memory/Disassembler.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Diagnostics.Contracts;
44
using System.Runtime.InteropServices;
5+
using ReClassNET.Native;
56
using ReClassNET.Util;
67

78
namespace ReClassNET.Memory
@@ -23,7 +24,7 @@ public List<DisassembledInstruction> DisassembleRemoteCode(RemoteProcess process
2324
var end = eip + length;
2425
var virtualAddress = address;
2526

26-
var instruction = new NativeHelper.InstructionData();
27+
var instruction = new InstructionData();
2728
while (true)
2829
{
2930
if (!process.NativeHelper.DisassembleCode(eip, end.Sub(eip).ToInt32(), virtualAddress, out instruction))

Memory/ProcessInfo.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Diagnostics.Contracts;
3+
using ReClassNET.Native;
34
using ReClassNET.Util;
45

56
namespace ReClassNET.Memory

Memory/RemoteProcess.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using System.Threading;
99
using System.Threading.Tasks;
1010
using ReClassNET.AddressParser;
11+
using ReClassNET.Native;
1112
using ReClassNET.Symbols;
1213
using ReClassNET.Util;
1314

Native/NativeDataExchange.cs

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Runtime.InteropServices;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using ReClassNET.Memory;
8+
9+
namespace ReClassNET.Native
10+
{
11+
#region Enums
12+
13+
public enum RequestFunction
14+
{
15+
IsProcessValid,
16+
OpenRemoteProcess,
17+
CloseRemoteProcess,
18+
ReadRemoteMemory,
19+
WriteRemoteMemory,
20+
EnumerateProcesses,
21+
EnumerateRemoteSectionsAndModules,
22+
DisassembleCode,
23+
ControlRemoteProcess
24+
}
25+
26+
public enum ProcessAccess
27+
{
28+
Read,
29+
Write,
30+
Full
31+
};
32+
33+
public enum ControlRemoteProcessAction
34+
{
35+
Suspend,
36+
Resume,
37+
Terminate
38+
}
39+
40+
#endregion
41+
42+
#region Structs
43+
44+
/// <summary>Used by <see cref="NativeHelper.EnumerateProcesses(NativeHelper.EnumerateProcessCallback)"/>.</summary>
45+
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
46+
public struct EnumerateProcessData
47+
{
48+
public IntPtr Id;
49+
50+
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
51+
public string Path;
52+
};
53+
54+
/// <summary>Used by <see cref="NativeHelper.EnumerateRemoteSectionsAndModules(IntPtr, NativeHelper.EnumerateRemoteSectionCallback, NativeHelper.EnumerateRemoteModuleCallback)"/>.</summary>
55+
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
56+
public struct EnumerateRemoteSectionData
57+
{
58+
public IntPtr BaseAddress;
59+
60+
public IntPtr Size;
61+
62+
public SectionType Type;
63+
64+
public SectionProtection Protection;
65+
66+
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
67+
public string Name;
68+
69+
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
70+
public string ModulePath;
71+
}
72+
73+
/// <summary>Used by <see cref="NativeHelper.EnumerateRemoteSectionsAndModules(IntPtr, NativeHelper.EnumerateRemoteSectionCallback, NativeHelper.EnumerateRemoteModuleCallback)"/>.</summary>
74+
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
75+
public struct EnumerateRemoteModuleData
76+
{
77+
public IntPtr BaseAddress;
78+
79+
public IntPtr Size;
80+
81+
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
82+
public string Path;
83+
}
84+
85+
/// <summary>Used by <see cref="NativeHelper.DisassembleCode(IntPtr, int, IntPtr, out InstructionData)"/>.</summary>
86+
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
87+
public struct InstructionData
88+
{
89+
public int Length;
90+
91+
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
92+
public string Instruction;
93+
};
94+
95+
#endregion
96+
}
Lines changed: 4 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -4,41 +4,15 @@
44
using System.IO;
55
using System.Linq;
66
using System.Runtime.InteropServices;
7+
using ReClassNET.Memory;
78
using ReClassNET.Util;
89

9-
namespace ReClassNET.Memory
10+
namespace ReClassNET.Native
1011
{
11-
public enum ProcessAccess
12-
{
13-
Read,
14-
Write,
15-
Full
16-
};
17-
18-
public enum ControlRemoteProcessAction
19-
{
20-
Suspend,
21-
Resume,
22-
Terminate
23-
}
24-
2512
public class NativeHelper : IDisposable
2613
{
2714
private const string NativeHelperDll = "NativeHelper.dll";
2815

29-
public enum RequestFunction
30-
{
31-
IsProcessValid,
32-
OpenRemoteProcess,
33-
CloseRemoteProcess,
34-
ReadRemoteMemory,
35-
WriteRemoteMemory,
36-
EnumerateProcesses,
37-
EnumerateRemoteSectionsAndModules,
38-
DisassembleCode,
39-
ControlRemoteProcess
40-
}
41-
4216
public class MethodInfo
4317
{
4418
public RequestFunction Method { get; set; }
@@ -75,37 +49,6 @@ public T GetDelegate<T>()
7549
public delegate bool EnumerateProcessCallback(ref EnumerateProcessData data);
7650
private delegate void EnumerateProcessesDelegate(EnumerateProcessCallback callbackProcess);
7751

78-
79-
80-
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
81-
public struct EnumerateRemoteSectionData
82-
{
83-
public IntPtr BaseAddress;
84-
85-
public IntPtr Size;
86-
87-
public SectionType Type;
88-
89-
public SectionProtection Protection;
90-
91-
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
92-
public string Name;
93-
94-
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
95-
public string ModulePath;
96-
}
97-
98-
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
99-
public struct EnumerateRemoteModuleData
100-
{
101-
public IntPtr BaseAddress;
102-
103-
public IntPtr Size;
104-
105-
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
106-
public string Path;
107-
}
108-
10952
public delegate void EnumerateRemoteSectionCallback(ref EnumerateRemoteSectionData data);
11053
public delegate void EnumerateRemoteModuleCallback(ref EnumerateRemoteModuleData data);
11154
private delegate void EnumerateRemoteSectionsAndModulesDelegate(IntPtr process, EnumerateRemoteSectionCallback callbackSection, EnumerateRemoteModuleCallback callbackModule);
@@ -114,8 +57,6 @@ public struct EnumerateRemoteModuleData
11457

11558
private delegate void ControlRemoteProcessDelegate(IntPtr process, ControlRemoteProcessAction action);
11659

117-
#endregion
118-
11960
private IntPtr fnIsProcessValid;
12061
private IsProcessValidDelegate isProcessValidDelegate;
12162
private IntPtr fnOpenRemoteProcess;
@@ -137,6 +78,8 @@ public struct EnumerateRemoteModuleData
13778

13879
private readonly RequestFunctionPtrCallback requestFunctionPtrReference;
13980

81+
#endregion
82+
14083
private bool disposedValue = false;
14184

14285
public NativeHelper()
@@ -374,15 +317,6 @@ public bool WriteRemoteMemory(IntPtr process, IntPtr address, byte[] buffer, int
374317
return result;
375318
}
376319

377-
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
378-
public struct EnumerateProcessData
379-
{
380-
public IntPtr Id;
381-
382-
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
383-
public string Path;
384-
};
385-
386320
public void EnumerateProcesses(EnumerateProcessCallback callbackProcess)
387321
{
388322
enumerateProcessesDelegate(callbackProcess);
@@ -440,15 +374,6 @@ public void EnumerateRemoteSectionsAndModules(IntPtr process, Action<Section> ca
440374
EnumerateRemoteSectionsAndModules(process, c1, c2);
441375
}
442376

443-
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
444-
public struct InstructionData
445-
{
446-
public int Length;
447-
448-
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
449-
public string Instruction;
450-
};
451-
452377
public bool DisassembleCode(IntPtr address, int length, IntPtr virtualAddress, out InstructionData instruction)
453378
{
454379
return disassembleCodeDelegate(address, (IntPtr)length, virtualAddress, out instruction);

Plugins/PluginManager.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
using System.Diagnostics.Contracts;
66
using System.IO;
77
using System.Runtime.InteropServices;
8-
using ReClassNET.Memory;
9-
using ReClassNET.Util;
108
using ReClassNET.Logger;
9+
using ReClassNET.Native;
10+
using ReClassNET.Util;
1111

1212
namespace ReClassNET.Plugins
1313
{

Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
using Microsoft.SqlServer.MessageBox;
66
using ReClassNET.Forms;
77
using ReClassNET.Logger;
8-
using ReClassNET.Memory;
8+
using ReClassNET.Native;
99
using ReClassNET.UI;
1010
using ReClassNET.Util;
1111

0 commit comments

Comments
 (0)