eset / ipyida

IPython console integration for IDA Pro

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ida-7.1 crashing when loading ipyida plugin

RobinDavid opened this issue · comments

After updating from ida-7.0sp1 to ida-7.1, IPyIDA makes IDA to crash.

IDA segfault both when ipyida.ida_plugin.load() is launched from idapythonrc.py and manually in the python shell. Note that it seems to work when copy-pasting ida_plugin.py in the plugins directory of IDA.

I think it might have something to do with the Qt5 version used but I am not sure.

Does it also occurs for you ?
(I am using Debian testing)

This is a bug in IDAPython 7.1 (due to the notion of NAMESPACE_AWARE that was introduced ( http://www.hexblog.com/?p=1151 ))

Please contact us on < support at hex-rays.com > (mentioning your license ID) for fixed IDAPython components.

I got it working by putting ida_plugin.py in the directory ida-7.1/plugins but thanks for your solution 😉

Thanks @aundro for the documenting the cause here, it saved me quite some time debugging this. Am I right to understand that load_plugin no longer accept absolute paths?

Marc-Étienne,

with the fixed IDAPython binaries you'll get after contacting us on support@hex-rays.com, you should be able to load plugins using load_plugin() and absolute paths.

Ok so it's an upstream bug with IDAPython. I sent an email sent to support for updated binary.

Since I can't redistribute it, I'll try to find a workaround (or at least display a warning) for IPyIDA users that updated to 7.1 so it doesn't crash until the next IDA release.

@marc-etienne instead of using load_plugin() on the module file, a better solution would be to place ipyida_plugin_stub.py into get_user_idadir()+ "/plugins"

I agree, I will update the installer when I have a minute to look into it.

Adding the stub in $IDADIR/plugins/ is much nicer and as less side effects. I changed in install script to do that instead. If anyone wants to test, here is how you can install from the master branch:

IPYIDA_PACKAGE_LOCATION="https://github.com/eset/ipyida/archive/master.tar.gz"
import urllib2
exec urllib2.urlopen('https://github.com/eset/ipyida/raw/master/install_from_ida.py').read()