魔兽显血改键工具的脱壳和修改

玩过魔兽的多少都接触过这个工具,然而昨天在我打算玩两把的时候在打开此工具时会弹出两个网页,以前也有过这种情况。果断不能忍,开始对他动刀。

第一分析PE  查壳

PEcompact  这是我第一次接触这个壳,好吧,也是第一次自己主动来脱壳。所以干脆手动脱壳。第一难度希望不要太大。

OL载入

这是EP代码  可以看到安装了一个异常处理。随后  xor eax,exa 然后访问[0]?当我傻?直接把OL设置为跳过所有异常。这样在触发403392处的异常后代码来到正确的位置

 

代码右边是我作的注释虽然只有一点。但是可以看到整个程序的走向。他申请了一块区域在我这显示的起始地址是02000000 然后在00467eb5处调用该函数后分配的这块区域被填满。继续执行来到00467ED4处。下面的代码改变。变成如下

00467EF8处近跳转来到这样的地方

熟悉的代码熟悉的味道。嗯。OEP到了。此处开始dump,用importrec重建IAT。程序正常运行。接下来把弹出的网页给去掉。

想到以下几种方法

1.调用IE的函数找到NOP之

2.并非每次都会弹出网页,找到跳转条件修改之

我开始尝试第一种方面。该程序用VB编译。因此我找到VB中调用IE程序的办法。大概那么两种 1.建立IE.APPLICATION对象 2.用shell。无奈两种办法都找不到对应的__vba函数。也是因为我从没写过VB程序的原因吧。

没办法用第二种方面。根据我的回忆。大概是每天第一次开的时候会跳出来网页。那么好办。那么我在调用getlocaltime上下断点,然后改了系统时间再次调试,果断程序停在了断点处。顺着栈往下往,直接到return to该程序的位置,找到。发现一个vba函数 .rtcdatevar。大概就是这个函数读取时间吧。在此处下断点。继续调试。直接下面的一个跳转。我对比了下弹出网页和未弹的跳转。直接把弹出的那个不同的跳转给改成了不弹出的。开始改了一个地方。发现继续出现。于是我继续找跳转。直接改了第二个。不会再弹出,GAME OVER。

有没有高手能解答下一个疑问。为什么用ida调试VB程序时会无法转换成图表?会出现如下对话框

另外在调试程序时发现改键精灵的一个配置文件。里面记载了上次打开程序的时间。发现只要和当前系统时间日期不同即弹出。无论系统时间快于或者慢于该时间。

最后附上已经脱壳去网页的魔兽改键

files.cnblogs.com/files/distanceblog/Dumped_3.rar

posted @ 2016-01-12 18:31  Distance、  阅读(1034)  评论(0编辑  收藏  举报