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

    技术2022-05-20  51

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

     

     

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


    最新回复(0)