문제

Visual C++에서 동일한 코드가 동일한 바이너리를 생성하도록 하는 방법이 있습니까?PE의 타임스탬프를 끄거나 PE의 타임스탬프를 고정된 값으로 강제 설정하시겠습니까?

도움이 되었습니까?

해결책 2

PE를 열기 위해 유틸리티를 작성하고, 체크섬을 0으로 설정하고, 원하는대로 타임 스탬프를 설정하고, CRC를 다시 작성 한 다음 다시 작성할 수 있다고 생각합니다. 그러나 완벽한 이진 재현성을 보장하는 공식적인 방법이 있다면 좋을 것입니다.

자세한 내용은:http://msdn.microsoft.com/en-us/magazine/cc301805.aspx

다른 팁

타임스탬프일 뿐만 아니라 PDB 일치에 사용되는 내장형 GUID도 있습니다. John Robbins 설명하다.

그 이상으로, Jim Griesmer처럼 컴파일러가 일관된 결과를 생성하도록 강제할 수 있는 방법은 없습니다. 설명하다 -

컴파일러 작성자는 생성된 코드가 하드 드라이브에 동일하게 배치되는지 확인하는 것보다 올바르게 작동하는 코드를 생성하고 이를 신속하게 생성하는 데 훨씬 더 관심이 있습니다.코드 최적화를 위한 수많은 다양한 방법과 구현으로 인해 한 빌드가 다른 빌드보다 추가 작업이나 다른 작업을 수행하는 데 약간 더 많은 시간을 투자하게 될 가능성이 항상 있습니다.따라서 최종 결과는 동일한 기능에 대해 다른 비트 세트가 될 수 있습니다.

따라서 함수와 섹션 순서는 다음과 같습니다. ~ 아니다 결과 PE에서 일관되게 주문되도록 보장됩니다.예시는 링크에 있습니다.

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