All Projects → eset → Ipyida

eset / Ipyida

Licence: other
IPython console integration for IDA Pro

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Ipyida

obfDetect
IDA plugin to pinpoint obfuscated code
Stars: ✭ 99 (-72.35%)
Mutual labels:  ida, ida-pro, ida-plugin, idapython
ida migrator
IDA Migrator is an IDA Pro plugin which helps migrate existing work from one database instance to another. It Conveniently migrates function names, structures and enums.
Stars: ✭ 65 (-81.84%)
Mutual labels:  ida, ida-pro, ida-plugin, idapython
Idarling
Collaborative Reverse Engineering plugin for IDA Pro & Hex-Rays
Stars: ✭ 588 (+64.25%)
Mutual labels:  ida, ida-pro, ida-plugin, idapython
Idangr
Use angr in the IDA Pro debugger generating a state from the current debug session
Stars: ✭ 214 (-40.22%)
Mutual labels:  ida, ida-pro, ida-plugin, idapython
Hyara
Yara rule making tool (IDA Pro & Binary Ninja & Cutter Plugin)
Stars: ✭ 142 (-60.34%)
Mutual labels:  ida, ida-pro, ida-plugin, idapython
Necromancer
IDA Pro V850 Processor Module Extension
Stars: ✭ 21 (-94.13%)
Mutual labels:  ida, ida-pro, ida-plugin, idapython
Flare Ida
IDA Pro utilities from FLARE team
Stars: ✭ 1,374 (+283.8%)
Mutual labels:  ida, ida-pro, ida-plugin, idapython
IDA7-FunctionStringAssociate
FunctionStringAssociate plugin by sirmabus, ported to IDA 7
Stars: ✭ 17 (-95.25%)
Mutual labels:  ida, ida-pro, ida-plugin
DriverBuddyReloaded
Driver Buddy Reloaded is an IDA Pro Python plugin that helps automate some tedious Windows Kernel Drivers reverse engineering tasks
Stars: ✭ 210 (-41.34%)
Mutual labels:  ida, ida-plugin, idapython
IDAShell
Shell extension for opening executables in IDA
Stars: ✭ 172 (-51.96%)
Mutual labels:  ida, ida-pro, ida-plugin
Rematch
REmatch, a complete binary diffing framework that is free and strives to be open source and community driven.
Stars: ✭ 141 (-60.61%)
Mutual labels:  ida, ida-pro, ida-plugin
DrGadget
dr.rer.oec.gadget IDAPython plugin for the Interactive Disassembler <ABANDONED PROJECT>
Stars: ✭ 61 (-82.96%)
Mutual labels:  ida-pro, ida-plugin, idapython
Dereferencing
IDA Pro plugin that implements more user-friendly register and stack views
Stars: ✭ 336 (-6.15%)
Mutual labels:  ida-pro, ida-plugin, idapython
idapm
idapm is IDA Plugin Manager via GitHub Repository.
Stars: ✭ 50 (-86.03%)
Mutual labels:  ida, ida-pro, ida-plugin
idaplugins
Random IDA scripts, plugins, example code (some of it may be old and not working anymore)
Stars: ✭ 24 (-93.3%)
Mutual labels:  ida, ida-pro, ida-plugin
Hrdevhelper
Context-sensitive HexRays decompiler plugin that visualizes the ctree of decompiled functions.
Stars: ✭ 193 (-46.09%)
Mutual labels:  ida, ida-pro, idapython
xray
Hexrays decompiler plugin that colorizes and filters the decompiler's output based on regular expressions
Stars: ✭ 97 (-72.91%)
Mutual labels:  ida, ida-pro, idapython
ida-embed-arch-disasm
Allows IDA PRO to disassemble x86-64 code (WOW64) in 32-bit database
Stars: ✭ 22 (-93.85%)
Mutual labels:  ida-pro, ida-plugin, idapython
Scratchabit
Easily retargetable and hackable interactive disassembler with IDAPython-compatible plugin API
Stars: ✭ 369 (+3.07%)
Mutual labels:  ida, ida-plugin, idapython
Amie
A Minimalist Instruction Extender for the ARM architecture and IDA Pro
Stars: ✭ 136 (-62.01%)
Mutual labels:  ida, ida-pro, idapython

