joshwatson / binaryninja-msp430 Goto Github PK
View Code? Open in Web Editor NEWmsp430 Architecture plugin for Binary Ninja
License: MIT License
msp430 Architecture plugin for Binary Ninja
License: MIT License
Binary Ninja version: 1.1.989 Personal
Microcorruption level: Chernobyl
On address 0x4bbc
, Microcorruption's debugger decodes the instruction as 4bbc: 923c jmp #0x4ce2 <run+0x17c>
and Binary Ninja decodes the instruction as 00004bbc 923c jmp 0x44e2L
, which off by 0x800. This is being caused by the if-statement line 984 (which, according to the comment, checks if the offset is negative). I'm not entirely sure of the correct fix for this issue, but I suspect the condition needs to be changed.
Something is going on with the flags, either setting them or reading them, so if expressions don't properly display the condition like they would in x86 or even the 6502 architectures.
Consider this code (from MSP430x2xx Family User's Guide (Rev. J), section 3.4.6.24):
Disassembled, in binja, everything seems fine:
But once lifted to LLIL, the operands of the >=
are reversed!
I'm not really familiar enough with binja lifting (or in fact with the MSP430) to be sure which part the issue is in, but it definitely seems wrong! (I encountered this first in real code, where a static binary-search over different possible values was nonsensical, as comparisons were against numbers that would be illegal at that point in the program flow).
Implement LLIL for dadd
and daddc
Implement the rest of the pseudoinstructions besides ret
.
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
am i doing something wrong?
i opened a binary memory dump file, and attempted to choose the MSP430 architecture from the drop-down box when prompted. it's not there.
i'm on 3.0.3234-dev.
1.1.931-dev Personal
Traceback (most recent call last):
File "~/Library/Application Support/Binary Ninja/plugins/msp430/__init__.py", line 1089, in <module>
arch.register_calling_convention(DefaultCallingConvention(arch))
File "/Applications/Binary Ninja.app/Contents/MacOS/plugins/../../Resources/python/binaryninja/callingconvention.py", line 52, in __init__
raise ValueError("Must specify either handle or architecture and name")
ValueError: Must specify either handle or architecture and name
Python plugin 'msp430' could not be loaded
I believe that it is intended for the object DefaultCallingConvention(arch) to have the attributes architecture and name set to Architecture['msp430'] and 'default', but arch.register_calling_convention() does not recognize them to be set.
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.