dzzie / IDA_JScript

Javascript IDE for IDA disassembler w/ Debugger, Syntax highlighting & Intellisense. More: http://sandsprite.com//blogs/index.php?uid=7&pid=361

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

--- Note this build is for IDA 7.0+ and uses IDASRVR2      ---
--- for IDA <= 6.9 or historic commits see RE_PLUGINS repo ---

Status: stable
Link:   http://sandsprite.com/tools.php?id=25

Installer (to register dependancies properly)
        http://sandsprite.com/CodeStuff/IDAJS_2_Setup.exe

----------------------------------------

This is a standalone interface to script IDA using Javascript 
through the IDASrvr2 IPC plugin. Any language can remote control the IDASrvr2
plugin. More details here: http://www.hexblog.com/?p=773

The installer will:
   register all dependancies
   register the idajs file extension 
   install the IDA plugins

Major features: 
   full debugger support through Duktape Javascript engine
        - single stepping
        - breakpoints
        - mouse over variable tool tips etc. 
   modern code editor using Scintinella
        - syntax highlighting,
        - intellisense
        - tool tip function prototypes 

IDA Jscript main UI runs as a standalone process for ease of development.

Most commonly used IDA API have been added but it is a big job.
New api are added as necessary. 

When IDA_jscript first starts, it will enumerate active IDASrvr instances. If
only one IDA is open it will automatically connect to it. If there is more than
one it will prompt you to select which one to interact with. If launched from 
the IDA plugins menu it will auto connect to the proper instance. 

There are a couple wrapped functions available by default without a class
prefix. These are implemented in userlib.js which you can edit.

h(x)     convert x to hex 
alert(x) supports arrays and other types
t(x)     appends to the output textbox on main form.
d(x)     appends output to the debug message list

Built in objects w/intellisense include:
    ida.    main IDA object
    fso.    file system functions
    al.     address list dialog (click to navigate bookmarks)
    x64.    class for dealing with 64 bit numbers as strings and doing math on them
    app.    application object
    pb.     progress bar on main form
    list.   list box for debug messages
    remote. remote symbol resolution client see article:
            https://www.fireeye.com/blog/threat-research/2017/06/remote-symbol-resolution.html

You can explore the api through intellisense or view the *.js stubs in the ./COM/ sub directory.
I will eventually add an object browser.

IDA JS  also has some other misc tools built in since the transition to IDA7 wacked 17 years 
of my plugins. These are available on the extras menu. 

So far this includes
    address list
    import patch
    IDA Compare Exporter (dev mode only now)

CIDAScript.cls is the primary IDASrvr2 client reference implementation. 

Note: IDA and IDA_Jscript.exe must be run at the same privledge level to interact. 
in development you can run IDA as admin or Extras -> Disable UIPI (dev only)

Dependancies and Source Links:
-------------------------------------------------------------

IDAJS is all open source

duk4vb:       https://github.com/dzzie/duk4vb
scivb:        https://github.com/dzzie/scivb2
spSubclass:   https://github.com/dzzie/libs/tree/master/Subclass
vbdevKit:     https://github.com/dzzie/libs/tree/master/vbDevKit

dependancies:
   dukDbg.ocx      - Activex
   spSubclass.dll  - ActiveX 
   SCIVB2.ocx      - ActiveX 
   vbDevKit.dll    - ActiveX
   UTypes.dll      - C dll must be in same dir as exe
   Duk4VB.dll      - C dll must be in same dir as dukDbg.ocx
   SciLexer.dll    - C dll must be in same dir as SCIVBX.ocx
   IDASrvr2.dll    - IDA plugin for 32bit disasm (x64 binary)
   IDASrvr2_64.dll - IDA plugin for 64bit disasm (x64 binary)
   MSWINSCK.OCX    - from MS included in installer
   richtx32.ocx    - from MS included in installer
   vb6 runtimes    - from MS assumed already installed
   mscomctl.ocx    - from MS assumed already installed
   
Credits:
--------------------------------------------

* Duktape   
     http://duktape.org

* Scintilla by Neil Hodgson [neilh@scintilla.org] 
     http://www.scintilla.org/

* ScintillaVB by Stu Collier 
     http://www.ceditmx.com/software/scintilla-vb/

* CSubclass by Paul Canton [Paul_Caton@hotmail.com]

* Interface by David Zimmer 
    http://sandsprite.com

About

Javascript IDE for IDA disassembler w/ Debugger, Syntax highlighting & Intellisense. More: http://sandsprite.com//blogs/index.php?uid=7&pid=361


Languages

Language:VBA 68.3%Language:C++ 14.4%Language:JavaScript 12.2%Language:C# 2.2%Language:Pascal 1.2%Language:Inno Setup 0.7%Language:C 0.5%Language:Java 0.2%Language:Batchfile 0.2%