本帖最后由 darkya 于 2017-11-2 18:07 编辑
梦里不觉秋已深,余情岂是为他人
谨以此献给逝去的青春~ 企鹅号:2367643256 交流群:680103309
大概记得自己是从12年开始接触脚本这个行业,当时自己是计算机应用专业才毕业,再加上平时喜欢玩游戏,听到游戏里大佬说的游戏脚本,于是自己也去网上搜索。
刚开始接触的按键精灵,不过我下载下来胡乱捣鼓了一遍,一脸懵逼(当时的按键不是很好用,貌似是英文编程,再加上反人类的中文语法),于是弃之。
后来接触到TC,大学里学过C语言,TC的语法很符合,又是中文编程,给我一种亲和力。于是TC伴随了我三年,一开始用TC做九阴真经这个游戏,我记得那时候这游戏很火,什么都是全新概念。
第一次用TC去写游戏里的种地功能,不过那时候基础真的很差,又没有教程可学,一个人捣鼓了两三天,硬是写出个效率极低的种田功能出来。
后来,在论坛里搜索学习资料,搜索到各种插件的使用,TC的代码编辑,后来逐渐入门了,本来想给大家暂时下种田代码实现的,后来发现几年前写的代码都烟消云散了。手上还有两三个曾经写过的项目,不过都没代码了,具体实现大概能说出来。
第一个项目分享:剑灵的 卡刀脚本
这个脚本没什么技术含量,主要是当时这游戏火,有玩家喜欢pk,游戏里又有关于卡刀——缩短角色动画后摇的时间,于是催生了卡刀脚本。
界面如图:
剑灵这个游戏是有TP保护的,但是不检测前台按键,(TP过一段时间会发送检测包检测KeyState按键状态,不过脚本发出的按键状态和人自己发出的混合了,所以检测不了)
所以最主要的重心是解决如何极限的卡刀操作,这个需要咨询职业玩家。连招顺序,以及按键延迟之类的。
第二个项目分享:大话西游2 经典版 刷生活任务 (这个有代码,可以从代码层面给大家讲解) 界面如图:
Em...这个脚本的话,不再是纯按键了,因为有大量的游戏信息需要获取(当然纯图色也能做,不过效率太低,不过纯图色要处理的检测点要少得多),接口工具的话还是上的大漠(代码届有句老话:勿要重复造轮子) 今日继续更~~~10.29 今日继续更~~~10.30 今日继续更~~~上点干货好了11.1 今日继续更~~~11.2 下面我截取几个难点给大家讲解一下:
1.这类游戏让人头痛的应该是各种定点传送了。这个其实也不难,抓住问题的核心,先有数据,再谈逻辑操作。写脚本最主要的是思路。那么,飞行旗的流程是什么呢?打开背包---找到飞行旗---执行操作---判断操作成功与否。
这就是整个大概流程,打开背包,这种功能在一个游戏里应该是常用功能了,所以建议大家把这个功能写到通用库里,减少代码的耦合度。
找到飞行旗,这个功能,如果直接打开背包进行找字找色效率是非常低的。这里我的做法是,自己定义一套飞行旗的定点,比如说 背包第一个格子---长安,第二个格子---傲来。这样固定好,相当于把游戏数据存入到内存里了,效率就很快了。(当然这样的做法同样也会触发检测,不过也有解决思路=。=)
遍历飞行旗,获取飞行旗的信息
2.这个游戏当时有一个地图坐标转换的功能,原理也很简单,就是按照比例进行缩放。效果还是挺不错的,误差在游戏里大概只有1-2的坐标误差。(这个功能代码太长,截取部分,要整个代码的进群索取)
这个代码利用了等比缩放,然后运用了耳熟能详的物理公式v=s/t(速度=距离/时间) 算出了实际在Tab地图中要移动的像素大小。
今日继续更~~~10.29貌似这项目没什么说的了...之后都是一些内存取数据的操作。
Em...说一条网易游戏检测按键的防封吧。
网易检测按键 有一种特别猥琐的办法。不定时向客户端发包,检测鼠标指针,网易服务器有一大堆脚本鼠标的特征库,如果发现你的鼠标操作符合特征库里的,那么就判定你是脚本,
然后过几天把你封掉,这就是大部分口中的行为检测~
处理的办法倒是简单,就是挺麻烦的。其中一个思路 就是不让自己的键鼠操作如此的 “恒定” 键鼠随机偏移,并且 建议写的脚本多添加几套键鼠操作,每天都换一套操作方式,这样就很难通过这种方法检测到你了。PS:仅限前台操作哦~ 后台键鼠操作是另一种情况了
3.今天给大家分享一点TC的扩展性功能吧。也就是 加载DLL(动态链接库)这个功能 按键精灵也有,其实就是用c/c++( 或者其他 脚本语言代替也行) ,调用 windows的API函数 进行扩展功能。 所以TC没有的功能 也可以实现了。比如数据库操作,FTP文件服务器操作之类的。这一类功能用在网络 验证这一块比较多,具体实现呢 论坛插件专区里也有现成的例子 我就 不贴出来了。所以想学好的话,还是建议大家多学习一点 windows的api函数,接触多了,思路就广了。
11.1额,还是上点干货吧,关于文件校验,有的程序会对自身的文件进行校验,是否被修改。那么他们是通过什么手段进行校验的呢?
基本上大多数文件校验都是依靠的PE头Optional Header中的一个CheckSum成员。这个成员变量就是存放文件的校验值。
但是windows启动时不会校验这个值,我们可以获取原程序本来的校验值,然后copy给我们想要替换的文件的校验值。(偷天换日)
这样就检测不了是否文件被修改了~(当然了只是其中一个手段)
11.2 貌似很多人对内存辅助很感兴趣,那么我这里就稍微说一下这玩意儿吧,内存辅助 和图色辅助 最大的区别就是数据源的获取方式不同,
内存辅助 顾名思义 就是从目标进程的内存中找到关键数据源进行调用,进而书写应用层逻辑实现自动化的软件
图色辅助 就是从目标进程的 窗体图形刷新,根据图色特征差异进行数据源的获取,进而书写应用层逻辑实现自动化的软件
两者的区别:
图色辅助,
缺点,获取数据源不太稳定,或者有的深层次的数据无法获取,进而更加考研作者的正向编程能力。
优点,相对于内存辅助来说,游戏检测的点要少很多,安全性方面更好处理。
内存辅助,
缺点,因为对目标进程做了相应的内存手脚,会触发一系列游戏检测,从而导致封号,踢下线之类的官方操作。需要作者有较高水平的软件安全对抗知识。
优点,那么肯定就是稳定了,数据来源稳定,对应的逻辑层书写就舒服,对比图色辅助来说有先天的代码量优势。
出于商业角度考虑,两者并没有单纯的谁比谁更好的说法,只能说谁在某个条件下更适合。(内存辅助的开发周期远远高于图色辅助)
|