Sometimes you know the structure size but not the actual layout yet. For example, when the size of memory being allocated for the structure is fixed:
In such cases, you can quickly make a dummy structure and then modify it as you analyze code which works with it. There are several approaches which can be used […]
When reverse engineering a big program, you often run into information stored in structures. The standard way of doing it involves using the Structures window and adding fields one by one, similar to the way you format data items in disassembly. But are there other options? Let’s look at some of them.
Using already formatted data
This […]
Arrays are used in IDA to represent a sequence of multiple items of the same type: basic types (byte, word, dword etc.) or complex ones (e.g. structures).
Creating an array
To create an array:
Create the first item;
Choose “Array…” from the context menu , or press *;
Fill in at least the Array size field and click OK.
Step 1 […]
While working in IDA, sometimes you may need to reanalyze some parts of your database, for example:
after changing a prototype of an external function (especially calling convention, number of purged bytes, or “Does not return” flag);
after fixing up incorrectly detected ARM/Thumb or MIPS32/MIPS16 regions;
after changing global processor options (e.g. setting $gp value in MIPS or […]
We’ve briefly covered batch mode last time but the basic functionality is not always enough so let’s discuss how to customize it.
Basic usage
To recap, batch mode can be invoked with this command line:
ida -B -Lida.log <other switches> <filename>
IDA will load the file, wait for the end of analysis, and write the full disassembly to […]
Most IDA users probably run IDA as a stand-alone application and use the UI to configure various options. However, it is possible to pass command-line options to it to automate some parts of the process. The full set of options is quite long so we’ll cover the more common and useful ones.
In the […]
With every IDA release, we publish detailed release notes describing various new features, improvements and bugfixes. While some of the additions are highlighted and therefore quite visible, others are not so obvious and may require careful reading. Having a closer look at these release notes, you will be surprised to see many small but […]
In IDA, highlight is the dynamic coloring of a word or number under the cursor as well as all matching substrings on the screen. In the default color scheme, a yellow background color is used for the highlight.
Highlight is updated when you click on a non-whitespace location in the listing or move the cursor with […]
In the previous post we talked about the basic usage of selection in IDA. This week we’ll describe a few more examples of actions affected by selection.
Firmware/raw binary analysis
When disassembling a raw binary, IDA is not always able to detect code fragments and you may have to resort to trial & error for finding the code […]
This week’s post is about selecting items in IDA and what you can do with the selection.
As a small change from the previous posts with mainly keyboard usage, we’ll also use the mouse this time!
Actions and what they are applied to
When an action is performed in IDA, by default it is applied only to the […]