尝试读取外部可执行文件C++的资源

问题描述 投票:0回答:1

我正在尝试读取外部可执行文件的资源。我正在使用 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);

但是结果字符串包含这样一个二进制数据: 图片

有什么办法可以让这些数据像本文第一张图片一样可读吗?

c++ winapi electron resources executable
1个回答
0
投票

我错过了 LoadResource 的电话。现在效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.