Cách đây một thời gian dài, tôi đã thử chỉnh sửa hex tệp thực thi của trò chơi "Nguy hiểm Dave". Tôi đã xem xung quanh tệp cho bất kỳ chuỗi nào tôi có thể tìm thấy và thực hiện một số chỉnh sửa ngẫu nhiên để xem liệu nó có thực sự thay đổi văn bản được hiển thị trong trò chơi hay không.Sử dụng lại các ký tự trong tập tin .exe
Tôi rất ngạc nhiên khi nhìn thấy kết quả, mà tôi giờ đây đã tái sử dụng một hex-biên tập viên và DOSBox:
Như có thể thấy, chỉnh sửa hai nhân vật "RO" trong chuỗi "Romero" dẫn trong 4 ký tự bị thay đổi, với kết quả trở thành "ZUMEZU". Có vẻ như chương trình đang sử dụng lại hai ký tự và in chúng ở đầu và cuối của chuỗi đó.
Nguyên nhân của việc này là gì? Đoán đầu tiên của tôi sẽ cố gắng làm cho tệp thực thi nhỏ hơn nhưng chỉ mã mà sử dụng lại các ký tự có thể sẽ cần nhiều không gian hơn 2 byte để lưu. Nó chỉ là một thủ thuật được thực hiện bởi các tác giả, hoặc chỉ là một số voodoo biên dịch?
Tương tự, có hai byte bổ sung giữa "SOFT" và "DISK, INC" - cũng là dấu hiệu điển hình của việc nén trước. – usr2564301