Win32 실행 파일(바람직하게는 C#)에서 RT_RCDATA 섹션을 어떻게 추출합니까?

StackOverflow https://stackoverflow.com/questions/119117

  •  02-07-2019
  •  | 
  •  

문제

현재 이 작업을 수행하는 방법을 아는 유일한 방법은 Visual Studio에서 EXE를 여는 것입니다.가능하다면 C#으로 이 작업을 완전히 수행하고 싶습니다.기타 옵션은 다음과 같습니다.

  • P/Win32 API에서 LoadResource() 호출
  • 기존 도구 사용(아는 사람 있나요?)
  • 다른 아이디어?

감사해요!

도움이 되었습니까?

해결책

P/Invoke LoadResource가 가장 안전한 선택이 될 것입니다.

그렇지 않으면 직접 작성해야 합니다. 체육 프로세서 예. PE 프로세서 예.프로세서가 세상의 끝은 아니지만 보시다시피 P/Invoke보다 훨씬 더 많은 관련이 있습니다.

도구에 관한 한 대부분의 P/E 브라우저가 이 작업을 수행한다는 사실을 거의 잊어버렸습니다.예.P/E Explorer는 사용 가능하지만 실제로 개발되지는 않습니다.나는 또한 이와 같은 작업에 IDA Pro를 사용했습니다.빠른 IDA 플러그인을 사용하면 이 작업을 쉽게 수행할 수 있습니다.

다른 팁

실행 파일에서 RCDATA 유형의 리소스를 읽으려고 한다고 가정합니다("실행 가능 섹션"은 PE 파일의 .text, .data, .rdata 등의 부분을 참조함).현재 어셈블리에서 읽으려면 다음 방법을 보여주는 튜토리얼이 있습니다. GetManifestResourceStream을 사용하여 포함된 리소스에 액세스, 사용하여 매니페스트자원이름 가져오기 그리고 GetManifestResourceStream 행동 양식.

현재 실행 파일에서 읽지 않으려면 표시된 것과 유사한 방법을 사용할 수 있습니다. 여기.

이러한 메서드는 PInvoke에 비해 100% .NET이라는 장점이 있으며 플랫폼 데이터 형식에 대해 인수를 마샬링하고 모든 반환 값의 유효성을 검사할 필요가 없습니다.

매우 도움이 되는 내용이 있습니다 많은 자원 작업을 위한 라이브러리 ~에 http://resourcelib.codeplex.com

많은 클래스와 함수가 해당 창 API 호출을 래핑합니다. UpdateResource(...), 등.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top