bufは実際にはの値に割り当てられますが(LPBYTE) LockResource(LoadResource(NULL, hRsrc));
、それがnullで終了したかどうかは推測できますか?
リソースのタイプによって異なりますが、おそらくそうではありません。とにかく、リソースを操作しているので、関数を使用してリソースサイズを取得できますSizeofResource
。
それでも、によって返されたものに書き込むことができるかどうかはわかりませんLockResource
(実際には、リソースを含む領域へのポインターが返されます。これは、メモリマップされた実行可能ファイル内の領域にすぎない可能性があります)。XORを実行する前に、他の場所にコピーすることをお勧めします。
HGLOBAL resource=LoadResource(NULL, hRsrc);
if(resource==NULL)
{
// ... handle the failure ...
}
LPBYTE resPtr=LockResource(resource);
DWORD resSize=SizeofResource(NULL, hRsrc);
if(resPtr==NULL || resSize==0)
{
// ...
}
std::vector<BYTE> buffer(resPtr, resPtr+resSize);
// Now do whatever you want to do with your buffer
for(size_t i=0; i<buffer.size(); ++i)
buffer[i]^=key;