Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 15b0886

Browse filesBrowse files
committed
Replaced BitConverter with EndianBitConverter.
1 parent c0f7e53 commit 15b0886
Copy full SHA for 15b0886
Expand file treeCollapse file tree

17 files changed

+149
-102
lines changed

‎ReClass.NET/Forms/MainForm.cs

Copy file name to clipboardExpand all lines: ReClass.NET/Forms/MainForm.cs
+14-12Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -588,17 +588,19 @@ private void searchForEqualValuesToolStripMenuItem_Click(object sender, EventArg
588588
return;
589589
}
590590

591+
var bitConverter = Program.RemoteProcess.BitConverter;
592+
591593
IScanComparer comparer;
592594
switch (selectedNode.Node)
593595
{
594596
case BaseHexNode node:
595597
comparer = new ArrayOfBytesMemoryComparer(node.ReadValueFromMemory(selectedNode.Memory));
596598
break;
597599
case FloatNode node:
598-
comparer = new FloatMemoryComparer(ScanCompareType.Equal, ScanRoundMode.Normal, 2, node.ReadValueFromMemory(selectedNode.Memory), 0.0f);
600+
comparer = new FloatMemoryComparer(ScanCompareType.Equal, ScanRoundMode.Normal, 2, node.ReadValueFromMemory(selectedNode.Memory), 0.0f, bitConverter);
599601
break;
600602
case DoubleNode node:
601-
comparer = new DoubleMemoryComparer(ScanCompareType.Equal, ScanRoundMode.Normal, 2, node.ReadValueFromMemory(selectedNode.Memory), 0.0);
603+
comparer = new DoubleMemoryComparer(ScanCompareType.Equal, ScanRoundMode.Normal, 2, node.ReadValueFromMemory(selectedNode.Memory), 0.0, bitConverter);
602604
break;
603605
case Int8Node node:
604606
comparer = new ByteMemoryComparer(ScanCompareType.Equal, (byte)node.ReadValueFromMemory(selectedNode.Memory), 0);
@@ -607,40 +609,40 @@ private void searchForEqualValuesToolStripMenuItem_Click(object sender, EventArg
607609
comparer = new ByteMemoryComparer(ScanCompareType.Equal, node.ReadValueFromMemory(selectedNode.Memory), 0);
608610
break;
609611
case Int16Node node:
610-
comparer = new ShortMemoryComparer(ScanCompareType.Equal, node.ReadValueFromMemory(selectedNode.Memory), 0);
612+
comparer = new ShortMemoryComparer(ScanCompareType.Equal, node.ReadValueFromMemory(selectedNode.Memory), 0, bitConverter);
611613
break;
612614
case UInt16Node node:
613-
comparer = new ShortMemoryComparer(ScanCompareType.Equal, (short)node.ReadValueFromMemory(selectedNode.Memory), 0);
615+
comparer = new ShortMemoryComparer(ScanCompareType.Equal, (short)node.ReadValueFromMemory(selectedNode.Memory), 0, bitConverter);
614616
break;
615617
case Int32Node node:
616-
comparer = new IntegerMemoryComparer(ScanCompareType.Equal, node.ReadValueFromMemory(selectedNode.Memory), 0);
618+
comparer = new IntegerMemoryComparer(ScanCompareType.Equal, node.ReadValueFromMemory(selectedNode.Memory), 0, bitConverter);
617619
break;
618620
case UInt32Node node:
619-
comparer = new IntegerMemoryComparer(ScanCompareType.Equal, (int)node.ReadValueFromMemory(selectedNode.Memory), 0);
621+
comparer = new IntegerMemoryComparer(ScanCompareType.Equal, (int)node.ReadValueFromMemory(selectedNode.Memory), 0, bitConverter);
620622
break;
621623
case Int64Node node:
622-
comparer = new LongMemoryComparer(ScanCompareType.Equal, node.ReadValueFromMemory(selectedNode.Memory), 0L);
624+
comparer = new LongMemoryComparer(ScanCompareType.Equal, node.ReadValueFromMemory(selectedNode.Memory), 0L, bitConverter);
623625
break;
624626
case UInt64Node node:
625-
comparer = new LongMemoryComparer(ScanCompareType.Equal, (long)node.ReadValueFromMemory(selectedNode.Memory), 0L);
627+
comparer = new LongMemoryComparer(ScanCompareType.Equal, (long)node.ReadValueFromMemory(selectedNode.Memory), 0L, bitConverter);
626628
break;
627629
case NIntNode node:
628630
{
629631
var value = node.ReadValueFromMemory(selectedNode.Memory);
630632
#if RECLASSNET64
631-
comparer = new LongMemoryComparer(ScanCompareType.Equal, value.ToInt64(), 0L);
633+
comparer = new LongMemoryComparer(ScanCompareType.Equal, value.ToInt64(), 0L, bitConverter);
632634
#else
633-
comparer = new IntegerMemoryComparer(ScanCompareType.Equal, value.ToInt32(), 0);
635+
comparer = new IntegerMemoryComparer(ScanCompareType.Equal, value.ToInt32(), 0, bitConverter);
634636
#endif
635637
break;
636638
}
637639
case NUIntNode node:
638640
{
639641
var value = node.ReadValueFromMemory(selectedNode.Memory);
640642
#if RECLASSNET64
641-
comparer = new LongMemoryComparer(ScanCompareType.Equal, (long)value.ToUInt64(), 0L);
643+
comparer = new LongMemoryComparer(ScanCompareType.Equal, (long)value.ToUInt64(), 0L, bitConverter);
642644
#else
643-
comparer = new IntegerMemoryComparer(ScanCompareType.Equal, (int)value.ToUInt32(), 0);
645+
comparer = new IntegerMemoryComparer(ScanCompareType.Equal, (int)value.ToUInt32(), 0, bitConverter);
644646
#endif
645647
break;
646648
}

‎ReClass.NET/Forms/ScannerForm.cs

Copy file name to clipboardExpand all lines: ReClass.NET/Forms/ScannerForm.cs
+5-5Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -758,11 +758,11 @@ private IScanComparer CreateComparer(ScanSettings settings)
758758
case ScanValueType.Byte:
759759
return new ByteMemoryComparer(compareType, (byte)value1, (byte)value2);
760760
case ScanValueType.Short:
761-
return new ShortMemoryComparer(compareType, (short)value1, (short)value2);
761+
return new ShortMemoryComparer(compareType, (short)value1, (short)value2, process.BitConverter);
762762
case ScanValueType.Integer:
763-
return new IntegerMemoryComparer(compareType, (int)value1, (int)value2);
763+
return new IntegerMemoryComparer(compareType, (int)value1, (int)value2, process.BitConverter);
764764
case ScanValueType.Long:
765-
return new LongMemoryComparer(compareType, value1, value2);
765+
return new LongMemoryComparer(compareType, value1, value2, process.BitConverter);
766766
}
767767
}
768768
else if (settings.ValueType == ScanValueType.Float || settings.ValueType == ScanValueType.Double)
@@ -806,9 +806,9 @@ int CalculateSignificantDigits(string input, NumberFormatInfo numberFormat)
806806
switch (settings.ValueType)
807807
{
808808
case ScanValueType.Float:
809-
return new FloatMemoryComparer(compareType, roundMode, significantDigits, (float)value1, (float)value2);
809+
return new FloatMemoryComparer(compareType, roundMode, significantDigits, (float)value1, (float)value2, process.BitConverter);
810810
case ScanValueType.Double:
811-
return new DoubleMemoryComparer(compareType, roundMode, significantDigits, value1, value2);
811+
return new DoubleMemoryComparer(compareType, roundMode, significantDigits, value1, value2, process.BitConverter);
812812
}
813813
}
814814
else if (settings.ValueType == ScanValueType.ArrayOfBytes)

