/dynamic-analysis

A curated list of dynamic analysis tools for all programming languages, binaries, and more.

Primary LanguageRust

Analysis Tools

This repository lists dynamic analysis tools for all programming languages, build tools, config files and more.
The official website, analysis-tools.dev is based on this repository and adds rankings and user comments for each tool.

What is Dynamic Analysis?

Dynamic program analysis is the analysis of computer software that is performed by executing programs on a real or virtual processor. — Wikipedia

Sponsors

This project would not be possible without the generous support of our sponsors.

If you also want to support this project, head over to our Github sponsors page.

Meaning of Symbols:

  • ©️ stands for proprietary software. All other tools are Open Source.
  • ℹ️ indicates that the community does not recommend to use this tool for new projects anymore. The icon links to the discussion issue.
  • ⚠️ means that this tool was not updated for more than 1 year, or the repo was archived.

Pull requests are very welcome!
Also check out the sister project, awesome-static-analysis.

Table of Contents

Programming Languages

Show languages

Multiple languages

Other


Programming Languages

.NET

  • Microsoft IntelliTest - Generate a candidate suite of tests for your .NET code.
  • Pex and Moles - Pex automatically generates test suites with high code coverage using automated white box analysis.

C

  • CHAP - Analyzes un-instrumented ELF core files for leaks, memory growth, and corruption. It helps explain memory growth, can identify some forms of corruption, and supplements a debugger by giving the status of various memory locations.
  • KLEE - Symbolic virtual machine built on top of the LLVM compiler infrastructure.
  • LDRA ©️ - A tool suite including dynamic analysis and test to various standards can ensure test coverage to 100% op-code, branch & decsion coverage.
  • LLVM/Clang Sanitizers -
  • tis-interpreter ⚠️ - An interpreter for finding subtle bugs in programs written in standard C.
  • Valgrind - An instrumentation framework for building dynamic analysis tools.

C++

  • CHAP - Analyzes un-instrumented ELF core files for leaks, memory growth, and corruption. It helps explain memory growth, can identify some forms of corruption, and supplements a debugger by giving the status of various memory locations.
  • KLEE - Symbolic virtual machine built on top of the LLVM compiler infrastructure.
  • LDRA ©️ - A tool suite including dynamic analysis and test to various standards can ensure test coverage to 100% op-code, branch & decsion coverage.
  • LLVM/Clang Sanitizers -
  • tis-interpreter ⚠️ - An interpreter for finding subtle bugs in programs written in standard C.
  • Valgrind - An instrumentation framework for building dynamic analysis tools.

Java

  • Java PathFinder - An extensible software model checking framework for Java bytecode programs.
  • Parasoft Jtest ©️ - Jtest is an automated Java software testing and static analysis product that is made by Parasoft. The product includes technology for Data-flow analysis Unit test-case generation and execution, static analysis, regression testing, code coverage, and runtime error detection.

JavaScript

  • Iroh.js ⚠️ - A dynamic code analysis tool for JavaScript. Iroh allows to record your code flow in realtime, intercept runtime informations and manipulate program behaviour on the fly.
  • Jalangi2 - Jalangi2 is a popular framework for writing dynamic analyses for JavaScript.

Python

  • Scalene - A high-performance, high-precision CPU and memory profiler for Python
  • typo ⚠️ - Runtime Type Checking for Python 3.

Rust

  • MIRI - An interpreter for Rust's mid-level intermediate representation, which can detect certain classes of undefined behavior like out-of-bounds memory accesses and use-after-free.
  • puffin - Instrumentation profiler for Rust.
  • stuck - provides a visualization for quickly identifying common bottlenecks in running, asynchronous, and concurrent applications.

Visual Basic

  • VB Watch ©️ - Profiler, Protector and Debugger for VB6. Profiler measures performance and test coverage. Protector implements robust error handling. Debugger helps monitor your executables.

Multiple languages

  • Code Pulse - Code Pulse is a free real-time code coverage tool for penetration testing activities by OWASP and Code Dx (GitHub).
  • Gcov - GNU source code coverage program. Code coverage tool and profiling tool which is part of the GCC. Supports C, C++, Fortran.
  • WhiteHat Sentinel Dynamic ©️ - Part of the WhiteHat Application Security Platform. Dynamic application security scanner that covers the OWASP Top 10.

Other

Binaries

  • angr - Platform agnostic binary analysis framework from UCSB.
  • Dr. Memory - Dr. Memory is a memory monitoring tool capable of identifying memory-related programming errors (Github).
  • DynamoRIO - Is a runtime code manipulation system that supports code transformations on any part of a program, while it executes.
  • Pin Tools - A dynamic binary instrumentation tool and a platform for creating analysis tools.
  • TRITON - Dynamic Binary Analysis for x86 binaries.

Containers

  • cadvisor - Analyzes resource usage and performance characteristics of running containers.

Security/DAST

  • AppScan Standard ©️ - HCL's AppScan is a dynamic application security testing suite (previously by IBM).
  • Minded Security BlueClosure ©️ - Dynamic web application security scanner. It uses dynamic data tainting in order to understand if a DOM XSS is exploitable and uses the browser JavaScript engine for understanding the code.
  • WebScanner ©️ - WebScanner is a DAST solution for comprehensive security audits of active web applications.

License

CC0

To the extent possible under law, Matthias Endler has waived all copyright and related or neighboring rights to this work. Title image Designed by Freepik.