40+ Tools To See WHY Processes Run โ€” ๐Ÿ‘๏ธ See Everything Your OS Hides

:hole: The โ€œWhy Is This Running?โ€ Rabbit Hole โ€” Every Tool The Pros Use To See Whatโ€™s REALLY Happening On Your Machine

One question changed everything: โ€œWhat if I could ask my computer WHY something is running โ€” not just WHAT?โ€


:world_map: The Full Excavation โ€” 40+ Tools Across Every Platform, Ranked By Rarity

Someone dropped witr (Why Is This Running) in conversation. We went digging. Five tiers deep. Found tools security researchers gatekeep. Tools that donโ€™t show up on page 1. Tools where you ask โ€œwhere tf did you find this?โ€

Why this matters to YOU:

  • :shield: Malware hides as โ€œsvchost.exeโ€ or โ€œsystemโ€ โ€” these tools expose the family tree
  • :money_with_wings: Your slow computer? Somethingโ€™s eating resources. Find it in seconds.
  • :unlocked: Pentesters, CTF players, sysadmins โ€” this is your cheat sheet

What youโ€™re getting:

  • :white_check_mark: Every platform covered (Linux, Windows, macOS, Android)
  • :white_check_mark: TIER rankings (S/A/B) โ€” skip the mid tools
  • :white_check_mark: โ€œWhy Itโ€™s a Gemโ€ breakdown for each
  • :white_check_mark: Comparison matrix so you pick the right one
  • :white_check_mark: Strategic recommendations from actual usage
  • :white_check_mark: Project ideas nobodyโ€™s built yet (free alpha)

:penguin: LINUX

TIER S โ€” The Hidden Gems

โญ witr (Why Is This Running) โ€” THE GOLD STANDARD

Link: https://github.com/pranshuparmar/witr

What it does: Give it a PID, port, or process name โ†’ get a human-readable explanation of the ENTIRE causal chain.

Why itโ€™s a gem:

  • Instead of seeing node you see: systemd โ†’ pm2 โ†’ node (running /home/you/app)
  • Shows git repo, working directory, warnings
  • Synthesizes information into actual sentences โ€” no other tool does this
  • Works on Linux + basic macOS support

The magic: Every other tool gives you RAW DATA. witr gives you an EXPLANATION.

Example output:

Process: node (PID 12847)
Started by: pm2 (process manager)
Which was started by: systemd (system service)
Working directory: /home/user/myproject
Git repo: https://github.com/user/myproject

No other tool talks to you like this.

โญ tracexec โ€” The Power User's Weapon

Link: https://github.com/kxxt/tracexec

What it does: Traces every execve syscall (program launch) with a beautiful TUI.

Why itโ€™s a gem:

  • Written in Rust โ€” fast af, single binary
  • TUI mode โ€” watch exec events + interact with pseudo-terminal
  • eBPF mode (kernel 5.17+) โ€” ultra-low overhead
  • ptrace fallback โ€” works on older kernels, handles setuid binaries
  • Shows environment variable diffs between parent/child
  • Shows file descriptor changes
  • Can launch a debugger (gdb) attached to spawned processes mid-execution
  • Built by a practitioner debugging build systems

Use case: Trace what a shell script ACTUALLY executes. Attach debugger to subprocess in complex pipeline.

Installation:

cargo install tracexec
# OR download binary from releases
โญ extrace โ€” Minimalist Perfection

Link: https://github.com/leahneukirchen/extrace

What it does: Traces ALL exec() calls system-wide using Netlink connector.

Why itโ€™s a gem:

  • Written by Void Linux maintainer (leahneukirchen) โ€” practitioner credibility
  • Hierarchy indentation shows parent-child relationships visually
  • Pure C, minimal dependencies
  • Options: -d (cwd), -e (env), -t (exit status + duration), -u (user), -l (full path)
  • Can trace descendants of specific PID only

Example:

sudo extrace -d -t
# Shows every exec with working directory and how long it ran

Requires: CAP_NET_ADMIN or root

โญ pspy โ€” NO ROOT REQUIRED

Link: https://github.com/DominicBreuker/pspy

What it does: Monitors processes WITHOUT root access using inotify + procfs scanning.

