Skip to content

Commit a27862f

Browse files
committed
Rework the pattern finder
1 parent 67a1e43 commit a27862f

5 files changed

Lines changed: 644 additions & 194 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using System.Globalization;
2+
3+
namespace MemoryEditLib2.Helpers
4+
{
5+
public static class HexHelper
6+
{
7+
public static nint InvertHexString(string input)
8+
{
9+
var asArray = HexToBytes(input);
10+
Array.Reverse(asArray);
11+
var bytestring = ByteArrayToString(asArray);
12+
return new nint(long.Parse(bytestring, NumberStyles.HexNumber));
13+
}
14+
15+
private static string ByteArrayToString(byte[] ba, string seperator = "")
16+
{
17+
return BitConverter.ToString(ba).Replace("-", seperator);
18+
}
19+
20+
private static byte[] HexToBytes(string input)
21+
{
22+
var outputLength = input.Length / 2;
23+
var output = new byte[outputLength];
24+
using (var sr = new StringReader(input))
25+
{
26+
for (var i = 0; i < outputLength; i++)
27+
output[i] = Convert.ToByte(new string(new[] { (char)sr.Read(), (char)sr.Read() }), 16);
28+
}
29+
30+
return output;
31+
}
32+
}
33+
}

MemoryEditLib2/IPatternFinder.cs

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,26 @@ namespace MemoryEditLib2
44
{
55
public interface IPatternFinder
66
{
7-
IntPtr GetAddressForString(string text, Encoding encoding, ulong minAddr = 0, ulong maxAddr = 0);
8-
List<IntPtr> GetAddressesForString(string text, Encoding encoding, int minAddr = 0);
9-
IntPtr GetAddressForStringInModule(string moduleName, string text, Encoding encoding, long maxBufferSize = -1, long offsetAddress = 0);
10-
IntPtr GetAddressForPattern(string pattern, ulong minAddr = 0, ulong maxAddr = 0);
11-
unsafe IntPtr GetAddressForPatternWithWildcards(string pattern, ulong minAddr = 0);
12-
unsafe IntPtr GetAddressForPattern(byte[] pattern, ulong minAddr = 0, ulong maxAddr = 0);
13-
IntPtr GetAddressForPatternInModule(string moduleName, string pattern, long maxBufferSize = -1, long offsetAddress = 0);
14-
IntPtr GetAddressForPatternInModule(string moduleName, byte[] pattern, long maxBufferSize = -1, long offsetAddress = 0);
15-
IntPtr GetAddressForPatternInModuleWithWildcards(string moduleName, string pattern, long maxBufferSize = -1, long offsetAddress = 0);
16-
List<IntPtr> GetAddressesForPattern(string pattern, int minAddr = 0);
17-
unsafe List<IntPtr> GetAddressesForPattern(byte[] pattern, int minAddr = 0);
7+
IntPtr GetAddressForAddress(nint address, nint minAddr = 0, nint maxAddr = 0);
8+
IntPtr GetAddressForString(string text, Encoding encoding, nint minAddr = 0, nint maxAddr = 0);
9+
List<IntPtr> GetAddressesForString(string text, Encoding encoding, nint minAddr = 0, nint maxAddr = 0);
10+
IntPtr GetAddressForPattern(string pattern, nint minAddr = 0, nint maxAddr = 0);
11+
unsafe IntPtr GetAddressForPatternWithWildcards(string pattern, nint minAddr = 0, nint maxAddr = 0);
12+
unsafe IntPtr GetAddressForPattern(byte[] pattern, nint minAddr = 0, nint maxAddr = 0);
13+
List<IntPtr> GetAddressesForPattern(string pattern, nint minAddr = 0, nint maxAddr = 0);
14+
unsafe List<IntPtr> GetAddressesForPattern(byte[] pattern, nint minAddr = 0, nint maxAddr = 0);
15+
16+
//IntPtr GetAddressForStringInModule_Legacy(string moduleName, string text, Encoding encoding, long maxBufferSize = -1, nint offsetAddress = 0);
17+
//IntPtr GetAddressForPatternInModule_Legacy(string moduleName, string pattern, long maxBufferSize = -1, nint offsetAddress = 0);
18+
//IntPtr GetAddressForPatternInModule_Legacy(string moduleName, byte[] pattern, long maxBufferSize = -1, nint offsetAddress = 0);
19+
//IntPtr GetAddressForPatternInModuleWithWildcards_Legacy(string moduleName, string pattern, long maxBufferSize = -1, nint offsetAddress = 0);
20+
21+
IntPtr GetAddressForAddressInModule(string moduleName, nint address);
22+
IntPtr GetAddressForStringInModule(string moduleName, string text, Encoding encoding);
23+
IntPtr GetAddressForPatternInModule(string moduleName, string pattern);
24+
IntPtr GetAddressForPatternInModule(string moduleName, byte[] pattern);
25+
IntPtr GetAddressForPatternInModuleWithWildcards(string moduleName, string pattern);
26+
27+
IntPtr GetModuleBaseAddress(string moduleName);
1828
}
1929
}

MemoryEditLib2/MemoryEditLib2.csproj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@
99
<Authors>LEaN</Authors>
1010
<Description>Read, Pattern Search, Edit Process Memory</Description>
1111
<Copyright>LEaN</Copyright>
12-
<Version>1.2.3</Version>
12+
<Version>2.0.0</Version>
1313
<RepositoryUrl>https://github.com/leanleon93/MemoryEditLib2</RepositoryUrl>
1414
<RepositoryType>git</RepositoryType>
1515
<NeutralLanguage>en</NeutralLanguage>
1616
</PropertyGroup>
1717

18+
<ItemGroup>
19+
<Compile Remove="Windows\WindowsPatternFinder_Legacy.cs" />
20+
</ItemGroup>
21+
1822
</Project>

0 commit comments

Comments
 (0)