버피 실제로 (LPBYTE) LockResource(LoadResource(NULL, hRsrc));
의 가치에 어떤 추측을 할당한다?
리소스 유형에 따라 다르지만 일반적으로 아니오입니다. 어쨌든, 자원으로 작업 중이므로 SizeofResource
기능을 사용하여 자원 크기를 가져올 수 있습니다.
그래도 LockResource
에 의해 반환 된 항목을 쓸 수 있는지 확실하지 않습니다. 실제로 리소스가 포함 된 영역에 대한 포인터를 반환합니다. 이는 메모리 매핑 된 실행 파일의 영역 일뿐입니다. 아마 당신은 그것을 XORing하기 전에 다른 곳에 복사하기를 원할 것입니다.
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;
'LPBYTE'는 도움이 될 경우'unsigned char * '와 동일합니다. –
버퍼에'LPBYTE' _points_가 있습니다. –
'LPBYTE'가 가리키는 데이터가 null로 끝나지 않는 한 (확실히 "문자열과 유사한 데이터 유형"을 외치지는 않는다) 얼마나 오랫동안인지하는 방법은 없습니다. –