Options
This submenu allows you to change various options and settings:
See also Menu Bar submenus.
Text Representation Dialog
This command changes the look of the disassembly. Here you can change the values of the following checkboxes/input fields:
Line prefixes
IDA.CFG parameter: SHOW_LINEPREFIXES Number of opcode bytes
IDA.CFG parameter: OPCODE_BYTES Use segment names
IDA.CFG parameter: USE_SEGMENT_NAMES Segment addresses
IDA.CFG parameter: SHOW_SEGMENTS Function offsets
Right margin
IDA.CFG parameter: MAX_DATALINE_LENGTH Instruction indention
IDA.CFG parameter: INDENTION Display bad instruction <BAD> marks
IDA.CFG parameter: SHOW_BAD_INSTRUCTIONS Use tabulations in output
IDA.CFG parameter: USE_TABULATION low suspicious limit high suspicious limit Click here to get information about these fields. Display stack pointer
IDA.CFG parameter: SHOW_SP
Comments Dialog
This command changes the look of the disassembly comments. Here you can change the values of the following checkboxes/input fields:
Comment indention
IDA.CFG parameter: COMMENTS_INDENTION Display of 'suspicious' marks This option enables or disables suspicious marks display. Usually the suspicious marks are disabled because IDA displays the suspicious operands in red/orange anyway. IDA.CFG parameter: SHOW_SUSPICOUS Display of empty lines
IDA.CFG parameter: SHOW_EMPTYLINES Display of basic blocks
IDA.CFG parameter: SHOW_BASIC_BLOCKS Display borders between data/code
Note that you can hide a particular border by using hide border command. IDA.CFG parameter: SHOW_BORDERS Display comments
Display repeatable comments This command enables or disables the repeatable comments display. IDA.CFG parameter: SHOW_REPEATABLE_COMMENTS Display auto comments
IDA.CFG parameter: SHOW_AUTOCOMMENTS Display source lines
IDA.CFG parameter: SHOW_SOURCE_LINNUM Display try block lines
IDA.CFG parameter: SHOW_TRYBLOCKS
Cross References Dialog
IDA maintains cross-references automatically. Of course, when IDA starts to disassemble a new file, the cross-references will not appear immediately; they will be collected during background analysis.
This command changes the representation of cross references.
Display segments in xrefs
Display xref type mark
IDA.CFG parameter: SHOW_XREF_TYPES Display function offsets
IDA.CFG parameter: SHOW_XREF_FUNC Display xref values
IDA.CFG parameter: SHOW_XREF_VALUES Right margin
IDA.CFG parameter: MAX_XREF_LENGTH Cross reference depth
IDA.CFG parameter: MAX_TAIL Number of xrefs to display Determines the maximal number of the cross references to display. You may keep this value low because you can access all xrefs by using the Jump to cross reference command. IDA.CFG parameter: SHOW_XREFS
Disable undo
This command completely disables the undo feature.
See also
Assembler Directives Dialog
This command enables/disables the generation of some assembler directives, namely:
Sometimes (when you do not intend to assemble the output file), you may want to disable their generation.
Names Representation
Dummy names are automatically generated by IDA. They are used to denote subroutines, program locations and data.
Dummy names have various prefixes depending on the item type and value:
You can change representation of dummy names. IDA supports several types of dummy names:
If you have selected names type 10 (enumerated names), you may renumber them using a checkbox. The process is relatively fast, surprisingly.
The best representation for MS DOS programs is #0, for 16-bit processors - #7, and for 32-bit processors - #8. You can change dummy names type any time you want.
You can also set up types of names included in the name list. IDA knows about the following types of names:
Dummy names may be public or weak, but they never appear in the list of names. You can specify the type of a name when you create or modify it.
You can also set maximal length of new names. Old names will not be affected by this parameter.
See also: Rename command.
Demangled Names
IDA can demangle mangled C++ names of the most popular C++ compilers:
The demangled names are represented in two forms: short and long form. The short form is used when a name is used as a reference, the long form is used at the declaration.
You can set how demangled C++ names must be represented:
You can setup short and long forms of demangled names. Short form is used when a reference to the name is made; long form is used at the declaration.
To make demangled names more readable, we introduce the possibility to suppress pointer modifiers (near/far/huge).
To demangle GNU C v3.x names, the "Assume GCC v3.x names" checkbox should be set, otherwise such names might not be demangled. furthermore, to make the demangled name more compact, unsigned types may be displayed as uchar, uint, ushort, ulong. The same with signed basic types.
If the "Override type info" checkbox is set, the demangled name overrides the type information if both are present.
See also How to customize demangled names
Compiler
This dialog box allows the user to specify the compiler used to create the program along with the memory model, default calling convention, ABI and other parameters.
Please note that while some combinations of the parameters are meaningless, IDA doesn't check them for validity. It is up to the user to specify a correct combination.
IDA tries to determine the correct values automatically.
The include directories are a list of directories that look for the standard C headers. This parameter is used during parsing C header files. The directories must be separated by ';' in MS Windows and ':' in Linux. The predefined macros field has the same format and is used similarly. Please note that IDA doesn't define any compiler-specific macros by default.
Customize Demangled Names
All your changes will be saved in the current database. If you want to change the form of demangled names for all new databases, then you need to edit the configuration file, variables 'ShortNameForm' and 'LongNameForm'. Below is the list of all checkboxes with examples (spaces are inserted only for the ease of understanding):
Only main name
No underscores in calling conventions
No calling conventions for parameters and __based()
No return type of functions
No "based()" specifier
No calling conventions
No postfix const
No access keywords
No throw descriptions
No static and virtual keywords
No UDT keywords
No const and volatile keywords
No __closure keyword
No __unaligned keyword
No __pin/__box/__gc
Suppress pointer modifiers
Quash j_
Transfer j_
Ignore postfix _nn
String literal style dialog
With this dialog you can setup string styles and also create a new string immediately at the current location.
The following string styles are defined:
If you select "character terminated" string style then you may specify up to 2 termination characters. The string will be terminated by any of these characters. If the second character is equal to 0, then it is ignored.
In IDA Qt you can also set a specific encoding to be used to display the string, or change the defaults for all strings. See string encodings.
String options
This dialog sets up the string literals options:
Generate names
Names prefix
Mark as autogenerated If a name is marked as autogenerated, it will be displayed in a different color and will be included in the list of names depending on the current setting. Generate serial names
Each time you create a string literal, IDA generates a new serial name and assigns it to the string. String literal next line char
Comment string literal references:
String encodings
IDA Qt can display program strings using different encodings. You can specify default encodings for all strings or override the encoding of a specific string.
The following encodings can be used:
<default> - the default encoding for this string type (8-bit or 16-bit)
<no conversion> - the string bytes are printed using the current system encoding (after translating with XlatAsciiOutput array in the configuration file).
Windows codepages (e.g. 866, CP932, windows-1251)
Charset names (e.g. Shift-JIS, UTF-8, Big5)
You can add new encodings to the list using the context menu item Insert (Ins hotkey).
On Linux/OS X, you can run "iconv -l" to see the available encodings. Please note that some encodings are not supported on all systems.
Color configuration
This dialog allows you to customize the color settings.
IDA keeps the color configuration in the registry. There are 3 predefined schemes. The user can modify the existing schemes or add his own schemes. New schemes should be added to the "themes" subdirectory in IDA.
IDA keeps colors in file IDACOLOR.CF. This file may reside in the IDA directory or in the current directory. It is a binary file. IDA automatically saves all your changes into this file.
If the current item line prefix has "black on black" color, then the current item will not be highlighted. The same is with current line color - if it is "black on black", the current line will not be highlighted.
You can change the colors using the Customize button. You may have up to 4 different color palettes and switch between them on fly. The color palette is saved in IDACOLOR.CF file.
Each line prefix has its own color code depending on the current item: (the fourth color palette values are shown)
If the "current item" or "current line" are BLACK ON BLACK, then they will not be highlighted.
The rest of the line is colored with the following codes:
(Other, Default) color code is used if a token has no color attached to it.
Dump/normal View
This command switches the current disassembly window mode between dump mode and normal mode. Initially all disassembly windows are in normal mode so you can see instructions and data. When you are in dump mode, no instructions or data are displayed. All bytes of the program will be dumped on the screen as plain bytes and in ASCII. This command may be useful when you want to find something in the program visually. Do not forget that many commands continue to work in dump mode. For example, you can use binary search command.
The text version supports only paragraph aligned addressing in the view. Switching to the hex dump view and back may change the cursor position in the disassembly listing.
Setup data types
This command allows you to select the data types used in the round-robin carousel in MakeData command.
Valid data types are:
Naturally, not all data types are usable for all processors. For example, Intel 8051 processor doesn't have the 'double word' type.
Furthermore, this command allows you to select a data type for the current undefined item and convert it to data.
Please note that if the current processor does not support a data type, you cannot assign it even if you have selected it. If you unselect all data types, IDA will use the 'byte' type.
Processor Type
Valid processor types are:
Processor modules can accept additional options that can be passed on the commandline with the -p switch. Currently only the ARM module supports it. For example, -parm:ARMv7-A will turn on options specific for the ARMv7-A architecture, such as NEON instruction set.
For information about additional processor modules, please check supported processors
Please note that when you change the processor type, IDA may change the target assembler, so check it out.
You may get a message saying that IDA does not know the specified processor if IDA fails to load the corresponding processor module.
IDA determines the default processor using the input file extension and the contents of the input file. The table which describes the input file extensions and the corresponding processor types is located in IDA.CFG file and looks like this:
If you want to change the default processor type, you need to change this table. You may add/delete rows in this table.
See also: ARM processor specifics.
ARM processor specifics
Since architecture version v4 (introduced in ARM7 cores), ARM processors have a new 16-bit instruction set called Thumb (the original 32-bit set is referred to as "ARM"). Since these two sets have different instruction encodings and can be mixed in one segment, we need a way to specify how to disassemble instructions. For this purpose, IDA uses a virtual segment register named 'T'. If its value is 0, then ARM mode is used. Otherwise, Thumb mode is used. ARM is the default mode. Please note that if you change the value of T register for a range, IDA will destroy all instructions in that range because their disassembly is no longer correct.
IDA use UAL (Unified Assembly Language) syntax by default which uses the same syntax for both ARM and Thumb mode. If necessary, legacy assembler syntax can be selected in Analysis options.
To decode Aarch64 (ARM64) instructions the segment with instructions must be set to 64-bit.
Processor options for ARM
Simplify instructions
Disable pointer dereferencing
No automatic ARM-Thumb switch
Disable BL jumps detection
Scattered MOVT/MOVW pairs analysis A pair of MOVT and MOVW instructions can be used to load any 32-bit constant into a register without having to use the literal pool. For example: MOVW R1, #0xABA2 MOVT R1, #0x32AA is simplified by IDA into MOV R1, 0x32AAABA2 (unless macro creation is turned off)
Edit ARM architecture options
Command-line options
See
Set default segment register value commands to learn how to specify the segment register value.
Specify Target Assembler
This command allows you to change the target assembler, i.e. the assembler for which the output is generated. You select the target assembler from a menu. The menu items depend on the current processor type.
Analysis options
This command allows you to disable and enable the autoanalysis and its indicator.
Usually, the auto analysis is enabled. Disable it if you are sure that it will help you.
Here you can change various kernel analysis options 1 and options 2 and options 3, change the processor type (if the processor module supports several types), or the assembler style. If the current processor has options, there will also be a button to change processor-specific options. If the current processor supports memory mapping, there will also be a button to change the memory mapping ranges.
The analysis indicator is located in the bottom left corner of the main IDA window (upper right corner in text version). Possible values of the indicator:
Hint: you can right-click the analysis indicator to quickly disable or enable it, or to reanalyze the program.
See also auto analysis explanation.
Kernel analysis options 1
Trace execution flow This option allows IDA to trace execution flow and convert all references bytes to instructions. Mark typical code sequences as code
Locate and create jump tables
Control flow to data segment is ignored
Analyze and create all xrefs
Delete instructions with no xrefs This option allows IDA to undefine instructions without any xrefs to them. For example, if you undefine an instruction at the start of a function, IDA will trace execution flow and delete all instructions that lose references to them. Create function if data xref data->code32 exists
Create functions if call is present This option allows IDA to create function (proc) if a call instruction is present. For example, the presence of:
Create function tails
Create stack variables
Propagate stack argument information
Propagate register argument information
Trace stack pointer This option allows IDA to trace the value of the SP register. Perform full stack pointer analysis
Perform 'no-return' analysis
Try to guess member function types
See also analysis options 2 analysis options 3
Kernel analysis options 2
Truncate functions upon code deletion
Create string literals if data xref exists If IDA encounters a data reference to an undefined item, it checks for the presence of the string literal at the target. If the length of the candidate string literal is big enough (more than 4 chars in 16bit or data segments; more than 16 chars otherwise), IDA will automatically create a string literal. Check for unicode strings This option allows IDA to check for the presence of the unicode strings in the program and creates them if necessary. IDA will check for the unicode strings only if the string style is set to "C-style (0 terminated)" or "Unicode". Create offsets and segments using fixup info
You can display the relocation information attached to the current item by using show internal flags command. Create offset if data xref to seg32 exists
Convert 32bit instruction operand to offset
Automatically convert data to offsets
Use flirt signatures
Comment anonymous library functions
Multiple copy library function recognition
Automatically hide libary functions
Rename jump functions as j_...
Rename empty functions as nullsub_...
Coagulate data at the final pass This option is meaningful only if "Make final analysis pass" is enabled. It allows IDA to convert unexplored bytes to data arrays in the non-code segments. Coagulate code at the final pass This option is meaningful only if "Make final analysis pass" is enabled. It allows IDA to convert unexplored bytes to data arrays in the code segments. Make final analysis pass This option allows IDA to coagulate all unexplored bytes by converting them to data or instructions. See also analysis options 1 analysis options 3
Kernel analysis options 3
Enable EH analysis
Enable RTTI analysis
Enable macros
Merge strlits
See also analysis options 1 analysis options 2
Last updated
Was this helpful?
