Suppose to have the need to checksum a binary file (.exe, .dll, …), and to discover that it changes if you compile this file different times without touching its sources.
I expected that if the sources are equal, the compiled binary doesn’t change.
I was wrong, because usually there are several timestamps sunk into internal binary data structures that are updated during the compile time.
You can easily see it, comparing two compiled files by this simple command:
fc /b <file1> <file2>
I wrote this small program to try to rip off all time-stamps present into the internal data structures used into Portable Executable image files (.exe, .dll, …), to avoid this checksum problem.
It supports Win32 and Win64 binaries, and it is tested with the following compilers:
|MS Visual Studio||The program works really fine.|
|Embarcadero C++ Builder||The program isn’t working enough because this compiler seems to have 2-4 bytes randomly at the beginning of the code segment.|
I have tested this behavior into XE2, XE8 version.
The program is freeware and it is licensed under a Creative Commons Attribution-NoDerivs 4.0 Unported License .
RipBinTS r <binary file>
In Read mode, the program only scans the binary file looking for any internal timestamp.
RipBinTS w <binary file>
In Write mode, the program scans and replaces internal timestamps to a fixed value.
Pentium processor, 16Mb RAM, WinVista
|v184.108.40.206 updated 09/01/2019|
Download from: (60 KB)
– this site:
ps: you may need to install Visual C 2017 32 bits runtimes from MS.