梦幻西游吧 关注:6,741,933贴子:176,197,452

开贴讲讲脚本和宏的问题吧

只看楼主收藏回复

最近关于脚本和宏的讨论很热闹啊,我也来凑个热闹,从技术角度讲讲这些吧


IP属地:北京1楼2021-04-17 09:11回复
    正式开始之前,先说几个事情
    1. 为了描述的通俗易懂,可能在某些专业术语的解释上不是那么严谨,如有大佬围观,不影响大概意思的话就不要深究了
    2. 部分内容涉及数学与信息知识,虽然已经尽可能的被我简化,但是不排除仍有人看不懂所以请根据自身情况使用
    3. 支持有理有据的讨论,带脏字的以及其他不文明行为(包括但不限于人身攻击的)酌情删帖
    4. 对于缺乏必要基础知识的反驳性语言,我只能说“正确的谢谢”


    IP属地:北京2楼2021-04-17 09:16
    收起回复
      1. 什么是脚本
      给个百度百科的定义:脚本语言又被称为扩建的语言, 或者动态语言, 是一种编程语言, 用来控制软件应用程序, 脚本通常是以文本 (ASCⅡ) 保存, 只是在被调用时进行解释或者编译。
      重点来了:
      a. 脚本可以理解为一种语言
      b. 脚本在使用的时候需要进行编译


      IP属地:北京3楼2021-04-17 09:18
      收起回复
        快更快更,这周刚买的502


        IP属地:福建来自iPhone客户端4楼2021-04-17 09:19
        回复
          2. 什么是宏
          再给个百度百科的定义:计算机科学里的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。解释器或编译器在遇到宏时会自动进行这一模式替换。对于编译语言,宏展开在编译时发生,进行宏展开的工具常被称为宏展开器。
          重点来了
          a. 宏是预定义的规则
          b. 宏在编译之前替换


          IP属地:北京5楼2021-04-17 09:19
          回复
            脚本和宏有什么区别呢
            来举个简单的例子,吧里应该有学过C语言的吧
            C语言中用define声明的就可以理解为宏它在编译之前就被替换掉了
            而一个C语言写的hello world可以看做是脚本(别杠,举个例子),它需要编译之后才能够运行


            IP属地:北京6楼2021-04-17 09:21
            回复
              针对这个,我们来看一下现在常见的一些东西:
              a. 基于按键精灵的连点器:你需要在按键精灵里写一段程序,然后运行(对程序进行解释),得到结果结合定义来看,它是一个脚本
              b. 鼠标宏:正常鼠标的按键按下去之后,鼠标会发出一个“按下某键”的指令给电脑。用了鼠标宏之后,鼠标在发出信息之前做了替换,发出了“按下另一个键”的指令给电脑。结合定义来看,它是一个宏


              IP属地:北京7楼2021-04-17 09:24
              回复
                先上号干个地煞,回来再更


                IP属地:北京8楼2021-04-17 09:25
                回复
                  华丽丽的空车了,接着更
                  为什么要说这两个定义呢,仔细观察就能发现
                  1. 脚本一定要有一个解释器或者编译器来处理,一定会有一个计算机来处理的过程
                  2. 宏的存在理论上计算机是不知道的计算机只会知道你的鼠标给计算机发了一个指令


                  IP属地:北京9楼2021-04-17 09:36
                  回复
                    那是不是说宏比脚本安全呢?我们接着往下讲
                    宏跟脚本是两个不一样的东西,我们先说脚本吧
                    说到脚本的检测,就要说到 “应用权限” 这个问题。目前梦幻有三个运行平台,Win系统,Android系统和苹果的一系列系统
                    我们认为程序在Win系统和安卓系统里具有最高权限(别问为什么,问就是你看看你登录的是不是Admin账户),最高权限的意思就是程序可以几乎完全知道你计算机做了些什么,存了些什么
                    刚才我们也说到,脚本一定需要有一个解释器和一个解释的过程,所以理论上梦幻西游的客户端是可以检测到这些的比如按键精灵在任务管理器就会有一个标志性的进程。
                    对于一些常见游戏的外挂或者脚本,梦幻后台应该会有一个黑名单,只要检测到黑名单中的进程正在运行,不管是不是关于梦幻的外挂,都会让你烤火,这就是有些开了传奇外挂之后梦幻烤火的原因


                    IP属地:北京10楼2021-04-17 09:44
                    收起回复
                      刚才说了Win和安卓,这两个系统对于梦幻几乎是全透明的,只要计算机知道你干了什么,梦幻就知道你干了什么
                      所以现在大部分的GZS用的都是苹果系统(以苹果手机为代表)苹果系统的权限是不给应用程序开放的,所以梦幻无法得知系统干了些什么,因此相对安全但是,但是,但是,还是有办法检测的,我们后面会提到


                      IP属地:北京11楼2021-04-17 09:48
                      收起回复
                        宏就是脚本


                        IP属地:山东来自Android客户端12楼2021-04-17 09:51
                        收起回复
                          再来说说宏:
                          刚才我们说到,理论上计算机是不知道宏干了点什么的,因此系统里是没有相关进程的在这个层面上来看,宏比脚本安全。
                          那么宏的劣势是什么呢:
                          1. 脚本可以理解为编程,它能够实现几乎所有你想要的功能;宏只是简单的替换,没法进行逻辑操作
                          2. 如果想让系统不知道,就需要额外的宏外设(宏鼠标,宏键盘)等


                          IP属地:北京13楼2021-04-17 09:51
                          回复
                            对于宏的检测是怎么做的呢?
                            楼上说到了,宏需要额外的外设,那么想让计算机识别这些外设,就需要相对应的驱动(鼠标驱动,键盘驱动)
                            那么我们就会发现,系统是知道你的计算机安装了这些驱动的
                            所以对于一些常见的宏外设,网易肯定也有自己的黑名单,如果发现你使用了这些驱动,虽然没有理由判定你用了宏,但是可以把你列为重点观察对象
                            有的人说用免驱动的外设,注意了,免驱动只是不需要你去安装驱动,不代表没有驱动


                            IP属地:北京14楼2021-04-17 09:54
                            收起回复
                              不过根据驱动的检测也是有问题的,因为有些驱动可能同时适用于宏外设和正常外设。
                              比如某品牌有两个鼠标(宏鼠标和正常鼠标)他们用的是同一个驱动程序,所以我上面说到了,根据驱动无法判定你是不是使用了宏外设,只能说是重点监测


                              IP属地:北京15楼2021-04-17 09:56
                              回复