zerotypic / ipyida Goto Github PK
View Code? Open in Web Editor NEWThis project forked from eset/ipyida
IPython console integration for IDA Pro
License: Other
This project forked from eset/ipyida
IPython console integration for IDA Pro
License: Other
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.
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.
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.
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.
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.
I'm not sure if we can do anything about this? But it's not a pleasant thing to run into...
Maybe we can unbind IDA's hijacking of the help() command?
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().
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.