‎ReClass.NET/Memory/IRemoteMemoryReader.cs

Copy file name to clipboardExpand all lines: ReClass.NET/Memory/IRemoteMemoryReader.cs
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
using System;
22
using System.Text;
3+
using ReClassNET.Util.Conversion;
34

45
namespace ReClassNET.Memory
56
{
67
public interface IRemoteMemoryReader
78
{
9+
EndianBitConverter BitConverter { get; set; }
10+
811
/// <summary>Reads remote memory from the address into the buffer.</summary>
912
/// <param name="address">The address to read from.</param>
1013
/// <param name="buffer">[out] The data buffer to fill. If the remote process is not valid, the buffer will get filled with zeros.</param>

‎ReClass.NET/Memory/IRemoteMemoryWriter.cs

Copy file name to clipboardExpand all lines: ReClass.NET/Memory/IRemoteMemoryWriter.cs
+4-1Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
using System;
1+
using System;
2+
using ReClassNET.Util.Conversion;
23

34
namespace ReClassNET.Memory
45
{
56
public interface IRemoteMemoryWriter
67
{
8+
EndianBitConverter BitConverter { get; set; }
9+
710
/// <summary>Writes the given <paramref name="data"/> to the <paramref name="address"/> in the remote process.</summary>
811
/// <param name="address">The address to write to.</param>
912
/// <param name="data">The data to write.</param>

‎ReClass.NET/Memory/MemoryBuffer.cs

Copy file name to clipboardExpand all lines: ReClass.NET/Memory/MemoryBuffer.cs
+12-15Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
using System;
22
using System.Diagnostics.Contracts;
3-
using System.Runtime.InteropServices;
43
using System.Text;
54
using ReClassNET.Extensions;
5+
using ReClassNET.Util.Conversion;
66

77
namespace ReClassNET.Memory
88
{
@@ -15,6 +15,8 @@ public class MemoryBuffer
1515

1616
public byte[] RawData => data;
1717

18+
public EndianBitConverter BitConverter { get; set; } = EndianBitConverter.System;
19+
1820
public int Size
1921
{
2022
get => data.Length;
@@ -52,25 +54,18 @@ public MemoryBuffer()
5254
historyData = Array.Empty<byte>();
5355
}
5456

55-
public MemoryBuffer(MemoryBuffer other)
56-
{
57-
Contract.Requires(other != null);
58-
Contract.Ensures(data != null);
59-
Contract.Ensures(historyData != null);
60-
61-
data = other.data;
62-
historyData = other.historyData;
63-
hasHistory = other.hasHistory;
64-
65-
ContainsValidData = other.ContainsValidData;
66-
}
67-
6857
public MemoryBuffer Clone()
6958
{
7059
Contract.Ensures(Contract.Result<MemoryBuffer>() != null);
7160

72-
return new MemoryBuffer(this)
61+
return new MemoryBuffer
7362
{
63+
data = data,
64+
historyData = historyData,
65+
hasHistory = hasHistory,
66+
67+
BitConverter = BitConverter,
68+
ContainsValidData = ContainsValidData,
7469
Offset = Offset
7570
};
7671
}
@@ -90,6 +85,8 @@ public void UpdateFrom(IRemoteMemoryReader reader, IntPtr address)
9085

9186
hasHistory = ContainsValidData;
9287

88+
BitConverter = reader.BitConverter;
89+
9390
ContainsValidData = reader.ReadRemoteMemoryIntoBuffer(address, ref data);
9491
if (!ContainsValidData)
9592
{

‎ReClass.NET/Memory/RemoteProcess.cs

Copy file name to clipboardExpand all lines: ReClass.NET/Memory/RemoteProcess.cs
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
using ReClassNET.MemoryScanner;
1414
using ReClassNET.Native;
1515
using ReClassNET.Symbols;
16+
using ReClassNET.Util.Conversion;
1617

1718
namespace ReClassNET.Memory
1819
{
@@ -56,6 +57,8 @@ public class RemoteProcess : IDisposable, IRemoteMemoryReader, IRemoteMemoryWrit
5657

5758
public SymbolStore Symbols => symbols;
5859

60+
public EndianBitConverter BitConverter { get; set; } = EndianBitConverter.System;
61+
5962
/// <summary>Gets a copy of the current modules list. This list may change if the remote process (un)loads a module.</summary>
6063
public IEnumerable<Module> Modules
6164
{

‎ReClass.NET/MemoryScanner/Comparer/DoubleMemoryComparer.cs

Copy file name to clipboardExpand all lines: ReClass.NET/MemoryScanner/Comparer/DoubleMemoryComparer.cs
+12-7Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Diagnostics;
33
using ReClassNET.Extensions;
4+
using ReClassNET.Util.Conversion;
45

56
namespace ReClassNET.MemoryScanner.Comparer
67
{
@@ -16,7 +17,9 @@ public class DoubleMemoryComparer : ISimpleScanComparer
1617
private readonly double minValue;
1718
private readonly double maxValue;
1819

19-
public DoubleMemoryComparer(ScanCompareType compareType, ScanRoundMode roundType, int significantDigits, double value1, double value2)
20+
private readonly EndianBitConverter bitConverter;
21+
22+
public DoubleMemoryComparer(ScanCompareType compareType, ScanRoundMode roundType, int significantDigits, double value1, double value2, EndianBitConverter bitConverter)
2023
{
2124
CompareType = compareType;
2225

@@ -29,11 +32,13 @@ public DoubleMemoryComparer(ScanCompareType compareType, ScanRoundMode roundType
2932

3033
minValue = value1 - 1.0 / factor;
3134
maxValue = value1 + 1.0 / factor;
35+
36+
this.bitConverter = bitConverter;
3237
}
3338

3439
private bool CheckRoundedEquality(double value) =>
3540
RoundType switch
36-
{
41+
{
3742
ScanRoundMode.Strict => Value1.IsNearlyEqual(Math.Round(value, significantDigits, MidpointRounding.AwayFromZero), 0.0001),
3843
ScanRoundMode.Normal => minValue < value && value < maxValue,
3944
ScanRoundMode.Truncate => (long)value == (long)Value1,
@@ -46,7 +51,7 @@ public bool Compare(byte[] data, int index, out ScanResult result)
4651
data,
4752
index,
4853
value => CompareType switch
49-
{
54+
{
5055
ScanCompareType.Equal => CheckRoundedEquality(value),
5156
ScanCompareType.NotEqual => !CheckRoundedEquality(value),
5257
ScanCompareType.GreaterThan => value > Value1,
@@ -60,7 +65,7 @@ public bool Compare(byte[] data, int index, out ScanResult result)
6065
},
6166
out result
6267
);
63-
}
68+
}
6469

6570
public bool Compare(byte[] data, int index, ScanResult previous, out ScanResult result)
6671
{
@@ -77,7 +82,7 @@ public bool Compare(byte[] data, int index, DoubleScanResult previous, out ScanR
7782
data,
7883
index,
7984
value => CompareType switch
80-
{
85+
{
8186
ScanCompareType.Equal => CheckRoundedEquality(value),
8287
ScanCompareType.NotEqual => !CheckRoundedEquality(value),
8388
ScanCompareType.Changed => value != previous.Value,
@@ -98,11 +103,11 @@ out result
98103
);
99104
}
100105

101-
private static bool CompareInternal(byte[] data, int index, Func<double, bool> matcher, out ScanResult result)
106+
private bool CompareInternal(byte[] data, int index, Func<double, bool> matcher, out ScanResult result)
102107
{
103108
result = null;
104109

105-
var value = BitConverter.ToDouble(data, index);
110+
var value = bitConverter.ToDouble(data, index);
106111

107112
if (!matcher(value))
108113
{

‎ReClass.NET/MemoryScanner/Comparer/FloatMemoryComparer.cs

Copy file name to clipboardExpand all lines: ReClass.NET/MemoryScanner/Comparer/FloatMemoryComparer.cs
+12-7Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Diagnostics;
33
using ReClassNET.Extensions;
4+
using ReClassNET.Util.Conversion;
45

56
namespace ReClassNET.MemoryScanner.Comparer
67
{
@@ -16,7 +17,9 @@ public class FloatMemoryComparer : ISimpleScanComparer
1617
private readonly float minValue;
1718
private readonly float maxValue;
1819

19-
public FloatMemoryComparer(ScanCompareType compareType, ScanRoundMode roundType, int significantDigits, float value1, float value2)
20+
private readonly EndianBitConverter bitConverter;
21+
22+
public FloatMemoryComparer(ScanCompareType compareType, ScanRoundMode roundType, int significantDigits, float value1, float value2, EndianBitConverter bitConverter)
2023
{
2124
CompareType = compareType;
2225

@@ -29,11 +32,13 @@ public FloatMemoryComparer(ScanCompareType compareType, ScanRoundMode roundType,
2932

3033
minValue = value1 - 1.0f / factor;
3134
maxValue = value1 + 1.0f / factor;
35+
36+
this.bitConverter = bitConverter;
3237
}
3338

3439
private bool CheckRoundedEquality(float value) =>
3540
RoundType switch
36-
{
41+
{
3742
ScanRoundMode.Strict => Value1.IsNearlyEqual((float)Math.Round(value, significantDigits, MidpointRounding.AwayFromZero), 0.0001f),
3843
ScanRoundMode.Normal => minValue < value && value < maxValue,
3944
ScanRoundMode.Truncate => (int)value == (int)Value1,
@@ -46,7 +51,7 @@ public bool Compare(byte[] data, int index, out ScanResult result)
4651
data,
4752
index,
4853
value => CompareType switch
49-
{
54+
{
5055
ScanCompareType.Equal => CheckRoundedEquality(value),
5156
ScanCompareType.NotEqual => !CheckRoundedEquality(value),
5257
ScanCompareType.GreaterThan => value > Value1,
@@ -60,7 +65,7 @@ public bool Compare(byte[] data, int index, out ScanResult result)
6065
},
6166
out result
6267
);
63-
}
68+
}
6469

6570
public bool Compare(byte[] data, int index, ScanResult previous, out ScanResult result)
6671
{
@@ -77,7 +82,7 @@ public bool Compare(byte[] data, int index, FloatScanResult previous, out ScanRe
7782
data,
7883
index,
7984
value => CompareType switch
80-
{
85+
{
8186
ScanCompareType.Equal => CheckRoundedEquality(value),
8287
ScanCompareType.NotEqual => !CheckRoundedEquality(value),
8388
ScanCompareType.Changed => value != previous.Value,
@@ -98,11 +103,11 @@ out result
98103
);
99104
}
100105

101-
private static bool CompareInternal(byte[] data, int index, Func<float, bool> matcher, out ScanResult result)
106+
private bool CompareInternal(byte[] data, int index, Func<float, bool> matcher, out ScanResult result)
102107
{
103108
result = null;
104109

105-
var value = BitConverter.ToSingle(data, index);
110+
var value = bitConverter.ToSingle(data, index);
106111

107112
if (!matcher(value))
108113
{

‎ReClass.NET/MemoryScanner/Comparer/IntegerMemoryComparer.cs

Copy file name to clipboardExpand all lines: ReClass.NET/MemoryScanner/Comparer/IntegerMemoryComparer.cs
+8-3Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Diagnostics;
3+
using ReClassNET.Util.Conversion;
34

45
namespace ReClassNET.MemoryScanner.Comparer
56
{
@@ -10,12 +11,16 @@ public class IntegerMemoryComparer : ISimpleScanComparer
1011
public int Value2 { get; }
1112
public int ValueSize => sizeof(int);
1213

13-
public IntegerMemoryComparer(ScanCompareType compareType, int value1, int value2)
14+
private readonly EndianBitConverter bitConverter;
15+
16+
public IntegerMemoryComparer(ScanCompareType compareType, int value1, int value2, EndianBitConverter bitConverter)
1417
{
1518
CompareType = compareType;
1619

1720
Value1 = value1;
1821
Value2 = value2;
22+
23+
this.bitConverter = bitConverter;
1924
}
2025

2126
public bool Compare(byte[] data, int index, out ScanResult result)
@@ -76,11 +81,11 @@ out result
7681
);
7782
}
7883

79-
private static bool CompareInternal(byte[] data, int index, Func<int, bool> matcher, out ScanResult result)
84+
private bool CompareInternal(byte[] data, int index, Func<int, bool> matcher, out ScanResult result)
8085
{
8186
result = null;
8287

83-
var value = BitConverter.ToInt32(data, index);
88+
var value = bitConverter.ToInt32(data, index);
8489

8590
if (!matcher(value))
8691
{

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.