[【申请转正】] 魔兽争霸显血外挂分析

[复制链接]
anticode 发表于 2017-5-8 08:24:42 | 显示全部楼层 |阅读模式

正式成员|主题 |帖子 |积分 6

本帖最后由 anticode 于 2017-5-8 08:26 编辑

0x01  起因

  最近玩了一下魔兽争霸。

  但小兵太多总是顾不过来于是下载了一个显血外挂,效果很好。

  于是我就想看看它到底是怎么实现的。

0x02 逆向分析

  peid一查发现是:UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo

  直接就手脱了,可以运行。

  根据我以前逆向vb的经验,vb调用api有个地方可以把它所有调用的api全部截取到。

  先下这个地方的断点:

  00401440   .- FF25 7C104000 JMP DWORD PTR DS:[<&MSVBVM60.DllFunction>;  MSVBVM60.DllFunctionCall


  跟进,在:

  7339A107    8BF0            MOV ESI,EAX

  的断点。在ecx中显示的就是api了。

  然后f9跑起来。

  其间拦到几个GlobalAddAtomARegisterHotKeyWaitMessage。。。。 全部不用管。

  这里有个小插曲,一般的外挂我拦截的时候起码有findwindowwriteprocessmemory等函数的,但这个常用的外挂函数几乎

  一个都没有,这让我十分好奇,难道它已经达到不用钩子,不写内存的超高级境界了?

  直接让它跑,主界面出来后按程序提示按home,就是显血的键了。

  拦截到keybd_event

  查看msdn

  VOID keybd_event(
    BYTE bVk,           // virtual-key code
    BYTE bScan,         // hardware scan code
    DWORD dwFlags,      // flags specifying various function options
    DWORD dwExtraInfo   // additional data associated with keystroke
  );

  msdn的说法就是扔一个按键消息到消息队列,当然是扔给的是当前活动窗口,

  怪不得没有使用findwindow函数。

  它的参数,参1,虚拟按键码,参2,扫描码,参3,可选标识,参4,附加信息。

  关于参3msdn说有KEYEVENTF_EXTENDEDKEYKEYEVENTF_KEYUP 两种选择,如果单用KEYEVENTF_EXTENDEDKEY是按下某个键,

  配合KEYEVENTF_KEYUP就是弹起了。

  好了继续跟踪,跟踪keybd_event来到:

  00402C41   .  0BC0          OR EAX,EAX                               ;  USER32.keybd_event
  00402C43   .  74 02         JE SHORT unpack.00402C47
  00402C45   .  FFE0          JMP EAX
  00402C47   >  68 242C4000   PUSH unpack.00402C24
  00402C4C   .  B8 40144000   MOV EAX,<JMP.&MSVBVM60.DllFunctionCall>
  00402C51   .  FFD0          CALL EAX
  00402C53   .  FFE0          JMP EAX

  注意00402C53   .- FFE0          JMP EAX                                  ;  USER32.keybd_event

  这个被调用了。

  看堆栈:

  0012EF10   00403F82  /CALL keybd_event 来自 unpack.00403F7D
  0012EF14   000000DB  |Key = DB
  0012EF18   00000000  |ScanCode = 0
  0012EF1C   00000000  |Flags = 0
  0012EF20   00000000  \ExtraInfo = 0

  至此一切都已经清晰了。

  |Key = DB 所指的就是“[”这个按键。

  我用了一个懒办法验证,进游戏直接按[”血就显示了出来。

0x03 总结
   该显血外挂的核心,就是使用keydb_event模拟按下显示血量的按钮,从而实现显血的功能。
   如果学习作者的思路,完全可以自己编写模拟键盘模拟的软件,从而使一些繁琐的工作,交给软件自动执行。
附件为显血外挂工具。


显血工具.zip

10.98 KB, 下载次数: 528

评分

参与人数 1酒票 +5 收起 理由
管理05 + 5 欢迎加入90!

查看全部评分

王小六 发表于 2017-5-8 11:03:00 | 显示全部楼层

正式成员|主题 |帖子 |积分 168

那个..魔兽争霸按f12 游戏设置里面不是有血条显示了么。。不过好像要冰封王座1.24e
kokxxoo 发表于 2017-5-8 11:19:22 | 显示全部楼层

正式成员|主题 |帖子 |积分 173

魔兽争霸有那个设置的不过都是要自己打开
Flygend 发表于 2017-5-8 15:16:45 | 显示全部楼层

正式成员|主题 |帖子 |积分 180

送一个C++应用层模拟鼠标键盘的demo

Demo_VirtualMouseKeyboard.7z

67.61 KB, 下载次数: 528

Shin 发表于 2017-5-8 17:49:08 | 显示全部楼层

正式成员|主题 |帖子 |积分 154

本帖最后由 Shin 于 2017-5-8 17:51 编辑

要不要把无CD  显蓝  T人的DLL发上来 你分析下
快速回复 返回顶部 返回列表