IDA plugin proposal: ida.plugin.hexrayspytools.vm
Package Name
ida.plugin.hexrayspytools
Tool Name
HexRaysPyTools.py
Package type
IDA_PLUGIN
Version
0.0.0.20250108
Tool's authors
Igor Kirillov, NyaMisty
Tool's description
IDA Pro plugin which improves work with HexRays decompiler and helps in process of reconstruction structures and classes
Download URL
https://github.com/NyaMisty/HexRaysPyTools/archive/cd3e429da7940a3c9638ee5d04787e3d2376a4ef.zip
Download SHA256 Hash
44cc2eb1104d04110bc8425480729d8463cf7ea67d4e07c61b71dc1aa2631985
Why is this tool a good addition?
Me and my colleagues find this plugin immensely useful for reverse engineering C++ and other binaries.
Extra information
I selected a fork that includes some more fixes instead of the original repo, which has gone stale.
Thanks for the proposal @Schamper! This plugins has a dependency (specified in the requirements file), so we need to create it manually as our bot does not support adding dependencies.
It is common that IDA plugins and tools downloaded from a ZIP require to install the file dependencies.txt, as it happens in this package and for example also in xrefer: https://github.com/mandiant/VM-Packages/blob/9cb18b33df3f955a3a93e8d386dcaf893e86721d/packages/ida.plugin.xrefer.vm/tools/chocolateyinstall.ps1#L6
What about checking in the VM-Install-IDA-Plugin if that file exists and if so, install the dependencies with pip? This will ensure the plugin will continue to work on updates without making manual changes to update the dependencies and will allow us to create this package automatically (using the bot). We would be also able to create packages like this automatically.
I propose the following steps:
- One PR to extend
VM-Install-IDA-Pluginto check ifdependencies.txtexists and install the dependecies if so. Update also in this PR xrefer so that we can test the changes. - Create this package using automation.
I think you mean requirements.txt?
I had been meaning to make a different proposal to VM-Install-IDA-Plugin, but I hadn't gotten around to writing it down/testing it yet. I have my own set of scripts to install all the IDA plugins my heart desires, and I was in the process of migrating all of that to VM-Packages. One of the things I ran into is that VM-Install-IDA-Plugin currently makes some assumptions about the contents of a ZIP, and will straight up copy the entire contents (automatically from a plugins directory, if it exists) from the ZIP file.
My proposal would be to add a $pluginFiles argument that takes a list of file/directory names and copy those. If no argument is given, it can fall back to the current behavior.
This would make it possible to make a package out of, for example, https://github.com/eset/ipyida, which requires copying the ipyida\ipyida_plugin_stub.py file. There are a few other plugins with similar repository directory setups.
If you agree, I could attempt to add this to VM-Install-IDA-Plugin (though I'm not the strongest PowerShell developer), or at least submit a whole bunch of additional plugins I have in my own configuration (either manual or through the bot).
@Schamper great ideas! please go ahead and send a PR to improve VM-Install-IDA-Plugin. I am happy to help you polishing the code (I am also not the strongest PowerShell developer, but as long as we ensure the code works as expected we should be good). 😉
It would be awesome if you could send PRs to add IDA plugins to VM-Packages. If the package doesn't follow the current assumptions about the contents of the ZIP, it is not possible to use the bot. We would need to add an argument to provide $pluginFiles in the issue template, the automation, and create_package_template.py. While this is possible (and a desirable contribution), it does require some work. So, we can create an issue for it and you and someone else can implement it a later point if you don't have the time for it now. You can still run create_package_template.py locally to help you create the IDA plugins and add manually the new $pluginFiles argument. This should be easy to do. I recommend you add at least one package with the addition of $pluginFiles to VM-Install-IDA-Plugin so that we can test it.
And yes, I of course meant requirements.txt.
Created an initial PR for that, will look at the requirements/pip dependencies later.