> For the complete documentation index, see [llms.txt](https://bible.perkinsfund.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bible.perkinsfund.org/readme/the-scriptures/idapro.md).

# IDAPro

<div align="center"><img src="/files/CQEPwKyQQFbDQfQZYZVs" alt=""></div>

**Shameless plug**

This course is given to you for free by The Perkins Cybersecurity Educational Fund: <https://perkinsfund.org/>

Please consider donating to [The Perkins Cybersecurity Educational](https://donorbox.org/malware-bible-fund) Fund

You can also support The Perkins Cybersecurity Educational Fund by buying them a coffee

[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://ko-fi.com/perkinsfund)\*\*

***

### Index

* [Keys](#keys)
* [Navigation](#navigation)
* [Search](#search)
* [Graphing](#graphing)
* [Comments](#comments)
* [Data Format Options](#data-format-options)
* [Open Subviews](#open-subviews)
* [File Operations](#file-operations)
* [Debugger](#debugger)
* [Breakpoints](#breakpoints)
* [Watches](#watches)
* [Tracing](#tracing)
* [Misc](#miscellaneous)
* [Edit](#edit-data-types--etc)
* [Operand Type](#operand-type)
* [Segments](#segments)
* [Structs](#structs)
* [Functions](#functions)

***

### Keys

| Image                            | Description |
| -------------------------------- | ----------- |
| ![](/files/iDd5kaPcgVBT0049xzFT) | Shift key   |
| ![](/files/SyZvPQPQG4dIJMH3Bz1Z) | Alt key     |
| ![](/files/dG0fIYpSH46sgCBVsCH7) | Control key |
| ![](/files/4qbjacNyLTJuIavQqBDJ) | Escape key  |
| ![](/files/U6NZ2mqlUwvnCvRmsJBN) | Enter key   |

***

### Navigation

| Action                    | Shortcut                                                          |
| ------------------------- | ----------------------------------------------------------------- |
| Jump to operand           | ![](/files/U6NZ2mqlUwvnCvRmsJBN)                                  |
| Jump in new window        | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+![](/files/U6NZ2mqlUwvnCvRmsJBN) |
| Jump to previous position | ![](/files/4qbjacNyLTJuIavQqBDJ)                                  |
| Jump to Next position     | ![](/files/dG0fIYpSH46sgCBVsCH7)+![](/files/U6NZ2mqlUwvnCvRmsJBN) |
| Jump to address           | G                                                                 |
| Jump by name              | ![](/files/dG0fIYpSH46sgCBVsCH7)+L                                |
| Jump to function          | ![](/files/dG0fIYpSH46sgCBVsCH7)+P                                |
| Jump to segment           | ![](/files/dG0fIYpSH46sgCBVsCH7)+S                                |
| Jump to segment register  | ![](/files/dG0fIYpSH46sgCBVsCH7)+G                                |
| Jump to problem           | ![](/files/dG0fIYpSH46sgCBVsCH7)+Q                                |
| Jump to cross reference   | ![](/files/dG0fIYpSH46sgCBVsCH7)+X                                |
| Jump to xref to operand   | X                                                                 |
| Jump to entry point       | ![](/files/dG0fIYpSH46sgCBVsCH7)+E                                |
| Mark Position             | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+M                                |

***

### Search

| Action                 | Shortcut                           |
| ---------------------- | ---------------------------------- |
| Next code              | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+C |
| Next data              | ![](/files/dG0fIYpSH46sgCBVsCH7)+D |
| Next explored          | ![](/files/dG0fIYpSH46sgCBVsCH7)+A |
| Next unexplored        | ![](/files/dG0fIYpSH46sgCBVsCH7)+U |
| Immediate value        | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+I |
| Next immediate value   | ![](/files/dG0fIYpSH46sgCBVsCH7)+I |
| Text                   | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+T |
| Next text              | ![](/files/dG0fIYpSH46sgCBVsCH7)+T |
| Sequence of bytes      | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+B |
| Next sequence of bytes | ![](/files/dG0fIYpSH46sgCBVsCH7)+B |
| Not function           | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+U |

***

### Graphing

| Action         | Shortcut                             |
| -------------- | ------------------------------------ |
| Flow chart     | F12                                  |
| Function calls | ![](/files/dG0fIYpSH46sgCBVsCH7)+F12 |

***

### Comments

| Action                    | Shortcut                             |
| ------------------------- | ------------------------------------ |
| Enter comment             | ![](/files/iDd5kaPcgVBT0049xzFT)+;   |
| Enter repeatable comment  | ;                                    |
| Enter anterior lines      | Ins                                  |
| Enter posterior lines     | ![](/files/iDd5kaPcgVBT0049xzFT)+Ins |
| Insert predefined comment | ![](/files/iDd5kaPcgVBT0049xzFT)+F1  |

***

### Data Format Options

| Action              | Shortcut                           |
| ------------------- | ---------------------------------- |
| ASCII strings style | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+A |
| Setup data types    | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+D |

***

### Open Subviews

| Action            | Shortcut                             |
| ----------------- | ------------------------------------ |
| Names             | ![](/files/iDd5kaPcgVBT0049xzFT)+F4  |
| Functions         | ![](/files/iDd5kaPcgVBT0049xzFT)+F3  |
| Strings           | ![](/files/iDd5kaPcgVBT0049xzFT)+F12 |
| Segments          | ![](/files/iDd5kaPcgVBT0049xzFT)+F7  |
| Segment registers | ![](/files/iDd5kaPcgVBT0049xzFT)+F8  |
| Signatures        | ![](/files/iDd5kaPcgVBT0049xzFT)+F5  |
| Type libraries    | ![](/files/iDd5kaPcgVBT0049xzFT)+F11 |
| Structures        | ![](/files/iDd5kaPcgVBT0049xzFT)+F9  |
| Enumerations      | ![](/files/iDd5kaPcgVBT0049xzFT)+F10 |

***

### File Operations

| Action              | Shortcut                             |
| ------------------- | ------------------------------------ |
| Parse C header file | ![](/files/dG0fIYpSH46sgCBVsCH7)+F9  |
| Create ASM file     | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+F10 |
| Save database       | ![](/files/dG0fIYpSH46sgCBVsCH7)+W   |

***

### Debugger

| Action            | Shortcut                            |
| ----------------- | ----------------------------------- |
| Start process     | F9                                  |
| Terminate process | ![](/files/dG0fIYpSH46sgCBVsCH7)+F2 |
| Step into         | F7                                  |
| Step over         | F8                                  |
| Run until return  | ![](/files/dG0fIYpSH46sgCBVsCH7)+F7 |
| Run to cursor     | F4                                  |

***

### Breakpoints

| Action          | Shortcut                                                            |
| --------------- | ------------------------------------------------------------------- |
| Breakpoint list | ![](/files/dG0fIYpSH46sgCBVsCH7)+![](/files/SyZvPQPQG4dIJMH3Bz1Z)+B |

***

### Watches

| Action       | Shortcut |
| ------------ | -------- |
| Delete watch | Del      |

***

### Tracing

| Action      | Shortcut                                                            |
| ----------- | ------------------------------------------------------------------- |
| Stack trace | ![](/files/dG0fIYpSH46sgCBVsCH7)+![](/files/SyZvPQPQG4dIJMH3Bz1Z)+S |

***

### Miscellaneous

| Action                   | Shortcut                                  |
| ------------------------ | ----------------------------------------- |
| Calculator               | ![](/files/iDd5kaPcgVBT0049xzFT)+/        |
| Cycle through open views | ![](/files/dG0fIYpSH46sgCBVsCH7)+Tab      |
| Select tab               | ![](/files/SyZvPQPQG4dIJMH3Bz1Z) + \[1…N] |
| Close current view       | ![](/files/dG0fIYpSH46sgCBVsCH7)+F4       |
| Exit                     | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+X        |
| IDC Command              | ![](/files/iDd5kaPcgVBT0049xzFT)+F2       |

***

### Edit (Data Types – etc)

| Action             | Shortcut                             |
| ------------------ | ------------------------------------ |
| Copy               | ![](/files/dG0fIYpSH46sgCBVsCH7)+Ins |
| Begin selection    | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+L   |
| Manual instruction | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+F2  |
| Code               | C                                    |
| Data               | D                                    |
| Struct variable    | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+Q   |
| ASCII string       | A                                    |
| Array              | Num \*                               |
| Undefine           | U                                    |
| Rename             | N                                    |

***

### Operand Type

| Action                   | Shortcut                            |
| ------------------------ | ----------------------------------- |
| Offset (data segment)    | O                                   |
| Offset (current segment) | ![](/files/dG0fIYpSH46sgCBVsCH7)+O  |
| Offset by (any segment)  | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+R  |
| Offset (user-defined)    | ![](/files/dG0fIYpSH46sgCBVsCH7)+R  |
| Offset (struct)          | T                                   |
| Number (default)         | ![](/files/iDd5kaPcgVBT0049xzFT)+3  |
| Hexadecimal              | Q                                   |
| Decimal                  | H                                   |
| Binary                   | B                                   |
| Character                | R                                   |
| Segment                  | S                                   |
| Enum member              | M                                   |
| Stack variable           | K                                   |
| Change sign              | ![](/files/iDd5kaPcgVBT0049xzFT)+-  |
| Bitwise negate           | ![](/files/iDd5kaPcgVBT0049xzFT)+\` |
| Manual                   | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+F1 |

***

### Segments

| Action                        | Shortcut                           |
| ----------------------------- | ---------------------------------- |
| Edit segment                  | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+S |
| Change segment register value | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+G |

***

### Structs

| Action                  | Shortcut                           |
| ----------------------- | ---------------------------------- |
| Struct var              | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+Q |
| Force zero offset field | ![](/files/dG0fIYpSH46sgCBVsCH7)+Z |
| Select union member     | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+Y |

***

### Functions

| Action               | Shortcut                           |
| -------------------- | ---------------------------------- |
| Create function      | P                                  |
| Edit function        | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+P |
| Set function end     | E                                  |
| Stack variables      | ![](/files/dG0fIYpSH46sgCBVsCH7)+K |
| Change stack pointer | ![](/files/SyZvPQPQG4dIJMH3Bz1Z)+K |
| Rename register      | V                                  |
| Set function type    | Y                                  |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://bible.perkinsfund.org/readme/the-scriptures/idapro.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
