Skip to content

Commit d766afc

Browse files
committed
Merge branch 'MemorySearcher'
2 parents 6880b7d + 336774a commit d766afc

96 files changed

Lines changed: 6505 additions & 1081 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

AddressParser/TokenReader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public List<Token> Read(string formula)
7070

7171
if (long.TryParse(buffer, NumberStyles.HexNumber, null, out var offsetValue))
7272
{
73-
#if WIN64
73+
#if RECLASSNET64
7474
var address = (IntPtr)offsetValue;
7575
#else
7676
var address = (IntPtr)unchecked((int)offsetValue);

Constants.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ internal class Constants
1414

1515
public const string PluginUrl = "https://github.com/KN4CK3R/ReClass.NET#plugins";
1616

17-
#if WIN64
17+
#if RECLASSNET64
1818
public const string Platform = "x64";
1919

2020
public const string StringHexFormat = "X016";

Core/CoreFunctionsManager.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,13 @@ public void EnumerateProcesses(Action<ProcessInfo> callbackProcess)
9898
currentFunctions.EnumerateProcesses(c);
9999
}
100100

101+
public IList<ProcessInfo> EnumerateProcesses()
102+
{
103+
var processes = new List<ProcessInfo>();
104+
EnumerateProcesses(processes.Add);
105+
return processes;
106+
}
107+
101108
public void EnumerateRemoteSectionsAndModules(IntPtr process, Action<Section> callbackSection, Action<Module> callbackModule)
102109
{
103110
var c1 = callbackSection == null ? null : (EnumerateRemoteSectionCallback)delegate (ref EnumerateRemoteSectionData data)
@@ -131,6 +138,14 @@ public void EnumerateRemoteSectionsAndModules(IntPtr process, Action<Section> ca
131138
currentFunctions.EnumerateRemoteSectionsAndModules(process, c1, c2);
132139
}
133140

141+
public void EnumerateRemoteSectionsAndModules(IntPtr process, out List<Section> sections, out List<Module> modules)
142+
{
143+
sections = new List<Section>();
144+
modules = new List<Module>();
145+
146+
EnumerateRemoteSectionsAndModules(process, sections.Add, modules.Add);
147+
}
148+
134149
public IntPtr OpenRemoteProcess(IntPtr pid, ProcessAccess desiredAccess)
135150
{
136151
return currentFunctions.OpenRemoteProcess(pid, desiredAccess);

DataExchange/CustomNodeConverter.cs renamed to DataExchange/ReClass/CustomNodeConverter.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
using ReClassNET.Logger;
77
using ReClassNET.Nodes;
88

9-
namespace ReClassNET.DataExchange
9+
namespace ReClassNET.DataExchange.ReClass
1010
{
11-
[ContractClass(typeof(ICustomNodeConverterContract))]
11+
[ContractClass(typeof(CustomNodeConverterContract))]
1212
public interface ICustomNodeConverter
1313
{
1414
/// <summary>Determine if the instance can handle the xml element.</summary>
@@ -38,7 +38,7 @@ public interface ICustomNodeConverter
3838
}
3939

4040
[ContractClassFor(typeof(ICustomNodeConverter))]
41-
internal abstract class ICustomNodeConverterContract : ICustomNodeConverter
41+
internal abstract class CustomNodeConverterContract : ICustomNodeConverter
4242
{
4343
public bool CanHandleElement(XElement element)
4444
{
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
using System.IO;
33
using ReClassNET.Logger;
44

5-
namespace ReClassNET.DataExchange
5+
namespace ReClassNET.DataExchange.ReClass
66
{
7-
[ContractClass(typeof(IReClassExportContract))]
7+
[ContractClass(typeof(ReClassExportContract))]
88
public interface IReClassExport
99
{
1010
void Save(string filePath, ILogger logger);
@@ -13,7 +13,7 @@ public interface IReClassExport
1313
}
1414

1515
[ContractClassFor(typeof(IReClassExport))]
16-
internal abstract class IReClassExportContract : IReClassExport
16+
internal abstract class ReClassExportContract : IReClassExport
1717
{
1818
public void Save(string filePath, ILogger logger)
1919
{
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22
using System.Diagnostics.Contracts;
33
using ReClassNET.Logger;
44

5-
namespace ReClassNET.DataExchange
5+
namespace ReClassNET.DataExchange.ReClass
66
{
7-
[ContractClass(typeof(IReClassImportContract))]
7+
[ContractClass(typeof(ReClassImportContract))]
88
public interface IReClassImport
99
{
1010
void Load(string filePath, ILogger logger);
1111
}
1212

1313
[ContractClassFor(typeof(IReClassImport))]
14-
internal abstract class IReClassImportContract : IReClassImport
14+
internal abstract class ReClassImportContract : IReClassImport
1515
{
1616
public void Load(string filePath, ILogger logger)
1717
{
Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@
88
using ReClassNET.Nodes;
99
using ReClassNET.Util;
1010

11-
namespace ReClassNET.DataExchange
11+
namespace ReClassNET.DataExchange.ReClass
1212
{
13-
class ReClass2007File : IReClassImport
13+
public class ReClass2007File : IReClassImport
1414
{
1515
public const string FormatName = "ReClass 2007 File";
1616
public const string FileExtension = ".rdc";
1717

18-
private static readonly Type[] TypeMap = {
18+
private static readonly Type[] typeMap =
19+
{
1920
null,
2021
typeof(ClassInstanceNode),
2122
typeof(ClassNode),
@@ -120,10 +121,10 @@ private IEnumerable<BaseNode> ReadNodeRows(IEnumerable<DataRow> rows, ClassNode
120121
{
121122
Type nodeType = null;
122123

123-
int typeVal = Convert.ToInt32(row["type"]);
124-
if (typeVal >= 0 && typeVal < TypeMap.Length)
124+
var typeVal = Convert.ToInt32(row["type"]);
125+
if (typeVal >= 0 && typeVal < typeMap.Length)
125126
{
126-
nodeType = TypeMap[typeVal];
127+
nodeType = typeMap[typeVal];
127128
}
128129

129130
if (nodeType == null)
@@ -145,8 +146,7 @@ private IEnumerable<BaseNode> ReadNodeRows(IEnumerable<DataRow> rows, ClassNode
145146
node.Name = Convert.ToString(row["variable"]);
146147
node.Comment = Convert.ToString(row["comment"]);
147148

148-
var referenceNode = node as BaseReferenceNode;
149-
if (referenceNode != null)
149+
if (node is BaseReferenceNode referenceNode)
150150
{
151151
var reference = Convert.ToInt32(row["ref"]);
152152
if (!classes.ContainsKey(reference))
@@ -174,8 +174,7 @@ private IEnumerable<BaseNode> ReadNodeRows(IEnumerable<DataRow> rows, ClassNode
174174

175175
referenceNode.ChangeInnerNode(innerClassNode);
176176
}
177-
var textNode = node as BaseTextNode;
178-
if (textNode != null)
177+
if (node is BaseTextNode textNode)
179178
{
180179
textNode.Length = Math.Max(IntPtr.Size, Convert.ToInt32(row["length"]));
181180
}
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
using ReClassNET.Logger;
77
using ReClassNET.Nodes;
88

9-
namespace ReClassNET.DataExchange
9+
namespace ReClassNET.DataExchange.ReClass
1010
{
1111
public class ReClassClipboard
1212
{
@@ -47,8 +47,7 @@ public static Tuple<List<ClassNode>, List<BaseNode>> Paste(ReClassNetProject tem
4747

4848
if (ContainsNodes)
4949
{
50-
var data = Clipboard.GetData(ClipboardFormat) as byte[];
51-
if (data != null)
50+
if (Clipboard.GetData(ClipboardFormat) is byte[] data)
5251
{
5352
using (var ms = new MemoryStream(data))
5453
{
Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
using ReClassNET.UI;
1010
using ReClassNET.Util;
1111

12-
namespace ReClassNET.DataExchange
12+
namespace ReClassNET.DataExchange.ReClass
1313
{
14-
class ReClassFile : IReClassImport
14+
public class ReClassFile : IReClassImport
1515
{
1616
public const string FormatName = "ReClass File";
1717
public const string FileExtension = ".reclass";
@@ -35,28 +35,25 @@ public void Load(string filePath, ILogger logger)
3535

3636
Type[] typeMap = null;
3737

38-
var versionComment = document.Root.FirstNode as XComment;
39-
if (versionComment != null)
38+
if (document.Root.FirstNode is XComment versionComment)
4039
{
4140
switch (versionComment.Value.Substring(0, 12).ToLower())
4241
{
4342
case "reclass 2011":
4443
case "reclass 2013":
45-
typeMap = TypeMap2013;
44+
typeMap = typeMap2013;
4645
break;
4746
case "reclass 2015":
4847
case "reclass 2016":
49-
typeMap = TypeMap2016;
48+
typeMap = typeMap2016;
5049
break;
51-
}
52-
}
53-
54-
if (typeMap == null)
55-
{
56-
logger.Log(LogLevel.Warning, $"Unknown file version: {versionComment?.Value}");
57-
logger.Log(LogLevel.Warning, "Defaulting to ReClass 2016.");
50+
default:
51+
logger.Log(LogLevel.Warning, $"Unknown file version: {versionComment.Value}");
52+
logger.Log(LogLevel.Warning, "Defaulting to ReClass 2016.");
5853

59-
typeMap = TypeMap2016;
54+
typeMap = typeMap2016;
55+
break;
56+
}
6057
}
6158

6259
var classes = new List<Tuple<XElement, ClassNode>>();
@@ -92,19 +89,22 @@ public void Load(string filePath, ILogger logger)
9289
/// <summary>Parse ReClass address string and transform it into a ReClass.NET formula.</summary>
9390
/// <param name="address">The address string.</param>
9491
/// <returns>A string.</returns>
95-
private string TransformAddressString(string address)
92+
private static string TransformAddressString(string address)
9693
{
9794
Contract.Requires(address != null);
9895

99-
var parts = address.Split('+').Select(s => s.Trim().ToLower().Replace("\"", string.Empty)).Where(s => s != string.Empty).ToArray();
96+
var parts = address.Split('+')
97+
.Select(s => s.Trim().ToLower().Replace("\"", string.Empty))
98+
.Where(s => s != string.Empty)
99+
.ToArray();
100100

101-
for (int i = 0; i < parts.Length; ++i)
101+
for (var i = 0; i < parts.Length; ++i)
102102
{
103103
var part = parts[i];
104104

105-
bool isModule = part.Contains(".exe") || part.Contains(".dll");
105+
var isModule = part.Contains(".exe") || part.Contains(".dll");
106106

107-
bool isPointer = false;
107+
var isPointer = false;
108108
if (part.StartsWith("*"))
109109
{
110110
isPointer = true;
@@ -173,7 +173,7 @@ private IEnumerable<BaseNode> ReadNodeElements(IEnumerable<XElement> elements, C
173173
while (size != 0)
174174
{
175175
BaseNode paddingNode;
176-
#if WIN64
176+
#if RECLASSNET64
177177
if (size >= 8)
178178
{
179179
paddingNode = new Hex64Node();
@@ -203,8 +203,7 @@ private IEnumerable<BaseNode> ReadNodeElements(IEnumerable<XElement> elements, C
203203
continue;
204204
}
205205

206-
var referenceNode = node as BaseReferenceNode;
207-
if (referenceNode != null)
206+
if (node is BaseReferenceNode referenceNode)
208207
{
209208
string reference;
210209
if (referenceNode is ClassInstanceArrayNode)
@@ -306,7 +305,7 @@ public override Size Draw(ViewInfo view, int x, int y)
306305

307306
#region ReClass 2011 / ReClass 2013
308307

309-
private static readonly Type[] TypeMap2013 = new Type[]
308+
private static readonly Type[] typeMap2013 = new Type[]
310309
{
311310
null,
312311
typeof(ClassInstanceNode),
@@ -345,7 +344,7 @@ public override Size Draw(ViewInfo view, int x, int y)
345344

346345
#region ReClass 2015 / ReClass 2016
347346

348-
private static readonly Type[] TypeMap2016 = new Type[]
347+
private static readonly Type[] typeMap2016 = new Type[]
349348
{
350349
null,
351350
typeof(ClassInstanceNode),

DataExchange/ReClassNetFile.Read.cs renamed to DataExchange/ReClass/ReClassNetFile.Read.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
using ReClassNET.Nodes;
1010
using ReClassNET.Util;
1111

12-
namespace ReClassNET.DataExchange
12+
namespace ReClassNET.DataExchange.ReClass
1313
{
1414
public partial class ReClassNetFile
1515
{
@@ -36,7 +36,7 @@ public void Load(Stream input, ILogger logger)
3636
using (var entryStream = dataEntry.Open())
3737
{
3838
var document = XDocument.Load(entryStream);
39-
if (document.Root == null)
39+
if (document.Root?.Element(XmlClassesElement) == null)
4040
{
4141
logger.Log(LogLevel.Error, "File has not the correct format.");
4242
return;
@@ -104,7 +104,7 @@ private IEnumerable<BaseNode> ReadNodeElements(IEnumerable<XElement> elements, C
104104
continue;
105105
}
106106

107-
if (!BuildInStringToTypeMap.TryGetValue(element.Attribute(XmlTypeAttribute)?.Value ?? string.Empty, out var nodeType))
107+
if (!buildInStringToTypeMap.TryGetValue(element.Attribute(XmlTypeAttribute)?.Value ?? string.Empty, out var nodeType))
108108
{
109109
logger.Log(LogLevel.Error, $"Skipping node with unknown type: {element.Attribute(XmlTypeAttribute)?.Value}");
110110
logger.Log(LogLevel.Warning, element.ToString());
@@ -123,8 +123,7 @@ private IEnumerable<BaseNode> ReadNodeElements(IEnumerable<XElement> elements, C
123123
node.Name = element.Attribute(XmlNameAttribute)?.Value ?? string.Empty;
124124
node.Comment = element.Attribute(XmlCommentAttribute)?.Value ?? string.Empty;
125125

126-
var referenceNode = node as BaseReferenceNode;
127-
if (referenceNode != null)
126+
if (node is BaseReferenceNode referenceNode)
128127
{
129128
var reference = NodeUuid.FromBase64String(element.Attribute(XmlReferenceAttribute)?.Value, false);
130129
if (!project.ContainsClass(reference))

0 commit comments

Comments
 (0)