Is there a way to detect whether two EXE's (compiled from VS.Net 2008 for C++/MFC) do not have any code-level changes between them i.e. for purposes of knowing that there have been no statement changes.
This is for compliance purposes when my vendor ships me an exe, ostensibly with no changes made to the code since the last time we tested it.
Is there a tool to check that this is so?
Cheers
You could use a dissembler to disassemble the executable back into assembly and compare with a normal text diff tool.
But even that will not be 100% accurate. The compilation process is not lossless and much information is lost or irreversibly transformed when C++ code is compiled.
In particular, different compiler settings can generate vastly different machine code from exactly the same source. Different compilers and even different versions or service-pack/hotfix levels of the same compiler can produce vastly different machine code from the same source files.
The other question is, why are they even sending you the exe back "ostensibly with no changes made"? If that's the case, why don't you just use the one you had originally?
You can always perform an MD5sum on the executables. This won't tell you whether they are logically equivalent or different, simply that a difference exists.
I'm not sure if this solves your issue, as you may be looking for a logical comparison tool.
Automate your testing so that the tests can be rerun quickly.
Even though this is a small statement to make, it is a big undertaking
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With