我正在尝试读取外部可执行文件的资源。我正在使用 Resource Tuner 应用程序,它给了我这样的结果: 图片
std::filesystem::path exeSignalPath{ LR"__(c:\Users\user\AppData\Local\Programs\signal-desktop\Signal.exe)__" };
const HMODULE hExe = ::LoadLibrary(exeSignalPath.c_str());
if (NULL == hExe)
{
return 0;
}
const HRSRC handleIntegrity = ::FindResourceW(hExe, L"ElectronAsar", L"Integrity");
if (handleIntegrity == NULL)
{
return 0;
}
LPVOID lpResLock = ::LockResource(handleIntegrity);
if (NULL == lpResLock)
{
::FreeResource(handleIntegrity);
return 0;
}
DWORD resorcesSize = ::SizeofResource(hExe, handleIntegrity);
if (0 == resorcesSize)
{
UnlockResource(handleIntegrity);
::FreeResource(handleIntegrity);
return 0;
}
std::string res(std::bit_cast<uint8_t*>(lpResLock), std::bit_cast<uint8_t*>(lpResLock) + resorcesSize);
但是结果字符串包含这样一个二进制数据: 图片
有什么办法可以让这些数据像本文第一张图片一样可读吗?
我错过了 LoadResource 的电话。现在效果很好。