Git Product home page Git Product logo

ipyida's Issues

Console helper functions / aliases

In the binary ninja console, there's a few 'helper' functions / variables they alias (c.f. https://docs.binary.ninja/getting-started.html#script-python-console)

I think we should inject at least one or two into the iPython scope.

current_address / here()
current_function

Where current_address or here() returns the result of idaapi.get_screen_ea() and current_function returns idaapi.get_func(idaapi.get_screen_ea))

I am not sure where the best place is to integrate / alias these, but I don't think it should be too hard.

iPython console breaks some of IDA's default console functionality

I've noticed that the iPython console seems to break/change at least some of IDA's console functionality. Specifically, I've noticed that the default IDA console/output window no longer prints the result of a statement being evaluated.

eg, this is what IDA does normally:

Python>idaapi.get_screen_ea()
0x1801c5977

But with iPython running/installed, the address does not get printed out. It seems that iPython is swallowing these prints or something. Also, related (or maybe a side effect?) is that the IDA console will no longer print integers as hex by default. I think this was maybe some hook they had on STDOUT but I am not sure.

Crash on Close (IDA 6.6)

There's still some issues with crashing on close that need to be investigated with older versions of IDA. 6.6 seems to intermittently crash on close on Windows.

Improve theming / customization controls

The way that IDA applies themeing makes it hard (maybe impossible) to change the colors of the 'call hint' dialog that the iPython console pops up through simple CSS. I actually had to tweak the plugin code.

As such, I was thinking it might be better to just make some simple theme/palette file kind of like lighthouse. It also gives us an opportunity to ship better default (bright) and dark themes for the console.

Crashes when attempting to focus on widget that was closed

IPythonConsole keeps track of the widget that was in focus before it was activated, and when "Esc" is pressed, returns focus to that widget. However, if that widget gets deleted, e.g. when it is closed, IDA will crash upon trying to access the saved SWIG TWidget* object.

To fix this, we either need a way to determine if a TWidget* is valid or not, or we need to hook onto the closing code of the associated widget, such that we remove our reference to it if it's being deleted. Alternatively, we could avoid saving a reference to the TWidget*, and just save the title of the widget, which we could then look up using find_widget().

Print address-looking numbers as Hex addresses

We should hook the iPython console output to print integers that fall within IDB segments as addresses.

eg:

In [4]: idaapi.get_screen_ea()
Out[4]: 5372018224

should print out 0x140327e30 instead.

It would also be nice to make these clickable, like the default IDA console.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.