Tools for various Windows binaries?

Our QA team wants to focus their testing on what the EXE and DLL really changed between assemblies. We have a good report on svn changes, but the relationship between the source and modified binaries is not always obvious. The mappings we compare are always full of clean builds, so we cannot use file system timestamps. I am looking for tools to compare windows (and CE windows) of PE files that will ignore embedded timestamps and other cracks. Any recommendations on tools or other ways to create a reliable report “which binaries have really changed”? Thanks.

clarification: thanks for the answers so far, but we can’t generate the report by doing simple bytes for bytes, comparing or comparing checksums, because all the files seem different every time we build, even if the sources haven’t been changed from beyond the timestamps that the compiler inserts. The problem is how to ignore false positives. The idea to parse and compare is closest to what we need, I think ...

answered! Bindiff is what I was looking for. Many thanks.

+3
source share
8 answers

Have you watched Bindiff ?

+4
source

I have encountered this problem before. My solution was to write a tool that set all the timestamps in .EXE / .DLL to a known value. I would execute it as a step after assembly. Then binary diffs will work fine.

+2
source

Perhaps you can parse the binary and then run diff on the assembly ...

It sounds like your QA team is using the wrong approach, though ... It shouldn't matter to them what the code looks like; he just does what he has to do.

Edit: Oh! Having read it again, I realized that I misinterpreted your question. I thought they want to test methods that have changed ...

In this case, why not get the MD5 hash and compare them? A minimal change will generate a completely different hash.

+1
source

Not sure which binaries (DLL only? PE / WinCE?)? Is it possible to embed version information in binary files, for example? using a source control tag that updates the version in the source code on a commit. Then, when a new assembly is created, the binary will also update the version string. Instead of distinguishing between the binary, you can use the version string and check this for changes.

+1
source

Take a look at NDepend .

+1
source

When I was working on a home tool to test the installation at my company, we used Beyond Compare as a basis for comparison.

It has excellent file and folder mapping (also binary) and scripting capabilities and can output XML reports.

0
source

Project dependency graph generator and Dependency-Grapher for C ++ - Projects use GraphViz to visualize dependencies. I assume that you can use any of them as the basis for your needs, with special emphasis on the branches in the dependency graph, where the source files or other sheets have changed.

MD5 hashes or checksums (as suggested above), a simple difference ignoring spaces and filtering comment changes, or information from the change list from your version control system can signal which files have been changed.

0
source
0
source

All Articles