2010-11-19 3 views
0

exe에서 자원을 메모리에 완전히로드하지 않고 사용할 수있는 방법이 없다고 생각합니다. 내가 준비한 커다란 RC_DATA 자원을 사용할 계획이 있다고 가정 해 봅시다. 내 서명을 스캔하여 실행 파일에서 찾은 다음 CreateFile과 함께 사용하고 그 후에 오프셋해도 괜찮습니까? 내가 제대로 이해하면서명 검사에서 찾은 exe의 리소스를 사용하는 것이 유효합니까?

덕분에

+0

가정이 잘못되었습니다. – MSalters

답변

0

잘 모르겠지만, 당신이 그것을 액세스하려고 할 때 메모리에 전체 EXE를로드하지 않습니다.

HRSRC hres = FindResource(NULL, // Returns the current process as a resource 
          "Name", 
          RT_RCDATA); 

그리고 그냥로드 : 당신이 할 필요가있다

HGLOBAL hglob = LoadResource(NULL, 
          hres); 

그리고 이것은 첫 번째 바이트에 당신에게 포인터를 줄 것이다 :이 도움이

LPVOID lpFirstByte = LockResource(hglob); 

희망!

+0

고마워, 나는 그들이하는 것보다 더 복잡한 것을 만들려고 한 것 같다. 모든 exe가 이미 메모리 맵핑 된 것처럼 보이고 분리 된 메모리에로드하지 않고 리소스에 대한 해당 오프셋을 반환합니다. LoadResource 함수의 이름은 Windows 3.1에서 실제로 "로드 중"이라는 사실로 인해 오해의 소지가 있습니다. – Maksee

관련 문제