Hey pancake (and everyone else). The graphs look really nice, I was wondering, which libraries do you use to generate them?
Evan Teran On Fri, Oct 3, 2008 at 12:54 PM, pancake <[EMAIL PROTECTED]> wrote: > more shit for the graphs..just try to use shift+wheel to rotate the > graph view and control+wheel to zoom. normal wheel is to scroll. > > also some right button stuff has been fixed, and now the graph nodes can > be folded in the title by clicking the title (i'll fix it to be a double > click next week). > > next week i'll fix the node splitting algorithm (if esteve doesnt do it > before) and start adding some more fancy stuff to the graph view to > prepare a POC of the GUI which i have in mind like symbol list, adding > the left tab of gradare with user defined commands in one click and > other stuff, so the graph view will be more usable. > > If you have any idea for the graph view..please let me know :) i'm > interested on crazy tips :) > > i dont know if i'll have time for the 1.0 but i will also like to add a > graph view for data structures...btw i'm gonna work more on the > graphical interface. > > FYI a half a year or so i added support for GUI plugins in radare, they > can be written in C, python or any other language and the idea is to > make the GUI as pluggable as possible to get a flexible user interface. > > Hopefully i will not break any gnome usability tip :P > > http://radare.nopcode.org/img/g2.png > > Enjoy > > --pancake > > On Fri, 2008-10-03 at 13:41 +0200, pancake wrote: >> And playing a bit with the Grava api i just make it render the graphviz >> output inside the view as a separate layer...so if you pan the view the >> nodes scroll faster than the image (like in videogames or so :P) here's >> a shot of the preview: >> >> http://news.nopcode.org/g.png >> >> I have just added a small function to export a code analysis in dot >> format to feed graphviz... i just want to play a bit with it to make the >> graph interface better...let's see how to walk a graph: >> >> int graph_viz(struct program_t *prg) >> { >> struct block_t *b0; >> struct list_head *head; >> >> cons_printf("digraph code {\n"); >> cons_printf("\tnode [color=lightblue2, style=filled];\n"); >> list_for_each_prev(head, &(prg->blocks)) { >> b0 = list_entry(head, struct block_t, list); >> if (b0->tnext) >> cons_printf("\t\"0x%08llx\" -> \"0x%08llx\";\n", >> b0->addr, b0->tnext); >> if (b0->fnext) >> cons_printf("\t\"0x%08llx\" -> \"0x%08llx\";\n", >> b0->addr, b0->fnext); >> if (!b0->tnext && !b0->fnext) >> cons_printf("\t\"0x%08llx\";\n", b0->addr); >> } >> cons_printf("}\n"); >> } >> >> >> simple huh? :) >> >> then we just generate the analysis and call this function from the 'ag.' >> command: >> >> prg = code_analyze(config.baddr + config.seek, depth ); >> graph_viz(prg); >> >> pretty stupid huh? :) >> >> If you want to test this. just pull the last version and type: >> >> $ radare -d ls >> > !step 3 >> > ag. > foo.gv && dot -Tpng -o foo.png foo.gv && gqview foo.png >> >> Working with graphs and so is quite stupid and simple..but withotu a >> decent frontend it is pretty useless... i will work on this a bit for >> the 1.0.. i think it is an important point. >> >> --pancake >> _______________________________________________ >> radare mailing list >> [email protected] >> http://lists.nopcode.org/listinfo.cgi/radare-nopcode.org >> > _______________________________________________ > radare mailing list > [email protected] > http://lists.nopcode.org/listinfo.cgi/radare-nopcode.org > _______________________________________________ radare mailing list [email protected] http://lists.nopcode.org/listinfo.cgi/radare-nopcode.org
