tmr232/Sark

Graphs doesn't support grouping nodes.

Opened this issue · 9 comments

As an example use xrefsgraph.py and execute show_xref_graph(SOME_ADDRESS) try to create a group of nodes, then just click on it and you will notice that the new id (group node) is not available in self.__graph.node[self[node_id]].

Are you creating node-groups in the GraphViewer window?

Also, which version of IDA are you using?

Hi, thanks for your fast answer =).

Yes, I'm creating node-groups in the GraphViewer window. I guess that the problem (As I had similar problems before by using GraphViewer class) is that a group creates a new node number.

The version I'm using is IDA 6.8.150413

A bit if a funny question, but, how are you creating the node groups? I didn't know it was possible in the GraphViewer window.

Haha, good one. At least in my case it is just selecting with CTRL + Mouse a group of nodes.

nodes

Then use the right button to select the "Group nodes" option.

group_option

After that the group is supossed to be a new node.

group_node

Finally when the user does a "Hint" event, the following error is triggered.

error msg

And it is because of the new node number: 9.

Hopefully it helps you, but I'm not sure if it is a GraphView bug or an implementation bug.

P.D: I would like to thank you again for your work I really appreciate it =)

Ok, verified. Thanks.

Other than just showing the grouped node, is there any other functionality you would like to see from the group-node?

Not really, in my case I use it to just avoid those nodes that are not important and do a function summary. I'm moving my old code to Sark and one of the mainly problems that I had was this one and the redraw of GraphView.

Anyway if I find anything I will tell you.

@Shaddy Any progress on this one?

Hi @tmr232!

I didn't run more over this since there are many differences with new python API (6.8 > 7.0), as you may have seen they did a complete rewrite (good decision, btw), it's still not as pyhonic as Sark, but we are getting closer.

(kinda offtopic) I've been rewritting some pieces of your graphing classes (networkx based graph is just awesome) just to add a more complete support to fancy features such as rename, show disassembly (in a node), meaningful, change prototype... and all of those things you may consider interesting while watching nodes.

But I didn't do any PR. For some reason I though this project was starting to come outdated because of the new python scenario.

Do you have plans to keep working on this?

Yes, I plan to keep working on Sark.
As far as I know, Sark is still fully functional in IDA 7.

The only reason it might seem a bit (or more than a bit...) neglected is that I hardly use IDA nowadays. I try to make sure nothing is broken, but don't get around to doing much else. I can check that a bug-fix is OK, but since I don't interact with the features too often I find it hard to say what a new Sark feature should look like.

Concerning the issue at hand - please submit a PR. I'd be happy to integrate it.