5

Có cách nào để buộc cùng một mã để tạo cùng một nhị phân trong Visual C++ không? Tắt dấu thời gian trong PE hoặc buộc dấu thời gian trong PE là một số giá trị cố định, nói cách khác?Tái tạo nhị phân trong Visual C++

Trả lời

3

Tôi giả sử bạn có thể viết một tiện ích để mở PE, đặt tổng kiểm tra là 0, đặt dấu thời gian cho những gì bạn thích, tính toán lại crc, sau đó viết lại. Nó sẽ là tốt đẹp nếu có một cách chính thức để đảm bảo khả năng tái tạo nhị phân hoàn hảo, mặc dù.

Để biết thêm thông tin: http://msdn.microsoft.com/en-us/magazine/cc301805.aspx

3

Đó là không chỉ là một dấu thời gian - có một GUID nhúng sử dụng cho PDB khớp - như John Robbins explains.

Thậm chí hơn thế nữa, có chỉ là không có cách nào để buộc các trình biên dịch để tạo ra kết quả phù hợp, như Jim Griesmer explains -

nhà văn biên dịch còn lâu mới quan tâm nhiều hơn trong việc tạo ra một cách chính xác chức năng mã và tạo ra nó một cách nhanh chóng hơn so với việc đảm bảo rằng bất cứ điều gì được tạo ra được đặt ra một cách giống hệt trên ổ đĩa cứng của bạn. Do có nhiều phương thức và cách triển khai khác nhau để tối ưu hóa mã, nên luôn có thể một bản dựng kết thúc với một ít thời gian hơn để làm điều gì đó khác biệt hoặc khác biệt so với một bản dựng khác. Do đó, kết quả cuối cùng có thể là một bộ bit khác nhau cho cùng một chức năng.

Vì vậy, chức năng và thứ tự phần là không phải đảm bảo được đặt hàng nhất quán trong PE kết quả. Một ví dụ là tại liên kết.