Flayer is a Valgrind tool which provides bit-precise dynamic taint analysis of input to a target application. In addition, it allows this flow to be altered irrespective of content through the modification of conditional jump (if clauses) and function call behavior.
In addition, a small, Python wrapper library, LibFlayer, is included. It provides an easy interface for automation.
This is a proof of concept implementation, but it is fully functional. Please check it out!