新邪恶指环这个1.95版本流传开以后,不少开服的人遇到过同一类怪事:后台冒出个不认识的满级号,或者谁都没发过的装备,隔三差五在城里出现一件。版本是整包流出来的,脚本文件全都打包在里面,放包那台机器的工程目录原样封进去,里头留没留东西,下包的人看不到。下面把这类后门常藏的几个位置逐个列清楚,再给一套从拿到包到清完的排查顺序。
一、管理员名单是第一站
管权限的文件在 Mir200\Envir\AdminList.txt。正常的开服者在里面只放自己几个号,一行一个账号。放包的人要留口子,多半在这里多塞几行。看的时候一条条过,凡是不认识、又不是自己常用ID的,先抄进一个临时文档留底,再决定删不删。
有的版本管理员名单不止这一处,根目录下有一份,UserData 子目录下还有一份,两个地方都要翻。还有的把多余账号写成看着像注释的行,前面加个分号或者星号,引擎照样读,肉眼一扫容易当成废行略过。别只盯着有内容的那几行,空格和制表符开头的行也扫一遍。清完保存,重启服务端,这一步才算落地。
二、命令配置文件里的隐藏指令
这是最难发现的一类。引擎的GM命令有的写死在程序里,有的放在文本里配,常见的是 Mir200\Envir\UserData 下面那份命令文件。放包的人会在里面加一条自己才知道的命令,名字起得和正常命令很像,比如正常的刷物命令叫 @make,他加一条 @mak 或者 @maked,少一个字母,用的人以为是打错了没反应,其实那条命令是通的,只有他知道。
排查办法是把这份文件从头读到尾,凡是自己没印象、也没在引擎说明里见过的命令条目,先标注出来。重点看那些参数和正常命令不一样、或者功能明显偏门的,比如能直接传送到某个隐藏地图、能直接改人物属性的。确认不是自己版本玩法需要的,整条删掉。
三、NPC脚本和任务脚本里的触发口
藏得比较深的还有两种写法。一种是在某个不起眼的NPC对话里,加一个正常玩家不会去点的按钮,段名起得很普通,点下去执行的是给物或者传送。另一种是在任务脚本目录里放一个专门的文件,靠一个特定物品触发。
这类后门的特点是平时不显形,NPC看着和正常的一模一样,只有那个按钮或者那个物品能激活。排查的时候把 Market_Def 和 QuestDiary 两个目录下的脚本都通读一遍,看有没有功能和自己版本对不上的段。特别留意那些标题起得含糊、内容却涉及给装备或者改数据的段。按钮里的段名和实际段名对不对得上也要看,后门常常用两套名字互相跳。
四、地图事件和触发脚本
地图层面的手脚在 MapQuest.txt 和 QFunction.txt 这两个文件里。MapQuest 管的是地图触发,QFunction 管的是各类事件函数。放包的人可能在某个地图坐标上挂一个触发,踩上去执行一段别人不知道的脚本,比如把人传走、给一件东西、或者往数据文件里写一行。
读这两个文件的时候,把每个事件的坐标和地图编号对照 MapInfo.txt 核一遍,看有没有坐标落在不该有事件的地方。再看 QFunction 里挂的函数,正常的服一般只挂上线、离线、升级、击杀这几类回调,多出来又不认识的回调,得进去看它到底干什么。
五、定时脚本类后门
有一类后门不靠玩家触发,是靠定时器自己跑。脚本里用延迟跳转的命令反复调自己,隔一段时间执行一次,比如定期往某个账号发东西,或者定期把某些数据写出去。
这种段一般藏在脚本文件的中后段,标题起得不起眼。排查时搜脚本里所有带延迟跳转、循环跳转的命令,看每次跳的目标段是干什么的,跳转间隔是多少。正常工作流里的循环都是围着功能转的,比如每十分钟补一批怪,这类一眼能看明白。看不出用途的循环要重点查。
六、登录脚本和离线上线回调
上线离线的回调在 QFunction.txt 里,用固定段名。有些后门挂在这里,玩家一上线就执行一段,比如判定账号名,命中了就给东西。这类靠的不是玩家点NPC,所以最不容易被察觉。
把上线、离线这两个回调段通读,看里面除了正常的欢迎提示、数据加载之外,还有没有判定账号、往文件写东西、给物品的动作。清的时候连带把同目录里引用到的那些段一起看,避免只删了调用、留着被调用的段在别处又被激活。
七、数据目录里多出来的文件
除脚本本身,Data 和 UserData 目录下多出来的文件也得看。正常的服务端这些目录里的文件是固定的,如果发现一个名字很正常、体积很小、修改日期又对不上工程的文本文件,打开看看里面是什么。有的后门不写在脚本里,而是靠脚本去读一个外部文件,文件内容才是真正触发条件。
还有一种更省事的做法,是直接在某个数据文件里留一行多余的记录,比如某账号的人物数据、某道具的多余条目。这类查起来靠比对新旧数据,手里有原始包的话,拿两份同版本的数据文件一比就出来了。
八、从拿到包到清完的排查顺序
第一步,先把整个服务端备份一份,别在原目录上直接动手,改坏了没法还原。
第二步,查管理员名单,根目录和UserData两处都看,删多余账号。
第三步,查命令配置文件,逐条对引擎说明,删陌生命令。
第四步,通读 Market_Def、QuestDiary 两个脚本目录,重点看和玩法对不上的段和按钮。
第五步,查 MapQuest.txt 和 QFunction.txt,核对地图触发坐标和回调段。
第六步,搜所有脚本里的循环跳转,确认用途。
第七步,看 Data 和 UserData 里有没有多出来的小文件或者多余记录。
八步走完,重启服务端,在控制台重新加载 NPC 和各类配置。
九、清完怎么验证
重启之后自己从头开一个号,正常走一遍新手流程,看有没有莫名多出来的提示、传送或者物品。再挂一段时间,观察后台有没有不认识的号上线、有没有异常的物品产生记录。原来那种隔三差五冒装备的现象如果没了,基本可以确认清干净了。
有一点要提醒,后门不是只有一个大类,同一个包里可能同时埋了好几处,只清一处,剩下的还会冒头。所以排查要按目录走全,不能查到一半觉得没事了就停。手里有版本原包的话,把清理前后的脚本目录做个文本对比,哪些文件被改过一目了然,比一行行翻省事得多。
改动的文件每改一处都留一份备份,万一清某个段以后正常玩法出了问题,能对照着往回找。脚本目录里的文件都不是孤立存在的,删一个段之前先确认别处没有引用它,不然清后门顺手把一个正常功能也带走了。
传奇1.95新邪恶指环版脚本后门常见藏匿位置排查清单与清除步骤详解
来源:
作者:
点击:

