All Projects → cblichmann → idajava

cblichmann / idajava

Licence: GPL-2.0 license
Java integration for Hex-Rays IDA Pro

Programming Languages

java
68154 projects - #9 most used programming language
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to idajava

IDAShell
Shell extension for opening executables in IDA
Stars: ✭ 172 (+588%)
Mutual labels:  ida-pro, ida-plugin
DrGadget
dr.rer.oec.gadget IDAPython plugin for the Interactive Disassembler <ABANDONED PROJECT>
Stars: ✭ 61 (+144%)
Mutual labels:  ida-pro, ida-plugin
Flare Ida
IDA Pro utilities from FLARE team
Stars: ✭ 1,374 (+5396%)
Mutual labels:  ida-pro, ida-plugin
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 (+160%)
Mutual labels:  ida-pro, ida-plugin
GraphGrabber
No description or website provided.
Stars: ✭ 22 (-12%)
Mutual labels:  ida-pro, ida-plugin
ida-embed-arch-disasm
Allows IDA PRO to disassemble x86-64 code (WOW64) in 32-bit database
Stars: ✭ 22 (-12%)
Mutual labels:  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 (+464%)
Mutual labels:  ida-pro, ida-plugin
Ida Rpc
Discord rich presence plugin for IDA Pro 7.0
Stars: ✭ 31 (+24%)
Mutual labels:  ida-pro, ida-plugin
Classinformer Ida7
ClassInformer backported for IDA Pro 7.0
Stars: ✭ 226 (+804%)
Mutual labels:  ida-pro, ida-plugin
Idangr
Use angr in the IDA Pro debugger generating a state from the current debug session
Stars: ✭ 214 (+756%)
Mutual labels:  ida-pro, ida-plugin
Functions Plus
IDA Pro plugin to show functions in a tree view
Stars: ✭ 79 (+216%)
Mutual labels:  ida-pro, ida-plugin
Hyara
Yara rule making tool (IDA Pro & Binary Ninja & Cutter Plugin)
Stars: ✭ 142 (+468%)
Mutual labels:  ida-pro, ida-plugin
Ida gel
A collection of IDA loaders for various game console ELF's. (PS3, PSVita, WiiU)
Stars: ✭ 76 (+204%)
Mutual labels:  ida-pro, ida-plugin
dynlib
IDA Pro plugin to aid PS4 user mode ELF reverse engineering.
Stars: ✭ 51 (+104%)
Mutual labels:  ida-pro, ida-plugin
Pytest Idapro
A pytest module for The Interactive Disassembler and IDAPython; Record and Replay IDAPython API, execute inside IDA or use mockups of IDAPython API.
Stars: ✭ 44 (+76%)
Mutual labels:  ida-pro, ida-plugin
Stingray
IDAPython plugin for finding function strings recursively
Stars: ✭ 110 (+340%)
Mutual labels:  ida-pro, ida-plugin
Ret Sync
ret-sync is a set of plugins that helps to synchronize a debugging session (WinDbg/GDB/LLDB/OllyDbg2/x64dbg) with IDA/Ghidra/Binary Ninja disassemblers.
Stars: ✭ 896 (+3484%)
Mutual labels:  ida-pro, ida-plugin
Necromancer
IDA Pro V850 Processor Module Extension
Stars: ✭ 21 (-16%)
Mutual labels:  ida-pro, ida-plugin
Hrdev
Hex-Rays Decompiler Enhanced View
Stars: ✭ 163 (+552%)
Mutual labels:  ida-pro, ida-plugin
idapm
idapm is IDA Plugin Manager via GitHub Repository.
Stars: ✭ 50 (+100%)
Mutual labels:  ida-pro, ida-plugin

IdaJava 0.3

IdaJava is a plugin for IDA Pro that allows to write IDA plugins in Java. In other words: IdaJava is to Java like IDAPython is to Python... The plugin creates an in-process Java VM and looks for JAR files in IDA's plugins directory. Each Java based plugin gets their own menu item in Edit|Plugins.

NOTE (2017): This is old code that will likely no longer work. It's mainly here for reference. I don't plan on making further changes.

Table of Contents

Requirements

Obviously:

  • Windows version of IDA Pro, preferrably 5.7 (earlier versions are untested but may work)
  • 32-bit Sun JRE (even on 64-bit Windows), version 1.6.0 or higher (tested with 1.6.0_21)