Why itโ€™s a gem:

  • CTF and pentest favorite โ€” works when you canโ€™t get root
  • Catches short-lived processes that ps misses
  • Shows commands run by OTHER USERS
  • Catches cron jobs and scheduled tasks
  • Single binary โ€” just download and run

Flags:

  • -p print commands
  • -f filesystem events
  • -i scan interval

Binary releases: pspy32, pspy64 โ€” no compilation needed

Use case: Youโ€™re on a box with limited privs. Whatโ€™s running? Whoโ€™s running it? pspy knows.

โญ execsnoop (BCC/bpftrace) โ€” Brendan Gregg's Classic

Link: https://github.com/iovisor/bcc (execsnoop.py) | https://github.com/bpftrace/bpftrace (execsnoop.bt)

What it does: eBPF-powered tracing of execve() syscall.

Why itโ€™s a gem:

  • Created by Brendan Gregg โ€” the observability god
  • <1% overhead โ€” safe for production
  • Part of bcc-tools package
  • Shows PID, PPID, return value, full command + args
  • Can filter by process name or failed execs

Installation:

apt install bpfcc-tools  # Debian/Ubuntu
# Then run:
execsnoop-bpfcc

TIER A โ€” Solid Complements

๐Ÿ”ง forkstat

What it does: Netlink-based tracker for fork/exec/exit/clone/comm/uid/sid events.

Why itโ€™s useful:

  • Shows parent PID โ†’ child PID with process names
  • Logs process duration on exit
  • Maintained by Colin Ian King (Ubuntu kernel team)

Installation:

apt install forkstat  # Debian/Ubuntu
yum install forkstat  # RHEL/CentOS

Requires: root or CAP_NET_ADMIN

๐Ÿ”ง strace-process-tree

Link: https://github.com/mgedmin/strace-process-tree

What it does: Reads strace -f output and produces a visual process tree.

Why itโ€™s useful:

  • Post-mortem analysis โ€” run strace, analyze later
  • Beautiful ASCII tree output showing fork/exec relationships
  • Pipe-friendly

Usage:

strace -f -e trace=process -s 1024 -o /tmp/trace.out make build
strace-process-tree /tmp/trace.out

Output example:

25510 make binary-package
โ”œโ”€25511 /bin/sh -c 'dpkg-parsechangelog...'
โ”‚ โ”œโ”€25512 dpkg-parsechangelog
โ”‚ โ”‚ โ””โ”€25514 tail -n 40 debian/changelog
โ”‚ โ””โ”€25513 awk '$1 == "Source:" { print $2 }'
๐Ÿ”ง visual-strace โ€” Browser-Based Visualization

Link: https://github.com/lhoursquentin/visual-strace

What it does: In-browser visual representation of strace output using cytoscape.js graphs.

Why itโ€™s useful:

  • Visual graph โ€” not just text
  • Shows forks, execves, pipes, exit status
  • Color-coded: green (success), red (non-zero exit), purple (signal death)
  • Orange arrows show read/write relationships between processes

Try it: https://lhoursquentin.github.io/visual-strace/

๐Ÿ”ง Microsoft ProcMon-for-Linux

Link: https://github.com/microsoft/ProcMon-for-Linux

What it does: Official Linux port of Sysinternals Process Monitor.

Why itโ€™s useful:

  • Familiar interface for Windows users
  • TUI included
  • Traces syscall activity
  • Can output to file for later analysis

Usage:

sudo procmon  # TUI mode
sudo procmon -c /tmp/trace.db  # Headless mode
๐Ÿ”ง strace-parser (GitLab)

Link: https://gitlab.com/gitlab-com/support/toolbox/strace-parser

What it does: Summarizes strace output with per-PID statistics.

Why itโ€™s useful:

  • Built by GitLab Support for debugging Gitaly/Unicorn
  • More detailed than strace -c
  • Shows parent/child process breakdown
  • Practitioner tool โ€” battle-tested

TIER B โ€” Specialized/Forensics

๐Ÿ”ฌ opentelemetry-ebpf-profiler

Link: https://github.com/open-telemetry/opentelemetry-ebpf-profiler

What it does: Whole-system cross-language profiler.

