纵横三国外挂手记(3) 实现篇

本文来自http://blog.****.net/lijun84 ,引用必须注明出处!

本文仅供个人学习研究之用,不得用于任何商业及非法目的,基于此产生的法律责任本人不承担连带责任之类的。

在讨论详细的实现前,先感性认识下程序的界面以及各部分组件的开发环境。

下图是用BCB开发的程序界面部分。(本想用C#,可有部分注入代码是汇编的,又不想多弄个DLL,其实BCBUI还是蛮方便的)

下图是整个程序运行的目录结构。

纵横三国外挂手记(3) 实现篇

下图是整个程序运行的目录结构。


纵横三国外挂手记(3) 实现篇

这里大概介绍下各组件部分的功能。

Sgtool.exeBCB:这个就是图(1)看到用BCB开发的外挂主程序,主要包括了界面和注入游戏进程两大用途。

HScok.dllVC:这个组件在架构篇已经介绍过,它是为SockHookfun.dll做准备的。包括建立运行环境,设置回调等。

SockHookfun.dllVC:这个组件在架构篇也介绍过,本外挂程序中几乎所有逻辑都在它里面实现。

Config.dat:它配置了hookAPI的映射(替换)关系。

格式:原DLL |原函数名|DLL |新函数名

例如:Ws2_32.dll|recv| [LOCAL_PATH]SockHookFun.dll|my_recv

Config.ini:放些基本配置,如Log的路径。

整个外挂程序的实现将分三部分介绍,主程序部分,注入部分和游戏逻辑实现部分。准备好了我们就Go.:)

一,主程序部分

其实界面重要性在于它限定了一款软件的功能。做外挂程序也一样,首先你要定义你想做到什么样。在分析篇时,我已说过,需要一个能自动打怪,补药的辅助工具。

当然这是很粗的,现在我们把需求展开细化一下:

1,自动打怪:

(1)可设置坐标和限定范围

(2)可设置成被动打怪模式(怪物不打你,你不会主动攻击,这样比较省药)

(3)可设置怪物等级(只打设定等级的怪物,不主动攻击其它怪物)

2,补药:

(1)在数值少于设定量时能自动补充

那么做过开发或测试的很容易想到,药用完了怎么办?通常会想到2种解决方案。

(1)飞到安全区或者自动下线保护

(2)自动买药

由于那时还没有找到远程买药的办法。所以选择的简单的飞安全区保护。

3,辅助:

(1)可以隐藏游戏界面(这样就可以不耽误做其他事咯)

(2)能在外挂界面看到人物基本信息(有了上面那个功能自然需要此功能,否则怎样安抚做其它事时那颗不安的心呢,呵呵)

后篇将继续介绍这部分的实现细节和代码部分。