这个例子主要是讲用符号来进行软件的调试,例子中用的环境是IDA Pro + WinDBG,用OD的可以先配置下微软符号库的环境,然后用StrongOD来加载符号一样可以进行符号调试的,用符号调试的一个好处就是不用每次记地址,只要记住符号,并且不怕版本的升级,因为你抓住了真正的方法不再是盲目的模仿了;
当然例中的IDA是我的习惯,做这个例子纯WinDBG就能很好的完成;
例中的公式管理器要求是原生的并没有被修改过的版本;
下面我们就一步步来完成这个任务;
在IDA Pro中打开TdxW.exe等他分析完成,来到引入表区,我们知道通达信在调用公式管理的时候是调用了TCalc.DLL里的CalcInterface::PopupDlg(uchar,long,short),那么我们就从这入手开始,为什么不一开始就中断MFC42里的函数呢,这是因为在消息循环中要是开始就直接拦截估计很快就会头晕被MFC42带到死胡同;
到图中的符号后,双击他来到idata区段,如图,此时可以用交错引用参考跳到代码段,并设置断点,断点的设置我只设置了这一个,因为我只要在分析图中调用公式管理器时能断下来即可,如果在陌生的时候可以将交错引用参考中的其他几个地方都给设上断点,反正不执行到它是无影响的,等确认了再精简也可以;
设好断点后当然是开始激动人心的运行......F9开始运行进入通达信,过程中IDA pro和WinDBG没有遇到断点,顺利的进入主界面;
在上图中,我们准备了一个加密的公式,我们就用它做例子;导入他并在分析图中显示他,如上图;
此时用右键选择修改公式;将被中断下来,此时过程会很长,因为第一次WinDBG需要加载符号库;
在右边的Modules窗口,找到MFC42.DLL并双击他打开Module:MFC42.DLL的子窗口
对它设置硬断点;
F9,继续运行程序,返回到程序界面,随意输入几个字符,点确定;
程序z被中断,F7单步,确保返回的邻域是TCalc,如果不是F9过去,继续做一遍上一步;
这是从MFC42返回的位置,F8一次,然后F4执行到下图的位置;
看到没密码出来了,注意Hex View-ESP窗口是指ESP跟随;
本文算是通达信杂探里的初步DIY,也对其中提到过的密码获取给出详细的过程;
联系客服