Why itโ€™s useful:

  • Profiles C/C++, Go, Rust, Python, Java, Node, .NET, PHP, Ruby, Perl
  • 1% CPU overhead, ~250MB memory
  • Mixed stacktraces from kernel โ†’ system libs โ†’ high-level language
  • No debug symbols required
  • CO-RE (works across kernel versions)
๐Ÿ”ฌ redcanary-ebpf-sensor

Link: https://github.com/redcanaryco/redcanary-ebpf-sensor

What it does: Security-focused BPF programs for kernel event collection.

Why itโ€™s useful:

  • Gathers process lineage, network connections, file access
  • Selectively loads probes based on kernel version
  • Made by Red Canary (legit security company)
๐Ÿ”ฌ dockerfileview

Link: https://github.com/remore/dockerfileview

What it does: Traces Docker image ancestry.

Why itโ€™s useful:

  • See the full Dockerfile chain from base image to current
  • dockerfileview nginx:1.9.2 reveals all FROM layers

:window: WINDOWS

TIER S โ€” The Hidden Gems

โญ wuanzhuan/system_monitor โ€” Rust ETW Procmon Replacement

Link: https://github.com/wuanzhuan/system_monitor

What it does: Windows kernel event monitoring via ETW, written in Rust.

Why itโ€™s a gem:

  • Literal procmon replacement โ€” the description says it
  • More events and better filtering than original
  • Handle leak detection โ€” can run for WEEKS tracking leaks
  • Rust = memory safe, fast, modern

Use case: Debug handle leaks that only manifest after days of runtime. Original ProcMon canโ€™t do this reliably.

โญ wtrace โ€” Single Binary CLI Power

Link: https://github.com/lowleveldesign/wtrace

What it does: Command-line ETW tracing tool.

Why itโ€™s a gem:

  • Single .exe file โ€” no install
  • Traces file I/O, registry, network, RPC calls
  • Process tree in summary โ€” shows hierarchy at end of session
  • Can trace specific process + all children with -c
  • Resolves RPC procedure names
  • Works on Windows 8.1+

Installation:

choco install wtrace
# OR download from GitHub releases

Usage:

wtrace notepad c:\temp\test.txt  # Start and trace
wtrace -c 1234                    # Trace PID and children
wtrace --handlers file -f 'eventname=FileIO/Write'  # Filter
โญ ferrisetw โ€” Rust KrabsETW

Link: https://github.com/n4r1b/ferrisetw

What it does: Rust library for ETW consumption.

Why itโ€™s a gem:

  • Started as KrabsETW port, now diverging with Rust idioms
  • Full ETW provider support
  • Proper Rust error handling
  • Actively maintained
  • Credits Microsoftโ€™s KrabsETW team

Use case: Building your own Rust-based monitoring tools on Windows.

TIER A โ€” Solid Alternatives

๐Ÿ”ง krabsetw (Microsoft Official)

Link: https://github.com/microsoft/krabsetw

What it does: Modern C++ and .NET wrapper for ETW.

Why itโ€™s useful:

  • Made by Microsoft (Office 365 Security team)
  • Production-proven
  • Called โ€œLobstersโ€ internally
  • NuGet packages available

Use case: Building enterprise monitoring tools in C++ or .NET.

๐Ÿ”ง ProcMonX / ProcMonXv2

Link: https://github.com/zodiacon/ProcMonX | https://github.com/zodiacon/ProcMonXv2

What it does: Extended Process Monitor using ETW instead of kernel driver.

Why itโ€™s useful:

  • No kernel driver needed โ€” ETW only
  • Made by Pavel Yosifovich (Windows Internals expert)
  • GUI interface
  • v2 is the newer version
๐Ÿ”ง PowerKrabsEtw

Link: https://github.com/zacbrown/PowerKrabsEtw

What it does: PowerShell interface for real-time ETW tracing.

Why itโ€™s useful:

  • Trace-KrabsEtwProcess โ€” like ProcMon for specific process
  • Create custom providers, filters, traces
  • PowerShell-native (no compiled binaries needed for basic use)

Note: Start PowerShell with -MTA flag.

๐Ÿ”ง UIforETW (Google)

Link: https://github.com/google/UIforETW

What it does: User interface for recording and managing ETW traces.

Why itโ€™s useful:

  • Made by Google โ€” used for Chrome performance
  • Works around bugs in Windows Performance Toolkit
  • Records additional context (user input, CPU temp)
  • Fixes symbol loading issues
  • Categorizes Chrome processes automatically

