같은 소스코드를 다른 날짜에 컴파일하면 실행파일의 바이너리가 달라질수 있는지요?
글쓴이: venom00 / 작성시간: 목, 2016/09/01 - 5:47오후
고수님들에게 자문을 구합니다.
Windows CE환경에서 사용하는 임베디드 프로그램입니다. 개발은 mfc로 하였습니다.
소스코드는 같은데 A라는 실행파일은 몇 년전에 컴파일한 것이고, 최근에 컴파일한 B라는 실행파일을 서로 비교한다면 두 실행 파일이 서로 다를 수 있는지 궁금합니다.
다시 말씀드리면 같은 소스코드를 다른 날짜에 컴파일하면 실행파일의 바이너리가 달라지고, 만일 유사도 측정(감정)을 한다면 유사도에 차이가 있는 것인가 입니다.
감사합니다.
Forums:
시간에 따른 환경의 차이가 발생할 수 있을 것
시간에 따른 환경의 차이가 발생할 수 있을 것 같은데요. 예를 들어 compiler 버전이 달라졌다든지, 아니면 외부 Library를 static link할 경우 시간의 차이에 따른 외부 library version이 달라질 수 있을 것 같습니다.
.
실제로 경험해 본 적 있는 것 같네요 :) 다른 요인은 모두 고정하고 다른 시간에 컴파일했더니 바이너리 diff가 생긴 적이 있었던 것 같아요. .exe파일을 버젼관리하려고 할 때 그런 일이 있었던 듯 합니다
windows용 visual studio (아마도
windows용 visual studio (아마도 2005 버전) 에서 win ce용 dll을 생성하는데,
코드 변경없이 단순히 연속적으로 새로 빌드해도 생성되는 출력들을 diff 하면 달랐습니다.
아마도 time stamp가 들어있는 듯했습니다.
유사도를 측정한다면 소스가 달라진것보다는 높게나오겠지만,
그걸로 뭘 할 수 있을것 같진 않네요.
몇년전 소스라면 일단 그사이 OS나 컴파일러가 달라졌을테니,(업데이트 포함)
단순히 바이너리 간의 유사도를 측정해서
컴파일이 유사하게(또는 정상적으로?) 되었을 것을 추정하는것은
불가능해보이네요.
답변 주신 분들 감사드립니다.
답변 주신 모든 분들 감사드립니다.
즐거운 하루 되세요.
댓글 달기