Questions tagged [ida]

Interactive Disassembler Professional (formerly IDA Pro), a proprietary multi-platform disassembler by Hex-Rays.

IDA is arguably the most advanced disassembler on the market at the time of this writing. Created by Ilfak Guilfanov of Hex-Rays it is an invaluable tool for the reverse code engineer.

Main features/highlights

  • license allows you to reverse engineer IDA Pro itself
  • the interactivity which has given it its name. That is, the reverse engineer will be able to give IDA cues where the heuristics fail. Aside from that many features make the disassembly more readable (definition of structures, constants, anterior/posterior comments, repeatable comments, auto-commented opcodes).
  • can be scripted: since a few releases IDA includes a version of IDAPython. Before that existed IDC, a C dialect initially, later extended to include C++-like language features.
  • it is extensible: one can write plugins (even script plugins), processor modules, loaders and so on.
  • it is cross-platform - run on Windows, Linux ans OS X.
  • comes with a wealth of processor modules and loaders.
  • highly customizable
  • offering tools for and alike, such as connectivity to various local and remote debuggers (e.g. GDB, WinDbg) and Bochs to run snippets of or whole programs in a virtualized environment.

Hex-Rays Decompiler Plugin

The decompiler plugin requires IDA Pro to run. It supports multiple architectures (as of 2017: x86, x64, ARM, ARM64 and PPC). It has to be purchased separately (not included with IDA).

It allows to create pseudo-code from functions identified inside the IDA disassembly and then interactively change aspects of that, give the decompiler further cues and so on. The pseudo-code is akin of C and will, in fact, sometimes compile out of the box on a C compiler.

Blog

Hex-Rays runs a blog called Hexblog on which employees of the company describe scenarios of and give tips concerning IDA Pro usage.

Freeware version

The biggest disadvantage to hobbyists and students would be the steep price point, but IDA's makers also offer a freeware version for download.

The freeware version of IDA Pro, available here, lacks many of the features of the paid versions such as processor modules and support for a wealth of executable file formats. It also doesn't seem to have the same plugin and SDK support that comes with the two paid versions.

Links to third-party resources

2146 questions
32
votes
1 answer

How to reattach tabs in IDA?

I feel dumb for needing to ask, but I've been annoyed by this several times in the past and have yet to come across the answer. Sometimes, when rearranging tabs in IDA Pro, I accidentally detach the tab from the main window, leaving it floating in…
Kevin
  • 881
  • 7
  • 8
20
votes
1 answer

How do you search for unicode strings?

In all versions of IDA, I can't seem to be able to search for unicode strings. When reversing programs, I constantly see unicode strings that could have really helped if I could see them in the strings window, but I can't. Anyone have a solution?
user24091
15
votes
1 answer

Treating independent code as a function in IDA Pro

When reverse engineering programs, I often find functions like the one below. This function in particular has a set of nested if/else blocks (pink boxes) which would typically be fairly easy to follow. When code executes at the blue box however,…
amccormack
  • 1,326
  • 2
  • 13
  • 29
14
votes
2 answers

How do I know the bytes corresponding to an instruction in Hex view in IDA?

When I select an assembly instruction in IDA graph view, I want to see the exact bytes corresponding to the selected instruction when I switch to He view in IDA. How do I do that?
sherlock
  • 1,381
  • 3
  • 23
  • 40
11
votes
1 answer

How could I change an instruction in IDA Pro?

I'm trying to change an instruction in an executable that's loaded in IDA Pro v6.1 For example: lis r11, ((qword_90E1B2D8+0x10000)@h) to lis r10, unk_90E163D0@h Any help is appreciated, thank you very much.
user4128
  • 111
  • 1
  • 1
  • 3
11
votes
2 answers

Hooking to a function with variable argument list

I am using Detours 3.0 to hook onto a function I obtained from Ida Pro. The problem is I came across a function which I cannot seem to hook which is due to either invalid arguements or the fact that it uses a variable arguement list. int…
user1595145
  • 111
  • 1
  • 3
10
votes
1 answer

How to find entry point in .exe?

Kind of a simple question. How does a program like IDA locate the entry point of an exe? If I wanted to, could i find this with just a hex editor manually?
user3457614
  • 111
  • 1
  • 1
  • 3
9
votes
2 answers

Exporting structures and enums in IDA

It is possible to import structures and enums declarations from C files in IDA. However, is it possible to export structures and enums to C?
ekse
  • 2,208
  • 13
  • 19
9
votes
2 answers

Highlight Executed Basic Blocks in IDA

When I execute a program using IDA's debugger interface, I would like to see the basic blocks that were executed highlighted in the IDB. Is there a way to do this?
user2142
  • 1,537
  • 2
  • 14
  • 17
9
votes
2 answers

How to prevent automatic padding by IDA?

I defined a struct in a header file, similar to this one: struct STRUCT { char a; int b; }; This is parsed successfully by IDA, however it adds padding bytes after the char: 00000000 STRUCT struc ; (sizeof=0x4) 00000000 a …
heinrich5991
  • 627
  • 11
  • 21
9
votes
0 answers

replicate external bank switching in IDA Pro

I'm reverse engineering an embedded Z80 application in IDA Pro 7.0. The target system maps one address range to either of a pair of expansion boards. The address decode logic decides which board is mapped based on one bit in a memory-mapped…
Sam Hanes
  • 191
  • 2
8
votes
1 answer

How do you manage/backup your IDA database?

Recently I lost an important IDA database. Up until now, I manually made a copy of my work IDB every day, but that's obviously not a good backup technique. I was wondering how do you manage/backup your IDB. Like make a copy of the current IDB every…
Dominik Antal
  • 2,038
  • 22
  • 39
8
votes
2 answers

Adding Backlink for XREF in IDA

I have an indirect call to a function. I traced the program and added the target to the xref, so this works fine. The problem is though, that on the position where the call is, there is no link shown. I thought, that, when I add an XREF, both…
Devolus
  • 963
  • 1
  • 10
  • 21
8
votes
2 answers

Tracking What Is Done With a Function's Return Value

I wrote a simple IDA plugin that, after a function call, looks for mov MEM_LOCATION eax and adds a name for the memory where the return value is stored. I limit my search to only a few instructions after the function call and bail out if I see…
user2142
  • 1,537
  • 2
  • 14
  • 17
8
votes
1 answer

Upgrading IDA Free 5 Database to IDA 7 Freeware

With the release of IDA 7.0 Freeware, I've been wanting to open some of my academic projects I've been doing with IDA 5 in the new version. However, the database format has changed. I have a set of .idb files which will not be opened by IDA 7. What…
Kupiakos
  • 181
  • 5
1
2 3
19 20