纵横三国外挂手记(3) 实现篇
本文来自http://blog.****.net/lijun84 ,引用必须注明出处!
本文仅供个人学习研究之用,不得用于任何商业及非法目的,基于此产生的法律责任本人不承担连带责任之类的。
在讨论详细的实现前,先感性认识下程序的界面以及各部分组件的开发环境。
下图是用BCB开发的程序界面部分。(本想用C#,可有部分注入代码是汇编的,又不想多弄个DLL,其实BCB做UI还是蛮方便的)
下图是整个程序运行的目录结构。
下图是整个程序运行的目录结构。
这里大概介绍下各组件部分的功能。
Sgtool.exe(BCB):这个就是图(1)看到用BCB开发的外挂主程序,主要包括了界面和注入游戏进程两大用途。
HScok.dll(VC):这个组件在架构篇已经介绍过,它是为SockHookfun.dll做准备的。包括建立运行环境,设置回调等。
SockHookfun.dll(VC):这个组件在架构篇也介绍过,本外挂程序中几乎所有逻辑都在它里面实现。
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)能在外挂界面看到人物基本信息(有了上面那个功能自然需要此功能,否则怎样安抚做其它事时那颗不安的心呢,呵呵)
后篇将继续介绍这部分的实现细节和代码部分。