本文来自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) 能在外挂界面看到人物基本信息 (有了上面那个功能自然需要此功能,否则怎样安抚做其它事时那颗不安的心呢,呵呵)
后篇将继续介绍这部分的实现细节和代码部分。