Comments (3)
definitely looking forward to what y'all come up with (as this'll allow you to connect structs and typeinfo to things like frames, which are really handy when you want to visualize a proper backtrace and read/write individual fields).
from binsync.
Idea Update
I've had some time to think about this and I think we should introduce this TypeEngine as a class that is called from some kind of event handler.
First, we remove all the useless push_*
functions and replace it with a single push_artifact
function that is implemented inside the common controller. This means that the new push_artifact
function will need to take an object of type Artifact
in that function we do something like this:
def push_artifact(artifact):
artifact = self.push_event(artifact)
if isinstance(artifact, StackVariable):
....
We check what the instance of the artifact is and we use that to get both the corresponding set_*
function for the state and the correct commit_msg
for that specific object.
In the push_event
function, we ask that each decompiler controller implement this event handler to correct the artifact in whatever way it needs to be corrected. I see this being in three ways:
- Type, using their decompiler specific TypeEngine
- StackVar Offset, using a function in their decompiler controller
- Addr, using a rebase function in their decompiler controller
Type Converter
Continuing with the old idea, we need the type converter to do some common things across decompilers:
- Parse ctype strings, like
int [10];
to determine what the base type is - Dump parsed ctype strings after modification
from binsync.
Closed by #163
from binsync.
Related Issues (20)
- BinSync does not need to check out any branch other than the master user
- Switch git backend to pygit2 (uses libgit2) HOT 1
- BinSync should use a different email for its automated commits HOT 2
- [BinnaryNinja] Error during function rename
- [BinaryNinja] Force push error HOT 3
- Comments not auto-commiting in Binja HOT 8
- Major Refactor: Port interface backend to LibBS
- Support multi-connection local BS repos HOT 1
- Large function changes take hours to propagate HOT 2
- Committing GlobalVar after initial function naming seems to clear function name?
- "sync" category now in the binary ninja plugin manager HOT 1
- Comments in Binja cause high-cpu and redundant commits HOT 18
- Function force push from UI in Binary Ninja throws exception HOT 2
- Syncing creates redundant commits HOT 4
- Add a `Types` view to the UI
- README update request HOT 1
- CI not testing oldest supported python version HOT 2
- Sometimes when using `sync_all` structs get broken HOT 1
- `sync_all` can lock the decompiler for a long time
- Docs need to be updated for current version HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from binsync.