c++ - 如何在exe中找到字符串?
问题描述
是
寻找
功能不能与exe一起使用?我尝试在 exe 中找到 wstring。它总是不匹配。但是如果我创建一个txt并将exe中的二进制文件复制到txt,它就可以找到它。
std::wifstream file(L"D:/file.exe", std::ios::binary);
if (file.is_open())
{
file.seekg(0, file.end);
std::streamoff length = file.tellg();
file.seekg(0, file.beg);
wchar_t *buffer = new wchar_t[length];
file.read(buffer, length);
std::wstring sFile;
sFile = buffer;
size_t index = sFile.find(L"Something");
if (index != std::string::npos) std::cout << "It's found";
file.close();
delete[] buffer;
}
else
{
std::cout << "It's not open";
}
解决方案
0x00
可执行文件可能在文件的早期有许多 0 字节(即)。当您这样做sFile = buffer;
时,它假定这buffer
是一个以 0 字节结尾的 C 样式字符串。所以sFile
只会包含到那个点的字节。
要修复它,您应该将整个缓冲区放入字符串中:
std::wstring sFile(buffer, length); // Directly using the constructor, or
sFile.assign(buffer, length); // after construction
推荐阅读
- gradle - 如何将 javascript 依赖项打包到 Kotlin JS 项目 JAR 中?
- java - 如何检索 parseObject 子类的指针 [PARSE SERVER]
- python - 使用正则化时手动计算的验证损失与报告的 val_loss 不同
- java - 创建不兼容的数字子类型
- node.js - Sequelize 在更新时抛出无效值 [Function]
- xamarin - App Center Distribute – Xamarin Forms 的应用内更新
- php - 砌体布局与foreach?
- python - 如何在另一个函数中访问一个python函数中的变量
- reactjs - 窗口变量是否应该被视为 API?
- javascript - 反应 rc-tree 的动画未编译