Я хочу сопоставить некоторые строки из памяти процесса блокнота, но у меня нет успеха.
Вот код:
int bytes_to_read = (int)info.RegionSize;
char *buffer;
buffer = (char*)malloc(bytes_to_read+1);
ReadProcessMemory(hProcess, info.BaseAddress, buffer, bytes_to_read, NULL);
const char *t1re = ";\\d{0,19}";
regex ret1(t1re);
cmatch match;
if(regex_search(buffer, match, ret1))
{
cout << "Found: " << pe32.szExeFile << "\n";
system("pause");
}
Блокнот, являющийся программой для Windows, вероятно, использует UCS-2 или, по-моему, в наши дни UTF-16. Что означает, что вам нужно регулярное выражение Unicode.
И вы уверены, что regex_search даже работает с двоичными данными? Он может выйти из первого нулевого байта, полагая, что это конец строки.
Других решений пока нет …