pbiernat / ripr Goto Github PK
View Code? Open in Web Editor NEWPackage Binary Code as a Python class using Binary Ninja and Unicorn Engine
License: MIT License
Package Binary Code as a Python class using Binary Ninja and Unicorn Engine
License: MIT License
Saw your talk at Shmoocon 2017, would be great to have the slides as reference, can you post them in a docs/
folder in this repo, or somewhere else on the web and link it in the README.md
. Thanks!
looks like a very interesting tool! but will you provide the project description? now it is "No description or website provided."
keep it up, cheers.
what would be the best way to launch from cli using binja apis, but without the qt ?
It looks like MacOS ("darwin") support was excluded in the platforms list. Is that intentional? Is this blocking on something else?
I'm getting the following error in 1.1.1461-dev:
Traceback (most recent call last):
File "/path/to/.binaryninja/plugins/ripr/__init__.py", line 18, in <module>
ui = gui.riprWidget()
File "/path/to/.binaryninja/plugins/ripr/gui.py", line 92, in __init__
super(riprWidget, self).__init__('ripr')
File "/path/to/.binaryninja/plugins/ripr/defunct/widgets.py", line 80, in __init__
self._core = instance()
File "/path/to/.binaryninja/plugins/ripr/defunct/__init__.py", line 37, in instance
dock = BinjaDockWidget()
File "/path/to/.binaryninja/plugins/ripr/defunct/widgets.py", line 38, in __init__
self._tool_menu = [x for x in self._main_window.menuWidget().children() if x.__class__ is QtWidgets.QMenu and x.title() == u'&Tools'][0]
AttributeError: 'NoneType' object has no attribute 'children'
Stable loads fine. I guess this is a result of an API change, but didn't have the time to investigate further...
In cases where you're passing arguments you can leverage BN's existing type information to pass something a bit more appropriate than 0
as an argument. Placeholder issue for me to submit a PR against
Binary Ninja now has a plugin repository and an installer (with a gui installer coming at some point). Do you mind updating the plugin with a plugin.json
file? (As described https://github.com/Vector35/community-plugins#contributing-plugins )
Hey, I love your plugin, though it fails to package a little function.
The file is from an old CTF, and the function was CRC32 I think.
Here is the binary if you want to take a look at it: D17.zip
Any idea why it fails?
The BN plugin manager will now automatically install dependencies specified in a requirements.txt.
It looks like the only dependency needed there is unicorn maybe with a pinned version if one has been better tested?
I played with ripr on my live stream this evening for a bit and ran into an issue where the mem_write
calls second arguments needed to be <bytes>
instead of a string.
This is only necessary when using the option to pass arguments I believe, and is a trivial fix, I'll submit a PR shortly.
With the introduction of the Binary Ninja Plugin Manager 2.0 we will be releasing a installation UI for all plugins in the community repository. Please check https://binary.ninja/2019/07/04/plugin-manager-2.0.html for the latest information about how to submit your plugin. If you no longer want your plugin in the repository please disregard this issue
While implementing #13 I noticed that it would be useful to add some debug prints to the code generated by ripr by default. Specifically:
I think both of these can be done by adding pure static code (handling different architectures may need some more complex logic for the first point) and would make learning the usage of the tool and debugging the generated code much easier.
I know that debug prints are not very elegant, but I think they are just good enough in this case.
https://github.com/trailofbits/microx
I can provide guidance if this interests you :-D This will only work for x86 and amd64, though.
Traceback (most recent call last):
File "/home/zglozman/.binaryninja/plugins/ripr/init.py", line 7, in
from analysis_engine import *
File "/home/zglozman/.binaryninja/plugins/ripr/analysis_engine.py", line 13, in
import gui
File "/home/zglozman/.binaryninja/plugins/ripr/gui.py", line 8, in
from PyQt5 import QtWidgets, QtGui, QtCore
ImportError: /home/zglozman/binaryninja/libQt5Core.so.5: version `Qt_5.7' not found (required by /usr/lib/python2.7/dist-packages/PyQt5/QtWidgets.x86_64-linux-gnu.so)
Python plugin 'ripr' could not be loaded
Hello,
since binaryninja is using python3 soon, is it possible that you port your plugin to python3?
Hello,
From an so library :
ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
I got unicorn.unicorn.UcError: Invalid memory mapping (UC_ERR_MAP)
self.mu = Uc(UC_ARCH_X86, UC_MODE_32)
self.mu.mem_map(0x12000,0x4000)
self.mu.mem_map(0x18000,0x4000)
self.mu.mem_map(0x1000 * 1, 0x1000)
is there some hints ?
Has ripr been tested on MacOS? I have another plugin (binja-retdec) that works, and I've installed ripr the same way, but ripr fails to load. Let me know if there is a way to debug this further.
$ pwd
/Users/myname/Library/Application Support/Binary Ninja/plugins
myname-MacBook-Pro:plugins myname$ tree
.
├── binja-retdec
│ ├── LICENSE
│ ├── LICENSE-RetDec
│ ├── README.md
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── api_key
│ ├── plugin.json
│ ├── retdec.py
│ ├── retdec.pyc
│ ├── utils.py
│ └── utils.pyc
└── ripr
├── __init__.py
├── __init__.pyc
├── analysis_engine.py
├── analysis_engine.pyc
├── codegen.py
├── defunct
│ ├── __init__.py
│ └── widgets.py
├── dependency.py
├── gui.py
├── gui.pyc
└── packager.py
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.