请选择 进入手机版 | 继续访问电脑版
工作室 好人游戏乱跑,解决方案 投稿
鼠标 宏命令 手游 工作室文化
快打器 微信 常见问题 常用平板与手机
魔兽视频
查看: 1534|回复: 0

[相互交流] 游戏开发者的反辅助保护方案

[复制链接]
  • TA的每日心情
    开心
    2019-9-24 12:14
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    405

    主题

    1455

    帖子

    6601

    积分

    实习版主

    Rank: 7Rank: 7Rank: 7

    UID
    19
    帖子
    1455
    精华
    2
    威望
    551
    贡献
    135
    虾币
    3902
    阅读权限
    100
    注册时间
    2013-9-14

    热心会员永不封号灌水之王勤奋版主游戏达人美女勋章

    发表于 2019-9-27 10:50:45 | 显示全部楼层 |阅读模式

    所谓知己知彼方能百战不殆,游戏开发者反辅助对游戏的侵害,须从根本上知晓辅助的原理,及其常用的技术手段,从而在技术手段上对其进行封堵。

    一、辅助的分类

    辅助一般的分为2类,脱机式 和 内挂式。

    脱机式辅助的定义:完全脱离官方发布的客户端程序,可以与游戏服务器自由的进行通讯的辅助程序,这类辅助的实现是2类辅助里最困难的,主要难点在于辅助制作者需要对游戏的通讯协议进行充分的分析,包括解决封包的加密解密问题,使得封包合法化,这样游戏服务器才能接受并处理。

    内挂式辅助的定义:内挂需要以官方发布的客户端程序为载体,依靠客户端程序来完成与游戏服务器的通讯,主要通过反汇编手段分析并修改客户端代码后实现功能,一般通过直接调用游戏客户端的发包函数进行发包,或者调用游戏客户端的封包加密解密函数自行处理发包收包。

    二、制作辅助常用的技术手段

    制作辅助一般使用的分析工具:

    动态分析 OllyDbg(OllyICE)

    静态分析 IDA Pro

    制作辅助一般使用的开发工具:

    VisualStdio系列(VC++,VB)

    Borland系列(Delphi,BCB,BC++)

    中国人自己的开发工具(易语言)(编者注:此开发工具优势在于控件种类上,有专门的用于辅助制作的控件)

    制作辅助的技术要点:

    鼠标键盘模拟技术:这类技术在RING3层可通过调用WIN32 API实现,在RING0层可通过驱动模拟鼠标键盘输入来实现。按键精灵就采用在RING0层通过驱动来模拟鼠标键盘,比较底层。

    Hook技术:包括API HOOK 、普通的对游戏代码进行HOOK等。这类技术有个特点,对目标进程的代码会进行修改。

    脚本技术:扩充辅助功能的技术之一,能让辅助使用者编写脚本来扩充辅助功能。

    三、反辅助中常用的技术手段

    反辅助一般使用的分析工具:

    动态分析 OllyDbg(OllyICE)

    静态分析 IDA Pro

    制作反辅助一般使用的开发工具:

    依据游戏客户端采用的开发工具来决定。

    制作反辅助的技术要点:

    代码校验:包括磁盘代码及内存代码校验,防止代码被非法更改。

    虚拟机保护:虚拟机(VM )其实就是Virtual Machine的缩写,这里说的VM并不是像VMWare那样的虚拟机,而是将一系列的指令解释成bytecode(字节码)放在一个解释引擎中执行,能有效的干扰非法调试者对保护的代码进行分析。是反辅助技术中的重中之重。

    驱动保护:采用底层钩子技术,一般采用SSDT HOOK来对游戏进程进行保护。但这种技术有一个致命的缺陷,就是兼容性问题。

    反调试:对调试过程产生干扰,阻止非法调试者进行正常的调试。反调试代码加多后会导致兼容性稳定性出现问题。

    四、一般保护的思路及步骤

    防止脱机式辅助:

    合理的设计封包通讯协议及对封包加密解密算法进行虚拟机保护能有效的防止脱机辅助,反脱机辅助的难度比较低。而且技术要求也不高。

    防止内挂式辅助:

    反该类辅助主要从代码校验上着手,并配合虚拟机保护,必要时候加上简单的驱动。简单的可以采用如下步骤处理:

    (1) 将封包加密解密独立成一个动态连接库(DLL),供游戏主程序调用进行封包加解密。

    (2) 更换封包加密解密方式,防止破解者采用替换旧客户端的方式进入游戏。

    (3) 反辅助功能在独立出来的动态连接库里实现,在独立出来的动态连接库中加入对主程序代码段校验。建立一个新的反辅助线程来校验代码段,加入敌意进程或模块的特征检测,对关键的API进行检测。检测到非法可以对服务器进行报告,并在客户端主动切断与游戏服务器的连接。

    (4) 在加密解密函数里加入对反辅助线程的检测,检测反辅助线程是否正常运行,如果检测到非法情况,同样对服务器进行报告并主动切断与游戏服务器的连接。

    (5) 对独立出来的DLL进行虚拟机保护(封包加解密及反辅助线程代码)。

    (6) 加入一些反调试技术。

    (7) 根据实际情况采用驱动技术,对游戏进行保护。

    五、对反辅助工作的建议

    反辅助工作具有长期性,复杂性等特性,故建立专门进行此类工作的软件安全小组是必须的,及时的收集辅助后分析辅助的所使用的技术和破解反辅助系统的方式,写出相应的检测及防护代码,提交后进行游戏更新。通过不断的完善反辅助系统,我有理由坚信,辅助会在这样的保护措施下销声匿迹。




    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    该会员没有填写今日想说内容.
    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则