昨天上午下了个WarHelper V7.1.0.2的来玩,结果发现要访问网络,于是想把访问网络的功能给nop掉。(软件作者不要恼哈)

  查了下壳,VMP 1.6 demo。这个不会脱,硬着头皮去试,先是尝试ESP定律,失败,没找到像OEP的地方。

  然后尝试ESP定律+最后一次中断,也失败,跟了好久也没到OEP,而且有JMP乱序,直接看得郁闷了。。

  内存断点法,也失败,理论上OEP应该是代码段里面的,结果居然没断下来。。

  强壳就是强壳,简单的方法搞不定。。

  由于知道WarHelper一贯是用msvbvm60写的,其启动的时候OEP代码相当有规律:压栈一个数,然后调用msvbvm60.ThunRTMain。在msvbvm60.dll里面下断,中断下来后看堆栈总算发现点有用的信息:有一个返回到。根据这个信息,找到了应该是OEP的地方,可是下硬件执行断点还是没断下来。。

  改下硬件访问断点,发现是把这个地方的代码读到另外一块内存里面,然后怎么运行的我跟半天没跟明白,郁闷了,完全被蹂躏了。。。

疑问有两个:
  1、VB的OEP第一行代码push的那个数有什么作用?(呃,这个和VMP好像没关系,就是想知道下)
  2、有没有谁公开过VMP的运行机制,知道这个可能找起OEP会容易点
posted on 2009-08-19 06:44  李济民  阅读(521)  评论(1编辑  收藏  举报