最新写了一个调试器正式的名字叫做DebuggerX,界面上山寨了一部分SOFTICE的界面:)利用自己写的调试器可以辅助定位一些软件的关键CALL,这里我们拿CALC.exe来举一个例子,这个也就是Windows自带的计算器程序。我想知道这个计算器的关于的关键CALL在那个函数当中,从而了解到这个关于界面是怎么出来的。
OK,假设我不知道这个关于界面是通过什么样的函数或者调用弹出来的,这个时候我就可以借助DebuggerX的辅助定位功能来进行定位了,首先利用OD获取一下所有函数调用列表,这个地方只需要收集一下常用的就行了,例如:
以push ebp \ mov ebp, esp 开头的函数体。收集好后存到一个文本文件中去,格式就按照OD默认的格式:
然后通过DebuggerX载入这个1.txt,如下图:
接下来,通过一个通知程序开始我们关键定位的过程。
很容易地手工过滤掉UI循环调用函数两次后,就直接定位到了关键CALL处:
此处就是找到的关键CALL,这个时候我们可以利用OD来验证一下,直接用OD定位到地址:100565B处。
很容易验证出来,次地址为关键CALL,且找到了计算器关于按钮的实现是通过调用ShellAboutW实现的。利用这种方法跟途径可以在不知道目标程序语言框架的情况下做到80%左右的关键代码定位。这个效率还是挺可观的,当然最彻底的方法是研究不同语言的框架结构,但是这个方法在速度及效率上弥补了研究框架的不足。