Skip to main content

Annotate IDA with source and line number information from a PDB

Project description

annotate_lineinfo

This IDAPython script/plugin will parse the PDB for the loaded executable and annotate the disassembly with source and line number information.

WinDbg TTD tutorial sample screenshot

Usage

Script

  • Option 1) Run annotate_lineinfo.py as a regular IDAPython script.

  • Option 2) From another script or the IDAPython console:

import annotate_lineinfo
annotate_lineinfo.ida_annotate_lineinfo()

Plugin

To install

  • Option 1) Run python setup.py install --install-ida-plugin=PATH to install annotate_lineinfo_plugin.py to PATH\plugins
    • If PATH is not specified, %IDAUSR% will be tried first
    • If %IDAUSR% does not exist, it defaults to %APPDATA%\Hex-Rays\IDA Pro
  • Option 2) Manually place annotate_lineinfo_plugin.py in the plugins directory of your IDA installation.

Annotate entire file

  • Use shortcut key Alt-Shift-A or run from Edit->Annotate lineinfo menu.

Disassembly view popup menu

  • Right click inside a function, select annotate
  • Select a range of instructions, right click, select annotate

Functions view popup menu

  • Select one or more functions, right click, select annotate

Each of the above actions has a corresponding remove annotations action.

On load, annotate_lineinfo attempts to locate the PDB in the following locations:

  • _NT_SYMBOL_PATH if set
  • IDA's default PDB download directory %TEMP%\ida
  • MSDIA defaults - Path in debug directory of executable, same path as executable

You may specify the PDB path manually, or request another auto-locate attempt (e.g. after IDA downloads the PDB), from the Edit->Annotate lineinfo menu.

Caveats

Only runs on Windows. This script makes use of the COM API provided by msdia[ver].dll to parse the PDB.

Project details


Release history Release notifications

This version

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for annotate-lineinfo, version 0.1
Filename, size File type Python version Upload date Hashes
Filename, size annotate_lineinfo-0.1.tar.gz (8.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page