Tutorials: https://tinyurl.com/etwcentral

๐Ÿ”ง VISION-ProcMon

Link: https://github.com/forensicxlab/VISION-ProcMon

What it does: Rust + Tauri visualization for ProcMon output.

Why itโ€™s useful:

  • Malware analysis focused
  • Beautiful web-based visualization
  • Cross-platform (Tauri)
  • Designed for behavioral analysis

TIER B โ€” Built-in / Reference

๐Ÿ”ฌ Built-in Windows Commands

Hidden gems most people donโ€™t know:

# Quick process tree with parent info
wmic process get processid,parentprocessid,commandline

# ETW providers list
logman query providers

# ETW provider details
logman query providers Microsoft-Windows-Kernel-Process

Event Log: Event ID 4688 (Process Creation) โ€” requires Audit Process Creation policy enabled.

๐Ÿ”ฌ ETWExplorer

Use for deep provider inspection โ€” see what events and data each provider offers.

Referenced in multiple red team resources for understanding ETW capabilities.


:red_apple: macOS

TIER S โ€” The Hidden Gems

โญ mac-monitor โ€” 'The Missing ProcMon for macOS'

Link: https://github.com/redcanaryco/mac-monitor

What it does: Full Endpoint Security event monitoring with GUI.

Why itโ€™s a gem:

  • Made by Red Canary โ€” real security company
  • Process lineage subtree โ€” click any event, see the family tree
  • Event correlation โ€” related events grouped together
  • Dynamic event subscriptions โ€” modify what youโ€™re watching on the fly
  • Path muting at API level
  • High fidelity ES events with enrichment (File Quarantine, code signing certs)
  • Exports to ESLogger-compatible JSON

Requirements:

  • Apple Silicon recommended (Intel works)
  • Full Disk Access permission
  • System Extension approval

Installation: Download from https://github.com/Brandon7CC/mac-monitor/releases

โญ eslogger โ€” Already On Your Mac

What it does: Built-in Endpoint Security framework logger (macOS 13+).

Why itโ€™s a gem:

  • No SIP disable needed
  • No extra software
  • JSON output โ€” pipe to jq for filtering
  • Works with Full Disk Access permission

Usage:

# List all executables launched
sudo eslogger exec | jq -r '.event.exec.target.executable.path'

# Monitor files accessed by git
sudo eslogger stat | jq -r 'select(.process.executable.path | test("/git$")) | .event.stat.target.path'

Note: Apple doesnโ€™t guarantee stable API โ€” but it works great for research.

โญ strace-macos

Link: https://github.com/Mic92/strace-macos

What it does: strace clone for macOS.

Why itโ€™s a gem:

  • Finally, actual strace on Mac
  • Install via pipx: env PIPX_DEFAULT_PYTHON='/usr/bin/python3' pipx install git+https://github.com/Mic92/strace-macos

TIER A โ€” Solid Alternatives

๐Ÿ”ง esl

Link: https://github.com/tstromberg/esl

What it does: Go library for consuming EndpointSecurity events via eslogger.

Why itโ€™s useful:

  • Programmatic access to eslogger
  • Example CLI included
  • Experimental but functional
๐Ÿ”ง esfriend

Link: https://github.com/mcarmanize/esfriend

What it does: Minimal malware analysis sandbox for macOS.

Why itโ€™s useful:

  • Uses eslogger for event collection
  • Designed for physical Mac as sandbox
  • Uses Faronics Deep Freeze for cleanup
  • Split exec/close events for accuracy
๐Ÿ”ง DTraceToolkit

Link: https://www.brendangregg.com/dtrace.html

What it does: 200+ DTrace scripts by Brendan Gregg.

Why itโ€™s useful:

  • The OG observability toolkit
  • Scripts for process, I/O, network, everything
  • Many included in macOS by default

Key scripts:

# New processes with arguments
sudo dtrace -n 'proc:::exec-success { trace(curpsinfo->pr_psargs); }'

# Files opened by process
sudo dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'

Note: Requires SIP disabled for full functionality. Or use eslogger instead.

๐Ÿ”ง fs_usage โ€” Built-in

What it does: File system usage monitor.

Usage:

