{"id":13755140,"url":"https://github.com/cblichmann/idajava","last_synced_at":"2025-05-10T00:31:42.807Z","repository":{"id":1051051,"uuid":"882982","full_name":"cblichmann/idajava","owner":"cblichmann","description":"Java integration for Hex-Rays IDA Pro","archived":true,"fork":false,"pushed_at":"2017-02-15T08:28:06.000Z","size":4245,"stargazers_count":25,"open_issues_count":0,"forks_count":4,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-02-12T15:20:31.417Z","etag":null,"topics":["c-plus-plus","ida-plugin","ida-pro","java","reverse-engineering","swig","windows"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cblichmann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2010-09-02T10:15:58.000Z","updated_at":"2023-12-29T21:16:20.000Z","dependencies_parsed_at":"2022-08-16T11:55:12.985Z","dependency_job_id":null,"html_url":"https://github.com/cblichmann/idajava","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cblichmann%2Fidajava","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cblichmann%2Fidajava/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cblichmann%2Fidajava/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cblichmann%2Fidajava/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cblichmann","download_url":"https://codeload.github.com/cblichmann/idajava/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253346490,"owners_count":21894264,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","ida-plugin","ida-pro","java","reverse-engineering","swig","windows"],"created_at":"2024-08-03T10:00:47.214Z","updated_at":"2025-05-10T00:31:39.058Z","avatar_url":"https://github.com/cblichmann.png","language":"Java","funding_links":[],"categories":["\u003ca id=\"c08ebe5b7eec9fc96f8eff36d1d5cc7d\"\u003e\u003c/a\u003e辅助脚本编写"],"sub_categories":["\u003ca id=\"8b19bb8cf9a5bc9e6ab045f3b4fabf6a\"\u003e\u003c/a\u003e其他语言"],"readme":"IdaJava 0.3\n===========\n\nIdaJava is a plugin for IDA Pro that allows to write IDA plugins in Java. In\nother words: IdaJava is to Java like IDAPython is to Python...\nThe plugin creates an in-process Java VM and looks for JAR files in IDA's\nplugins directory. Each Java based plugin gets their own menu item in\n`Edit|Plugins`.\n\n**NOTE (2017): This is old code that will likely no longer work. It's mainly\n               here for reference. I don't plan on making further changes.**\n\n\nTable of Contents\n=================\n\n   * [IdaJava 0.3](#idajava-03)\n      * [Requirements](#requirements)\n      * [Bugs](#bugs)\n      * [How to build](#how-to-build)\n      * [Installation](#installation)\n      * [Developing Java Plugins for IDA](#developing-java-plugins-for-ida)\n      * [Future Directions](#future-directions)\n      * [Copyright/Licensing](#copyrightlicensing)\n\n\nRequirements\n------------\n\nObviously:\n  - Windows version of IDA Pro, preferrably 5.7 (earlier versions are\n    untested but may work)\n  - 32-bit Sun JRE (even on 64-bit Windows), version 1.6.0 or higher (tested\n    with 1.6.0_21)\n\nTo rebuild language bindings:\n  - [Swig 2.0.0](http://www.swig.org/)\n\n\nBugs\n----\n\nThere are quite a few rough edges:\n  - When closing IDA, the embedded Java VM does properly release its\n    resources, but due to a bug in the VM itself, it always exits with an\n    assertion. IDA databases are properly closed and the only thing that\n    a user will notice is a `hs-xxxxx.log` file after closing IDA.\n\n  - The API is quite incomplete. Need more SWIG bindings. Started conversion\n    of `idc.idc` (about 20% done top-to-bottom).\n\n  - Runs only on Windows at the moment\n\n  - Painting issues when creating TForm's with embedded AWT or Swing GUIs.\n    The custom WindowProc that is set on the handle returned by IDA is never\n\tcalled. The embedded window always has width x height = 10000 x 10000.\n\n  - When using RMI to remotely control IDA, exiting IDA may result in\n    un-marshalling errors.\n\n  - Generally not production-level code, since I (Christian) wrote the plugin\n    initially as an automation tool for myself.\n\n\nHow to build\n------------\n\nIdaJava was developed using Visual Studio 2010, but should compile on Visual\nStudio 2005/2008 as well. Just link with `jvm.lib` from a 32-bit Sun JDK and\nthe ida.lib from the IDA 5.7 SDK. There are no other dependencies.\n\nTo rebuild the SWIG bindings, edit CallSwig.cmd and execute it. It will\nproduce quite a few warnings, though.\n\nThe Java part of IdaJava was developed with Eclipse 3.6. Earlier versions will\nwork as well. The complete project is included.\n\nSource code is in part documented using JavaDoc-style comments. Java sources\ncan thus be processed with JavaDoc, C++ sources with Doxygen.\n\nThe folder structure is roughly:\n```\nidajava/\n+- javasrc/      Java project\n|  +- bin/       Compiled Java classes\n|  +- src/       Java source folder\n|  +- external/  External source packages of used libraries\n|  +- lib/       Jar files needed for building\n+- cppsrc/       C++ project\n|  +- Debug/     Debug build result files\n|  +- Release/   Release build results files\n|  +- src/       C++ sources\n+- CONTRIBUTERS\n+- LICENSE\n+- README.md\n```\n\n\nInstallation\n------------\n\n1. Copy the file `cppsrc\\Debug\\idajava.plw` to your IDA plugin directory.\n2. Copy the folder `javasrc\\bin\\de` folder to your IDA plugin directory\n2. Copy the sample plugin `javasrc\\sample-plugin.jar` to a sub directory\n   `java` in your IDA directory.\n3. Import `cppsrc\\EmptyPluginSettings.reg` into the registry (the registry\n   path `HKCU\\Software\\blichmann.de\\IdaJava\\0.3` must exist).\n\nUsing the steps above, the Java part of IdaJava will be run from the compiled\n.class files instead of a JAR file.\nAfter loading a database, invoke the plugin with CTRL+8, it should display a\nsmall about dialog. To invoke the sample plugin, use the\n`Edit|IdaJava Hello World Plugin` menu item. It should display the\ncurrent screen address in decimal.\n\n\nDeveloping Java Plugins for IDA\n--------------------------------\n\n1. Extend your plugin class from `de.blichmann.idajava.api.plugin.IdaPlugin`\n   and implement the `getDisplayName()`, `getHotkey()` and `run()` methods\n   (see the Java source, esp. `de.blichmann.idajava.samples.HelloIdaPlugin`).\n2. Package your plugin as a JAR file (you can use Eclipse or an Ant task for\n   that) and drop it in a directory `IDADIR\\java`.\n\nYou can attach a debugger to the running Java VM inside of IDA. Your other\noptions are of course `System.out.println()` and/or logging, sorry.\n\nAccess to a large part of the IDA SDK is provided through the classes of the\n`de.blichmann.idajava.natives package`. Constants are defined in\n`de.blichmann.idajava.natives.IdaJavaConstants`, API functions in\n`de.blichmann.idajava.natives.IdaJava`. A PrintStream for convenient\noutput to IDA's message window is available in\n`de.blichmann.idajava.api.IdaConsole`.\nA part of idc.idc has been converted as well, it is available in the\n`de.blichmann.api.idc.IdcCompat` class (expect bugs!).\n\n\nFuture Directions\n-----------------\n\n  - Support for unloading and/or automatic reloading of plugins to aid\n    development\n  - Provide an object-oriented Java-style API to the IDA SDK\n  - Provide an API to call IDA remotely via RMI\n  - More samples, i.e. port some of the SDK samples\n  - Properly support embedding AWT/Swing GUIs in IDA.\n  - Linux version with support for external \"embedded\" AWT/Swing GUIs (i.e.\n    the IDA main window using the X11 version of libturbovision.so plus\n\texternal windows)\n  - Support for Java based scripting languages as extlangs in IDA (think\n    Groovy, JavaScript or even Jython)\n\n\nCopyright/Licensing\n-------------------\n\nIDAJava version 0.3\nCopyright (c)2007-2017 Christian Blichmann \u003cidajava@blichmann.eu\u003e\n\nIdaJava is subject to the terms of the GPLv2. See LICENSE for details.\nThis also applies to all classes in the de.blichmann.framework package.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcblichmann%2Fidajava","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcblichmann%2Fidajava","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcblichmann%2Fidajava/lists"}