exe에서 자원을 메모리에 완전히로드하지 않고 사용할 수있는 방법이 없다고 생각합니다. 내가 준비한 커다란 RC_DATA 자원을 사용할 계획이 있다고 가정 해 봅시다. 내 서명을 스캔하여 실행 파일에서 찾은 다음 CreateFile과 함께 사용하고 그 후에 오프셋해도 괜찮습니까? 내가 제대로 이해하면서명 검사에서 찾은 exe의 리소스를 사용하는 것이 유효합니까?
덕분에
exe에서 자원을 메모리에 완전히로드하지 않고 사용할 수있는 방법이 없다고 생각합니다. 내가 준비한 커다란 RC_DATA 자원을 사용할 계획이 있다고 가정 해 봅시다. 내 서명을 스캔하여 실행 파일에서 찾은 다음 CreateFile과 함께 사용하고 그 후에 오프셋해도 괜찮습니까? 내가 제대로 이해하면서명 검사에서 찾은 exe의 리소스를 사용하는 것이 유효합니까?
덕분에
잘 모르겠지만, 당신이 그것을 액세스하려고 할 때 메모리에 전체 EXE를로드하지 않습니다.
HRSRC hres = FindResource(NULL, // Returns the current process as a resource
"Name",
RT_RCDATA);
그리고 그냥로드 : 당신이 할 필요가있다
HGLOBAL hglob = LoadResource(NULL,
hres);
그리고 이것은 첫 번째 바이트에 당신에게 포인터를 줄 것이다 :이 도움이
LPVOID lpFirstByte = LockResource(hglob);
희망!
고마워, 나는 그들이하는 것보다 더 복잡한 것을 만들려고 한 것 같다. 모든 exe가 이미 메모리 맵핑 된 것처럼 보이고 분리 된 메모리에로드하지 않고 리소스에 대한 해당 오프셋을 반환합니다. LoadResource 함수의 이름은 Windows 3.1에서 실제로 "로드 중"이라는 사실로 인해 오해의 소지가 있습니다. – Maksee
가정이 잘못되었습니다. – MSalters