sudo fs_usage -w -f exec  # Trace all exec calls

Already installed on every Mac.

TIER B โ€” Reference

๐Ÿ”ฌ Endpoint Security Framework Deep Dive

Wiki: https://github.com/redcanaryco/mac-monitor/wiki

Covers:

  • ES API internals
  • Client initialization
  • Event subscriptions
  • endpointsecurityd daemon analysis
  • Frida instrumentation techniques

Required reading if building ES-based tools.


:robot: ANDROID

TIER A โ€” The Main Tools

๐Ÿ”ง Frida โ€” The Swiss Army Knife

Link: https://frida.re/

What it does: Dynamic instrumentation toolkit โ€” inject scripts into running apps.

Why itโ€™s the standard:

  • Works on Android, iOS, Windows, macOS, Linux
  • frida-ps -U โ€” list processes on USB device
  • frida-trace -U -i open -N com.app โ€” trace function calls
  • Bypass root detection, SSL pinning
  • Massive community + script library: https://codeshare.frida.re/

Setup:

# On computer
pip install frida-tools

# On rooted Android device
adb push frida-server /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/frida-server"
adb shell "/data/local/tmp/frida-server &"

# Test
frida-ps -U

Note: Requires rooted device OR Frida Gadget injection for non-rooted.

๐Ÿ”ง android-trace

Link: https://github.com/HayesGordon/android-trace

What it does: Frida-node CLI wrapper for class/method tracing.

Why itโ€™s useful:

  • Easier than raw Frida for class enumeration
  • Filter by regex
  • JSON config for batch tracing

Usage:

node index.js -U -n com.app.package -F "com.app.package"
๐Ÿ”ง strace for Android

Links:

Why the Binder fork matters: Android IPC uses Binder protocol. Stock strace doesnโ€™t decode it. xdbobโ€™s fork does.

TIER B โ€” Built-in Tools

๐Ÿ”ฌ ADB Built-in Commands
# See app launches (events log)
adb logcat -b events | grep am_proc_start

# Process hierarchy and who started what
adb shell dumpsys activity processes

# Basic parent-child relationships
adb shell ps -A -o PID,PPID,NAME

# Get APK path
adb shell pm path com.app.package

# Send input events
adb shell input tap 500 500

:globe_with_meridians: CROSS-PLATFORM / BONUS

๐ŸŽจ r-top โ€” Rust TUI with Shaders

Link: https://github.com/asian-mario/r-top

What it does: Process monitor/manager with visual effects.

Platform: Unix-like systems

Why itโ€™s cool: Uses ratatui + tachyonfx for shader effects. Looks amazing.

๐ŸŽจ rustnet-monitor

Link: https://docs.rs/crate/rustnet-monitor/latest

What it does: Cross-platform network monitoring TUI.

Platforms: Linux (eBPF), macOS (getifaddrs), Windows (GetIfTable2)

Features:

  • Real-time TCP/UDP/ICMP/ARP monitoring
  • Connection state tracking
  • Deep packet inspection
  • eBPF on Linux for low overhead

:bar_chart: FULL COMPARISON MATRIX

Tool Platform Explains WHY Real-time No-root eBPF/ETW TUI/GUI Process Tree Debugger
witr Linux/macOS :white_check_mark: BEST :cross_mark: :white_check_mark: :cross_mark: :cross_mark: :white_check_mark: text :cross_mark:
tracexec Linux :warning: raw :white_check_mark: :warning: :white_check_mark: :white_check_mark: TUI :cross_mark: :white_check_mark:
extrace Linux :warning: raw :white_check_mark: :cross_mark: :cross_mark: :cross_mark: :white_check_mark: indent :cross_mark:
execsnoop Linux :cross_mark: :white_check_mark: :cross_mark: :white_check_mark: :cross_mark: :cross_mark: :cross_mark:
pspy Linux :cross_mark: :white_check_mark: :white_check_mark: :cross_mark: :cross_mark: :cross_mark: :cross_mark:
forkstat Linux :cross_mark: :white_check_mark: :cross_mark: :cross_mark: :cross_mark: :cross_mark: :cross_mark:
strace-process-tree Linux :cross_mark: :cross_mark: post :white_check_mark: :cross_mark: :cross_mark: :white_check_mark: :cross_mark:
visual-strace Linux :cross_mark: :cross_mark: post :white_check_mark: :cross_mark: :white_check_mark: web :white_check_mark: graph :cross_mark:
system_monitor Windows :warning: raw :white_check_mark: :cross_mark: :white_check_mark: ETW :cross_mark: :cross_mark: :cross_mark:
wtrace Windows :warning: raw :white_check_mark: :cross_mark: :white_check_mark: ETW :cross_mark: :white_check_mark: summary :cross_mark:
ProcMonX Windows :warning: raw :white_check_mark: :cross_mark: :white_check_mark: ETW :white_check_mark: GUI :white_check_mark: :cross_mark:
mac-monitor macOS :warning: raw :white_check_mark: :cross_mark: ES API :white_check_mark: GUI :white_check_mark: :cross_mark:
eslogger macOS :cross_mark: :white_check_mark: :cross_mark: ES API :cross_mark: :cross_mark: :cross_mark:
Frida All :cross_mark: :white_check_mark: :cross_mark: :cross_mark: :cross_mark: :cross_mark: :white_check_mark:

Legend:

  • :white_check_mark: = Yes
  • :cross_mark: = No
  • :warning: raw = Shows data but YOU interpret it (vs witr which explains)

:bullseye: STRATEGIC RECOMMENDATIONS

Quick Reference: Which Tool For Which Job

Situation Linux Windows macOS Android
โ€œExplain this processโ€ witr โ€” witr โ€”
Watch everything live tracexec wtrace mac-monitor Frida
No admin/root access pspy โ€” โ€” โ€”
Production monitoring execsnoop system_monitor eslogger โ€”
Post-mortem analysis strace-process-tree VISION-ProcMon โ€” โ€”
Visual graphs visual-strace ProcMonX mac-monitor โ€”
Build custom tools bcc/bpftrace krabsetw esl Frida

Upgrade Path (Code Block)

QUICK CHECK:      witr (Linux/Mac) โ€” still the best for explanation synthesis
DEEP DEBUGGING:   tracexec (Linux) | mac-monitor (macOS) | wtrace (Windows)
PRODUCTION:       execsnoop (Linux eBPF) | system_monitor (Windows ETW)
NO ROOT:          pspy (Linux) | eslogger (macOS)
VISUALIZATION:    visual-strace (browser) | strace-process-tree (CLI)
MOBILE:           Frida (Android/iOS)

:crystal_ball: WHAT DOESNโ€™T EXIST YET (Project Ideas)

These tools would complete the ecosystem but nobodyโ€™s built them:

Gap Description Difficulty
Cross-platform witr Same โ€œexplain whyโ€ synthesis on Windows/macOS Medium
Historical explainer โ€œWhy was this running at 3am?โ€ using audit logs Hard
Package-aware identifier โ€œThis is nginx from aptโ€ or โ€œnode from nvmโ€ Medium
AI process explainer LLM summarizing process chains into plain English Easy-Medium
Unified timeline Merge events from multiple tools into single view Hard

Free startup ideas. Youโ€™re welcome.


:clipboard: VALIDATION: Why This List Is Different

How we know these are real gems:

  • :white_check_mark: Not page-1 Google results
  • :white_check_mark: Posted by practitioners (kxxt, leahneukirchen, Brendan Gregg, Colin Ian King, Pavel Yosifovich)
  • :white_check_mark: All have working binaries/packages
  • :white_check_mark: Provides actual leverage (debugging, security, forensics)
  • :white_check_mark: โ€œWhere tf did you find this?โ€ factor
  • :white_check_mark: Beginners donโ€™t stumble on these accidentally

Failed search paths (so you donโ€™t waste time):

  • โ€œprocess ancestryโ€ โ†’ returns genealogy software (Gramps, GEDCOM)
  • โ€œLinux process monitorโ€ โ†’ returns top/htop tutorials
  • โ€œsystemd process originโ€ โ†’ returns GitHub issues, not tools
  • Generic Rust/Go process spawn searches โ†’ language stdlib issues

:link: MASTER LINK LIST

Linux

Windows

macOS

Android

Cross-Platform


Your computerโ€™s been keeping secrets. Now you have the tools to read its diary. :unlocked:

11 Likes

Thank you for the marvelous share @SRZ as always.

1 Like