【求助】逆向得到源代码之后的程序理解和分析问题,请各位老大来侃侃

有一个软件,在逆向分析得到源码之后,想进一步进行代码挖掘。
目前得到的代码可编译,并验证正确,在目标机上跑没问题。
软件大体有算法、界面、通讯、驱动这几个部分。
现在想在有源码的基础上挖掘出软件的数据流等东西。
我不知道该怎么做才好,目前通过对代码简要的理解,得到各个模块之前的关系、函数调用图。
目前看来还远远不够,我的问题是,在得到源码的基础上,还需要哪些信息需要挖掘?
各位老大在平时也肯定遇到过一些没有文档的代码,是通过什么方法来理解和消化的呢?
对我得到的代码,由于缺少专业知识,读起来很艰难,这种情况下,我们需要挖掘出哪些东西,最后能减轻专业人员消化代码的难度,或者对他们有用?

数据流是逆向中最困难的,如果是PPC,可能简单点,毕竟无法直接访问内存。

最近几天想出了一个方法,参考了watcom和qnx ftp上面关于调试的一些代码,做了一个程序状态分析的demo。
大体功能是:
监控程序栈状态,重点监控eip栈的push pop和,同时监控程序data段的变化,可惜只能监控写,不能监控读。
由此可以知道,如果我执行某个功能,例如点击“确定”,有哪些函数被执行,哪些变量被写,执行流程是什么,等等,这样的话,能得到一个程序状态机图,虽然是非常细节的,或者有稍有残缺,从状态机到数据流,由于他们是平级的,所以很好转化。

我的问题是,这个方法严重依赖硬件,并且从软件测试角度考虑,有分支覆盖问题。
很多时候为了节省成本,逆向工作都不首先购买硬件,所以实际环境比较难克服。分支覆盖上,是软件测试的通病,从不理解代码的情况下更是抓瞎。

不知还有无其他方法?或直接阅读代码上,有什么方法不?

老兄你的方法应该不完整吧,只监控push pop的话,如何得到数据流啊?
最多只能得到函数的调用关系,而且是在不使用内联函数的前提下。