Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
Robin Eklind
@mewmew
Hey!
I'm thinking of hooking up the control flow analysis of dcc to take Graphviz DOT files as input. Anything I should keep in mind or any stumbling blocks you may see with this approach?
Artur K.
@nemerle
Hello. Apart from converting graphviz nodes to BB , the only thing that might be problematic is the fact that some parts of the cfg analysis are using instructions (first/last) as input information
Robin Eklind
@mewmew
Ok, thanks!
@nemerle did the original dcc use node splitting for irreducible graphs, or was that something you added later?
From reducible.cpp:
/* Checks whether the control flow graph, cfg, is reducible or not.
 * If it is not reducible, it is converted into an equivalent reducible
 * graph by node splitting.  The derived sequence of graphs built from cfg
 * are returned in the pointer *derivedG.
 */
derSeq * Function::checkReducibility()
Artur K.
@nemerle
It was in the original code
Robin Eklind
@mewmew
Oh, good to know.
Besides making the code base more modern, and fixing memory leaks and such, have you made any structural changes to any of the analysis phases? e.g. data flow analysis, control flow analysis.
Artur K.
@nemerle
Hmm.. I don't believe so, the plan was to integrate the dcc into boomerang, but lack of time and other projects prevented that :)
If You're comfortable with c#, You could consider implementing your code in reko (https://github.com/uxmal/reko)
Robin Eklind
@mewmew
I know, reko is a great project. I had a fika with John earlier this year to talk about it : )
Artur K.
@nemerle
Yes, it's great. His approach to unit testing is amazing. I regret that somehow I can't find the time to properly grasp the approach to UI he's using :(
I'm much more used to C++/Qt way of doing UI things, while John's approach just feels alien to me :)
Robin Eklind
@mewmew
Can't say I have a good grasp of how the UI works either. I mostly prefer to work with command line tools, and have been playing with the command line driver for reko
Artur K.
@nemerle
After working on a few larger executables in boomerang, I'd say UI is pretty much required for the amount of work those kinds of projects require ( being reduced to decompile one function at a time, to help out with type inference/reconstruction in boomerang is not a fun experience )
Robin Eklind
@mewmew
I see your point. Preferably, a UI may be built using the information provided by a set of command line tools. As long as each tool has a well-defined input and output, it should be possible to interact with them and provide incrementally more information after each pass, as type information is made available for instance.
Artur K.
@nemerle
Command line has it's place, especially when doing integration tests.
John Källén
@uxmal
Artur: just let me know and I can answer any questions you have about Reko's UI or any other aspects. I'd love to see some traction on making the UI more capable than it is today. I'm totally in agreement with you that decompilation is by necessity an interactive process guided by a human. The decompiler naturally does as much as it can autonomously, but must at some points ask the "oracle" for information.
Robin: if you're interested in adding a GraphViz front end to Reko, just let me know and I will assist you. I think our collaboration with the Reko LLVM front end went well.
Artur K.
@nemerle
Hya John , it's been a long time since we've talked :)
The Reko's is doing it's best with the way c# UI and testing work together, it's just I'm lazy and Qt enables my laziness even more :)
There I can define signals and slots on various parts of the UI and connect them as I will, and Qt testing library is geared towards UI testing as well.
Here in Reko we have Interactors/Designers/Panels etc. , which I'm almost certain makes sense, but my muscle memory just 'wants' to ctrl+n/new Widget and drag+drop it into the layout :)
Artur K.
@nemerle
I must confess I was so frustrated with my inability to grok the UI thing, I considered rewriting things in c++ :P
John Källén
@uxmal
Well, nothing prevents you from adding new code in the fashion you want using the VStudio dialog designer with events and all. Once you submit a PR, I can always refactor the code to be "testable".
Artur K.
@nemerle
That is true, but then You will spend valuable time hammering my code to fit instead of working on the rest of the amazing reko :)
John Källén
@uxmal
heh. Totally worth it if I can get UI contribs
John Källén
@uxmal
BTW did you have a specific UI feature you had considered adding to Reko? Do let me know, and let's see if we can make it happen. Would love to see you more active in Reko again! :-)
Artur K.
@nemerle
Would have to check out current state of the project, see what's already there.