= IPyIDA

IPyIDA is a python-only solution to add an IPython console to IDA Pro. Use <Shift-.> to open a window with an embedded Qt console. You can then benefit from IPython's autocompletion, online help, monospaced font input field, graphs, and so on.

You can also connect to the kernel outside of IDA using ipython console --existing.

image::ipyida-screenshot.png[IPyIDA screenshot,width=100%]

== Install

IPyIDA has been tested with IDA 6.6 and up on Windows, OS X and Linux, up to 7.4.

=== Fast and easy install

A script is provided to install IPyIDA and its dependencies automagically from the IDA console. Simply copy the following line to the IDA console.

.Python 2 [source,python]

import urllib2; exec urllib2.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read()

.Python 3 [source,python]

import urllib.request; exec(urllib.request.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read())

On macOS, Python3.framework does not provide a trusted CA file. You can use the system-wide file /etc/ssl/cert.pem.

[source,python]

import urllib.request; exec(urllib.request.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py', cafile="/etc/ssl/cert.pem").read())

The script will do the following:

  1. Install pip if it's not already installed
  2. Install the ipyida package from https://pypi.org/project/ipyida/[PyPi]
  3. Copy ipyida_plugin_stub.py to the user's plugins directory
  4. Load the IPyIDA plugin

You can inspect the link:install_from_ida.py[] script if you wish to see exactly what it does.

WARNING: Don't panic. It's normal to see Windows' command prompt window open during the installation on Windows.

==== Upgrading

Rerun the install script to update to the latest version and restart IDA.

=== Install it the IDA way

This is not the recommend way of installing IPyIDA but if you insist, you can copy ipyida_plugin_stub.py and the ipyida directory inside IDA's plugins directory.

This method requires that you manage dependencies on your own. IPyIDA requires the ipykernel and qtconsole package.

== Customizing the IPython console

By default, the console does not have any globals available. If you want to have module imported before the console is opened, IPyIDA will read the ipyidarc.py file from the IDA user directory (idaapi.get_user_idadir()). Anything you import in this file will be available in the IPython console.

The is similar to the idapythonrc.py file.

=== Dark mode

With a dark theme in IDA Pro, it's more convenient to also have a dark theme in the IPython console. To activate the dark theme built into qtconsole, add the following in your ipyidarc.py:

[source, python]

import qtconsole.styles import ipyida.ida_qtconsole ipyida.ida_qtconsole.set_widget_options(dict( style_sheet = qtconsole.styles.default_dark_style_sheet, syntax_style = qtconsole.styles.default_dark_syntax_style ))

== Caveats

=== Notebook not working

IPython notebook cannot attach to an existing kernel like ipython console and ipython qtconsole do. There's some more background info here: https://github.com/ipython/ipython/issues/4066.

There are workarounds to this be I didn't include one yet. I will consider adding it if it's not too hackish. Pull requests are welcome.

=== External console not responding if IDA's window is in the background for too long

This problem is specific to OS X's App Nap feature in OS X 10.9 and up. When running Disabling App Nap for IDA Pro seems to fix the problem, but is a a hack for now and will use more battery on a laptop, we should find a better solution.

Here is how to disable App Nap for IDA Pro:

[source,bash]

defaults write com.hexrays.idaq NSAppSleepDisabled -bool YES defaults write com.hexrays.idaq64 NSAppSleepDisabled -bool YES

== Similar work

@james91b also successfully integrated a IPython kernel in IDA. Being a non-Windows IDA user, I needed something cross-platform and took a Python-only approach to implement it. Although the some of the implementation idea comes from that project, IPyIDA was written from scratch. Hat tip to @james91b and all IDA_IPython contributors. IDA_IPython is available on Github at https://github.com/james91b/ida_ipython.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].