To rebuild language bindings:

Bugs

There are quite a few rough edges:

  • When closing IDA, the embedded Java VM does properly release its resources, but due to a bug in the VM itself, it always exits with an assertion. IDA databases are properly closed and the only thing that a user will notice is a hs-xxxxx.log file after closing IDA.

  • The API is quite incomplete. Need more SWIG bindings. Started conversion of idc.idc (about 20% done top-to-bottom).

  • Runs only on Windows at the moment

  • Painting issues when creating TForm's with embedded AWT or Swing GUIs. The custom WindowProc that is set on the handle returned by IDA is never called. The embedded window always has width x height = 10000 x 10000.

  • When using RMI to remotely control IDA, exiting IDA may result in un-marshalling errors.

  • Generally not production-level code, since I (Christian) wrote the plugin initially as an automation tool for myself.

How to build

IdaJava was developed using Visual Studio 2010, but should compile on Visual Studio 2005/2008 as well. Just link with jvm.lib from a 32-bit Sun JDK and the ida.lib from the IDA 5.7 SDK. There are no other dependencies.

To rebuild the SWIG bindings, edit CallSwig.cmd and execute it. It will produce quite a few warnings, though.

The Java part of IdaJava was developed with Eclipse 3.6. Earlier versions will work as well. The complete project is included.

Source code is in part documented using JavaDoc-style comments. Java sources can thus be processed with JavaDoc, C++ sources with Doxygen.

The folder structure is roughly:

idajava/
+- javasrc/      Java project
|  +- bin/       Compiled Java classes
|  +- src/       Java source folder
|  +- external/  External source packages of used libraries
|  +- lib/       Jar files needed for building
+- cppsrc/       C++ project
|  +- Debug/     Debug build result files
|  +- Release/   Release build results files
|  +- src/       C++ sources
+- CONTRIBUTERS
+- LICENSE
+- README.md

Installation

  1. Copy the file cppsrc\Debug\idajava.plw to your IDA plugin directory.
  2. Copy the folder javasrc\bin\de folder to your IDA plugin directory
  3. Copy the sample plugin javasrc\sample-plugin.jar to a sub directory java in your IDA directory.
  4. Import cppsrc\EmptyPluginSettings.reg into the registry (the registry path HKCU\Software\blichmann.de\IdaJava\0.3 must exist).

Using the steps above, the Java part of IdaJava will be run from the compiled .class files instead of a JAR file. After loading a database, invoke the plugin with CTRL+8, it should display a small about dialog. To invoke the sample plugin, use the Edit|IdaJava Hello World Plugin menu item. It should display the current screen address in decimal.

Developing Java Plugins for IDA

  1. Extend your plugin class from de.blichmann.idajava.api.plugin.IdaPlugin and implement the getDisplayName(), getHotkey() and run() methods (see the Java source, esp. de.blichmann.idajava.samples.HelloIdaPlugin).
  2. Package your plugin as a JAR file (you can use Eclipse or an Ant task for that) and drop it in a directory IDADIR\java.

You can attach a debugger to the running Java VM inside of IDA. Your other options are of course System.out.println() and/or logging, sorry.

Access to a large part of the IDA SDK is provided through the classes of the de.blichmann.idajava.natives package. Constants are defined in de.blichmann.idajava.natives.IdaJavaConstants, API functions in de.blichmann.idajava.natives.IdaJava. A PrintStream for convenient output to IDA's message window is available in de.blichmann.idajava.api.IdaConsole. A part of idc.idc has been converted as well, it is available in the de.blichmann.api.idc.IdcCompat class (expect bugs!).

Future Directions

  • Support for unloading and/or automatic reloading of plugins to aid development
  • Provide an object-oriented Java-style API to the IDA SDK
  • Provide an API to call IDA remotely via RMI
  • More samples, i.e. port some of the SDK samples
  • Properly support embedding AWT/Swing GUIs in IDA.
  • Linux version with support for external "embedded" AWT/Swing GUIs (i.e. the IDA main window using the X11 version of libturbovision.so plus external windows)
  • Support for Java based scripting languages as extlangs in IDA (think Groovy, JavaScript or even Jython)

Copyright/Licensing

IDAJava version 0.3 Copyright (c)2007-2017 Christian Blichmann [email protected]

IdaJava is subject to the terms of the GPLv2. See LICENSE for details. This also applies to all classes in the de.blichmann.framework package.

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].