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

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

 

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

 

 

 

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

 

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

 

 

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

 

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


 

 

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

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

 

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

 

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

 

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

格式:原 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)       能在外挂界面看到人物基本信息 (有了上面那个功能自然需要此功能,否则怎样安抚做其它事时那颗不安的心呢,呵呵)

 

 

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

你可能感兴趣的:(游戏,汇编,C#,dll,Path,工具)