CTRL+Enterto close a window- hold down
ALTto display shortcut options ALT-Xto save database
- The shortcut editor
Options, Shortcuts..can be used to modify shortcuts options - The comamnd pallete
Ctrl-Shift-Pallows to pull up all actions and invoke them. - Example, jump to next data,
CTRL-Shift-P, type "next data", enter, ui jumps to the next data
- Selecting large ranges of data can be done using
Edit, Begin selection, select the range, perform an operation and thenEdit, Abort selectionto deselect the data. - Using
Begin selectionallows for choosing a static offset that doesn't rely on selecting data, holding shift and scrollin with a mouse or keyboard. - The shortcut
ALT-Lcan also be used begin a selection and thenALT-Lagain to deselect the selection.
- Selecting data using
ALT-LorEdit, Begin selectionon raw binary, then pressingEdit, CodeorCopens a dialogue box with options for converting the selected bytes to instructions. Choosing theForceoption makes IDA scans the bytes and convert any undefined bytes to instructions. - A structure offset dialogue can be used by pressing
Tto populate structure offsets. Note: couldn't replicate with 9+. - Selecting a string and press
Acan be used to force the creation of strings. - Formatting data and then converting the data into a structure by right clicking and clicking
Create struct from selectioncan be quicker than creating the structure manually.
- A highlight can be saved by pressing
CTRL-ALT-1(up to 8 highlights can be saved). - A highlight can be removed by pressing
CTRL-ALT-1or the corresponding highlight number 1-8 - The next highlight can be navigated to by pressing
ALT-UPorALT-DOWN.
SHIFT-ALT-UPcan be used to find where a register was defined.SHIFT-ALT-DOWNcan be used to find where a register is used. source
- Covers the most common command line arguments.
- IDAlib is now recommended because it uses less system resources.
- The decompiler can be invoked via
ida -Ohexrays:outfile.c:ALL -A <filename> idat.exeis faster for batch analysis thanida.exe.
- Selecting bytes and then pressing
Ccan force a reanalysis of a selection of code. Similar to what is described in #04: More selection! - The whole database can be reanalyzed by
Menu Options , General…, Analysis Tab, Reanalyze program buttonor by right clicking on the bottom left corner of IDA and selectingReanalyze program.
- Arrays can be created by first creating the first item, choosing
Array..or by pressing* - This approach works well for string literals.
- IDA has Assembler level and C level types
- Structures can be created by selecting the formatted data or by defining the structures using
View, Open subviews, Local TypesorShift-F1
- The Structures view is no longer present in IDA.
TODO Review
- Selecting a string and pressing
ALT-Abrings up a dialogue to convert the string. Options, String literalsorALT-Aallows for configuring new encodings.Options, String literals, Manage defaultscan be used to configure the default encoding for a string.
:can be used to insert a comment;can be used to insert a repeatable commemnt- select first instruction in a function and then press
;to insert a function comment - An anterior comment is a comment that is inserted before an address as a seperate line(s)
- Press
insto enter an anterior comment - An posterior comment is a comment that is inserted after an address as a seperate line(s)
- Press
shift-insto enter an posterior comment
- Comments can be added to structure/enums or to individual members through the Locals Types view
- Comments in the Local Types view also appears in the disassembly
- There are two types of cross-references (aka. xrefs) code and data.
codexrefs have a relationship of jump, calls and flowdataxrefs have a relationship of read, write, offset and structure.- Shortcuts
x,ctrl-xand ctrl-j` can be used to navigate the xrefs. ctrl-xcan be useful to see xrefs to a function address without scrolling to the function start.
Note: Correct link to Cross references attributes documentation
- xrefs have their own viewer and is accesible via `View, Open Subviews, Cross references
- xrefs can be manually added by right clicking in the Cross references view and clicking
Add cross-reference.. - add_cref and add_dref can be used within IDAPython to programatically add xrefs.
Note: Edit, Plugin, Set Callee is no longer valid. IDAPython links are no longer valid on the blog post.
xfor xrefs is also avaliable in the decompiler view- Requires a cleaned up IDB but xrefs can be found that xref a structure, enum or local type.
Note: I was unabe to replicate the later due to my current working IDB
View, Open subviews, Function callscan be used to display the callee function and all the functions called.
gis used to navigate by entering an address, a name or evaluate an expression (e.g.here - 100)
?orView, Calculatoris a calculator but the highlighted selection can be used as input.
- Desktops can be rearranged, reset
Windows, Reset desktop, savedWindws, Save Desktopand loadedWindws, Load Desktop
wto zoom out (same as the small graph overview window),1to zoom back to 100%,ctrl-upto move to parent node,ctrl-downto move to child node(s)- double-click to jump to an edge
ctrl + mouse wheelto zoom in and out- Graph view documentation
- A register can be renamed by double-clicking on it,
NorRight click, Rename. - The register can be renamed for a defined start and end address. Useful for the liveness of a varibable being assinged to a general purpose register.
- Disassembly options can be accessed via
Options, General, Disassembly Tab - Graph and non-graph have seperate options.
- The
Display disassembly line partshas 4 notable options. See #25 on how to access the menu.= Line prefixes (non-graphycan be used to hide the section name and address (e.g. seg000:00000000000000BC)Stack pointerenables displaying the estimated stack pointer valueNumber of opcodes bytes (non-graph)enables displaying N number of bytes of the instruction. Personal favoriteAuto commentsenables a short description of the instruction.
- "sp-analysis failed" and "positive sp value has been detected" are errors that an incorrect stack delta was discovered
- To identify the error enabled the Disassembly option
Stack pointer(see #26: Disassembly options 2) - Aberrant increases and decreases to the stack point can then be manually reviewed
- Once identified, the stack delta can be modified by pressing
Alt–KorEdit, Functions, Change stack pointer…at where the error occurs and enter the correct stack-pointer change.
Note: It is recommend to read the blog post, Igor gives excellent examples of what are "usual" and "unusual" changes to the stack pointer
- When code is selected,
Jump, ..can be used to navigate to different parts (sections, file offset, etc) of the IDB. - The Functions view can be syncromized with the disassembly so the current function is highlighted. To enable this right click within the Functions view and select
Turn on synchronization - Folders can be created in the Functions view by right clicking in it and selecting
Create folder.. - Functions have different colors Cyan (library functions), Magenta (external thunk) and Lime (Lumina)
- Multiple functions can be selected/highlighted to work with.
Options, Colors, Current themecan be used to change/select default installed themes.- CSS-based styling
CTRL-1opens up the Quick view window.CTRL-2opens up the Debug view window.CTRL-3opens up the Plugin view window.
- Comments can be added to hidden code by right clicking
View, HideorCtrl+Numpad-and adding the Name - Use
Ctrl+Numpad-ifhideis not present when right clicking - Functions, structures, enums and decompiler can be hidden or opened.
- Script snippet window can be accessed via
File, Script Command..orShift+F2 - Recent scripts can be accessed via
View, Recent scriptsorAlt+F9
$IDAUSRcan be found at%APPDATA%/Hex-Rays/IDA Proon Windows and$HOME/.idaproon Linux and Mac- Modifications or new shortcuts are stored in
shortcuts.cfgwithin$IDAUSR - Plugins are stored in
$IDAUSR/plugins - Configuration files
ida.cfgandhexrays.cfgare stored in$IDAUSR/cfg - If
idapythonrc.pyis in$IDAUSRfunctions within it are executed and loaded at the end of IDAPython's initialization. This can be used to load common code or libraries.
- Dummy names are prefixes and suffixes added to addresses to help describe it's type
- They are special strings and therefore can not be used when renaming addresses
- Two other autogenerate names are
var_andarg_.
Template
# #
-
[source]()