같은 소스코드를 다른 날짜에 컴파일하면 실행파일의 바이너리가 달라질수 있는지요?

venom00의 이미지

고수님들에게 자문을 구합니다.

Windows CE환경에서 사용하는 임베디드 프로그램입니다. 개발은 mfc로 하였습니다.

소스코드는 같은데 A라는 실행파일은 몇 년전에 컴파일한 것이고, 최근에 컴파일한 B라는 실행파일을 서로 비교한다면 두 실행 파일이 서로 다를 수 있는지 궁금합니다.

다시 말씀드리면 같은 소스코드를 다른 날짜에 컴파일하면 실행파일의 바이너리가 달라지고, 만일 유사도 측정(감정)을 한다면 유사도에 차이가 있는 것인가 입니다.

감사합니다.

김정균의 이미지

시간에 따른 환경의 차이가 발생할 수 있을 것 같은데요. 예를 들어 compiler 버전이 달라졌다든지, 아니면 외부 Library를 static link할 경우 시간의 차이에 따른 외부 library version이 달라질 수 있을 것 같습니다.

나그네나그네의 이미지

실제로 경험해 본 적 있는 것 같네요 :) 다른 요인은 모두 고정하고 다른 시간에 컴파일했더니 바이너리 diff가 생긴 적이 있었던 것 같아요. .exe파일을 버젼관리하려고 할 때 그런 일이 있었던 듯 합니다

qiiiiiiiip의 이미지

windows용 visual studio (아마도 2005 버전) 에서 win ce용 dll을 생성하는데,
코드 변경없이 단순히 연속적으로 새로 빌드해도 생성되는 출력들을 diff 하면 달랐습니다.

아마도 time stamp가 들어있는 듯했습니다.
유사도를 측정한다면 소스가 달라진것보다는 높게나오겠지만,
그걸로 뭘 할 수 있을것 같진 않네요.

몇년전 소스라면 일단 그사이 OS나 컴파일러가 달라졌을테니,(업데이트 포함)
단순히 바이너리 간의 유사도를 측정해서
컴파일이 유사하게(또는 정상적으로?) 되었을 것을 추정하는것은
불가능해보이네요.

venom00의 이미지

답변 주신 모든 분들 감사드립니다.
즐거운 하루 되세요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.