-1

我想匹配记事本进程内存中的一些字符串,但没有成功。这是代码:

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");
}
4

1 回答 1

0

记事本,作为一个 Windows 程序,可能使用 UCS-2 或者我猜这些天是 UTF-16。这意味着您需要一个 Unicode 正则表达式。

您确定 regex_search 甚至可以处理二进制数据吗?它可能会在第一个零字节处退出,认为它是字符串的结尾。

于 2013-12-11T17:00:40.213 回答