5

Với mục đích xác minh mã nhị phân/mã nguồn, tôi muốn có thể tạo hai biên dịch trên cùng một máy tính cách nhau 2 tuần và có các tệp nhị phân giống hệt nhau và do đó vượt qua một số kiểm tra tổng kiểm tra.Biên dịch hai lần với Delphi 6 và nhận cùng một tổng kiểm tra trên số nhị phân

Cho đến nay tôi đã nhận thấy rằng hầu hết các dấu thời gian sẽ được trình biên dịch viết vào nhị phân. Tôi có thể làm việc xung quanh điều này bằng cách so sánh kết quả dumpbin/rawdata cho mỗi bài viết msdn này.

http://support.microsoft.com/kb/164151

Tuy nhiên kết quả dumpbin vẫn khác nhau trong một khoảng một chục nơi và sự khác biệt vẫn dường như là một số loại dấu thời gian (thay đổi từ A1 73 C4 76) ví dụ.

Tôi cho rằng đây là dấu thời gian mà trình biên dịch delphi đang đưa vào phần mã/dữ liệu nhưng tôi không thể tìm thấy nơi này đang xảy ra hoặc cách tắt nó đi. Fiddling với các tùy chọn trình biên dịch/linker khác nhau đã không thay đổi hành vi này.

Mọi trợ giúp sẽ được đánh giá cao.

+0

Tôi chỉ là curios (không có ý định phạm tội): Kịch bản mà bạn muốn xác minh rằng séc exe không thay đổi giữa 2 bản dựng là gì? –

+0

Tôi sẽ nhận được rằng mỗi ".obj "(hoặc tương đương trong Delphi) có dấu thời gian đang tìm đường vào .exe – jmucchiello

+0

của bạn phải thực hiện với chuyển mã mà bên đối tác cần kiểm tra nhị phân và sau đó xác minh rằng mã tương ứng với nó. đã không thể nghĩ ra một kế hoạch khác để làm điều này cho đến nay. –

Trả lời

1

Chúng tôi nghiên cứu vấn đề này một vài năm trước đây, và như tôi nhớ lại câu trả lời chỉ đơn giản rằng người dân tại Borland/Codegear/Embarcadero không đăng ký với quan điểm cho rằng trình biên dịch nên sản xuất chính xác cùng một đầu ra được đưa ra chính xác cùng một đầu vào (cho rằng ngày giờ hiện tại không được chấp nhận để xem là đầu vào).

Điều này thật đáng thất vọng, nhưng với điều đó Delphi là một phiên bản chính cũ, có thể nó sẽ không thay đổi.

0

Thật không may là tôi chưa từng nghe câu trả lời nào cho vấn đề này.

Nó không chỉ là dấu thời gian nhưng có những nơi mà một vài byte rác ngẫu nhiên hết bộ nhớ kết thúc trong kết quả.

1

Dựa trên nhận xét của bạn trong câu hỏi, tôi nghĩ rằng bạn đang tìm kiếm câu trả lời cho câu hỏi này:

Làm thế nào tôi có thể xác minh rằng một nhị phân nào đó được tạo ra bởi một tập hợp các file nguồn

một cách là phải có một quá trình xây dựng tự động:

  1. Chèn một thẻ verififcation độc đáo trong mã nguồn (có thể đơn giản như là một chuỗi GUID hoặc một cái gì đó khác trong một bao gồm tập tin)
  2. Biên dịch mã nhị phân sử dụng mà thẻ xác minh
  3. Gói kết quả mã nhị phân và nguồn trong một cây thư mục giao

Bạn phải chắc chắn rằng mã nguồn của bạn thực sự sử dụng mà thẻ xác minh (ví dụ bằng cách hiển thị trong một hộp về, hoặc một cái gì đó tương tự).

Tôi sử dụng FinalBuilder để tự động hóa quy trình xây dựng như thế này.

--jeroen

Các vấn đề liên quan