Pergunta

Existe uma maneira de forçar o mesmo código para produzir o mesmo binário no Visual C++?Desligue o carimbo de data / hora no PE ou forçar o carimbo de data / hora no PE para ser de algum valor fixo, em outras palavras?

Foi útil?

Solução 2

Suponho que você possa escrever um utilitário para abrir o PE, definir a soma de verificação para 0, definir o registro de data e hora do que quiser, recompugue o CRC e escreva -o de volta. Seria bom se houvesse uma maneira oficial de garantir a reprodutibilidade binária perfeita.

Para maiores informações:http://msdn.microsoft.com/en-us/magazine/cc301805.aspx

Outras dicas

Ele não é apenas um carimbo de data / hora - há uma incorporado GUID usado para o PDB para a correspondência de John Robbins explica.

Além disso, não há apenas nenhuma maneira para forçar o compilador a gerar resultados consistentes, como Jim Griesmer explica -

compilador escritores estão muito mais interessados em gerar corretamente o funcionamento do código e gerar rapidamente do que garantir que tudo o que é gerado é apresentado de forma idêntica em sua unidade de disco rígido.Devido aos inúmeros e variados métodos e implementações para a otimização de código, é sempre possível que uma compilação terminou com um pouco mais de tempo para fazer algo extra ou diferente do que o outro a construir o fez.Assim, o resultado final poderia ser um conjunto diferente de bits para o que é a mesma funcionalidade.

Assim, a função e a ordem de seção são não garantido para ser consistente e ordenada resultante PE.Um exemplo é o link.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top