MCPcopy Create free account
hub / github.com/aixed/WeChat-Hook / ScanPattern

Function ScanPattern

xdb/SundaySearch.cpp:22–52  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20}
21
22size_t ScanPattern(HANDLE hProcess, BYTE* pattern, int pLen, std::vector<LPVOID>& results)
23{
24 const size_t MEM_SIZE = 0x1000;
25 BYTE mem[MEM_SIZE] = { 0 };
26 MEMORY_BASIC_INFORMATION mbi = { 0 };
27#ifndef _WIN64
28 for (size_t curAddress = 0x10000; curAddress < 0xFFFEFFFF; curAddress += mbi.RegionSize)
29#else
30 for (size_t curAddress = 0x10000; curAddress < 0x00007FFFFFFEFFFFULL; curAddress += mbi.RegionSize)
31#endif
32 {
33 VirtualQueryEx(hProcess, (void*)curAddress, &mbi, sizeof(MEMORY_BASIC_INFORMATION));
34#ifndef _WIN64
35 if ((int)mbi.RegionSize <= 0) break;
36#else
37 if ((long long)mbi.RegionSize <= 0) break;
38#endif
39 if (mbi.State != MEM_COMMIT) continue;
40 for (size_t memIndex = 0; memIndex < (size_t)mbi.RegionSize / MEM_SIZE; memIndex++)
41 {
42 size_t beginAddress = curAddress + memIndex * MEM_SIZE;
43 size_t numberOfRead = 0;
44 BOOL bRead = ReadProcessMemory(hProcess, (void*)(beginAddress), mem, MEM_SIZE, &numberOfRead);
45 std::vector<size_t> offsets;
46 size_t count = SundaySearch(mem, MEM_SIZE, pattern, pLen, offsets);
47 for(auto &offset : offsets)
48 results.push_back((LPVOID)(beginAddress + offset));
49 }
50 }
51 return results.size();
52}

Callers 1

db_mgr.cppFile · 0.85

Calls 2

SundaySearchFunction · 0.85
sizeMethod · 0.45

Tested by

no test coverage detected