This project is aimed at developing scalable as well as highly efficient techniques for performing Dynamic Information Flow Tracking (DIFT) in multithreaded programs. The approach being developed is based upon dynamic instrumention of binaries to perform information flow tracking so that the application source code is not required and applications involving dynamically generated code can be handled. For achieving scalability, a novel strategy based upon the integration of checkpointing logging with fine-grained tracing is being used. Initially the program is executed with logging turned on. When DIFT needs to be performed, the execution of relevant execution intervals is replayed and fine-grained tracing is selectively performed. For achieving further efficiency, idle cores on a multicore processor are being used. Dynamically, a monitoring thread is generated by analyzing the application binary and the monitoring thread and the application execute concurrently on different cores. By achieving scalability and efficiency, the developed techniques can be applied to realistic programs such as server programs. The DIFT techniques are being evaluated in context of following applications: (debugging) bug location and avoidance; (security) software attack detection and location of vulnerability; and (data validation) maintaining lineage of scientific data.