面向*编程 - 石胖子写网游外挂 (2) 加密和解密

 本故事纯属虚构,如有雷同纯属巧合。

 

0  游戏的加密

 

       对着网游《天x八x》的网络请求数据,研究了一阵子,石胖子,才搞明白。原来游戏的请求数据使用了对称加密的算法。

     因为网游的的实时性要求高,为了降低延时,使用了计算成本相对较低的对称加密算法。

  • 网游的的实时性要求高
  • 非对称加密更安全,但是耗时久
  • 对称加密安全性也有一定保障
  • 对称加密耗时短

       并且由于这一切都是游戏的客户端,自己悄悄进行的,所以怎么解密,让石胖子好一阵子头疼。

 

01 一扇门

       无心搬砖的石胖子,在认真研究对称加密算法,不知不觉中一整天过去了….

面向*编程 - 石胖子写网游外挂 (2) 加密和解密

 

       临近傍晚,石胖子哀叹一声:“没有人告诉我**是啥,这些密文,全是各种行位移,列混合,多轮加密….**难度难以想象”

面向*编程 - 石胖子写网游外挂 (2) 加密和解密

       得出的结论是,如果有能力**这些,应该就不差钱买学区房了。大别野也是信手捏来。

       而且如果**了,后续工作就可能涉及篡改数据,胆小的石胖子想了想,还是别为难自己的数学能力了。

02  一扇窗

       关上了一扇门,总能找到一扇窗。石胖子决定换个思路,想了下人类是如何玩游戏的:

  • 肉眼看到游戏中人物的状态和环境
  • 通过手来操作人物

       也就是说,游戏外挂只要做到2点,就可以了。所以需求变成了

  • 通过程序来判断游戏人物状态和环境
  • 程序操作游戏人物

       如果从这个思路考虑,并且成功的话,就完全不需要关心游戏的数据传输了。因为外挂就是在模拟人的行为。

       石胖子,想到自己去年做的一次公司内分享。分享的题目是:图片识别与Opencv。

面向*编程 - 石胖子写网游外挂 (2) 加密和解密

       所谓“模式识别”,通俗点讲就是 图片识别。当然,广域来说还包括声音,文字等等的识别

       石胖子打算通过图片识别的方式来获取游戏人物当前的状态。简单来说,就是赋予游戏外挂视觉。

至于如何让外挂操作人物行动,就是石胖子要考虑的另一件事情了。

       事情就这么欢快的决定了。石胖子打算在别人成功的路上走出自己的辉煌。改用“模式识别”的方式来继续自己的外挂之路。

 

03  外挂的图片识别

       为了搞清楚这块的工作怎么做,石胖子又进行了一番调研。发现很多游戏外挂的制作者,并没有相关的专业知识。甚至连高数都没学过,连矩阵的秩是什么不知道,却完全不妨碍他们完成外挂的制作。

石胖子在想,那些不是互联网的从业人员的外挂制作者,编码能力肯定不如自己这个5年老码农。      

       而且这些不懂互联网的人也是用这种“高大上”的“图片识别”的方式来制作外挂。究竟是怎么一回事。

答案是:借力

 使用现成的工具,提供收费/免费的相关底层能力支持的。比如“某mo插件”

     

面向*编程 - 石胖子写网游外挂 (2) 加密和解密

       有大量的游戏外挂制作者,都是使用这类的第三方工具/插件来处理底层工作的。

       这些第三方的工具/插件都喜欢推荐制作者使用“易语言”来进行上层的外挂开发。因为有几个好处:

  • 易语言多为中文

              虽然中文不是合适的编程用语言,但是可以降低一部分人的语言阅读成本。增加了受众。

              对,就是阅读成本,而不是学习成本。

  • 依赖性强

              这些插件/工具所使用的易语言都各不相同,所以如果你学了这家的易语言,就必须使用这家的工具。

  • 收益点多

              这里的收益点,还是对工具/插件的提供方而言。

              当你使用他们的工具/插件时,你的学习课程,你的后期外挂打包,你的拓展功能定制。

              这一切都是依赖于他们。都是被收钱的点。

 

04 石胖子要自力更生

       石胖子觉得这样受制于人不好,自己又不是没有能力做这些基础的事情,只不过是少一点休息时间,为什么不从最基础的开始,做这些呢。

       而且让一个互联网开发去学“易语言”花的时间,可能比自己做定制化的图片识别工具久。

       新的一周:石胖子要开始写自己的图片识别代码了.....

 

< 未完待续 >

往下拖下面还有“加密”的小科普哦

码农在中年
 

人虽中年,心已老年

面向*编程 - 石胖子写网游外挂 (2) 加密和解密

-1  战争中
 

      说到战争中的加解密,就是谍报工作的一部分了,有耳熟能详的各种电影电视剧,在中国古代,军中也有密信的说法。比如:

      一封平平无奇的信函,唯一需要关心的是,寄件方的印章盖在哪个字上。  然后根据事先的约定来确定这个字代表:进攻,还是撤退。

     很简单,但是感觉也很难**。

 

-2  对称加密

      上面的例子就是典型的对称加密。

双方拿一样的密码本来进行加密和解密

      常用的有ase和3des。3des之所以名字前面有个3,是因为会进行3轮的des加密,而ase则会进行10-14轮的加密循环,基本木办法解密。

 

-3  非称加密

理论基础是

欧拉函数 欧拉定理 费马小定理 模反元素.....

结论就是

两个素数的乘积作为公钥,而素数本身作为私钥。公钥加密数据,私钥解密数据。

人话就是:

  • 有两把不一样的钥匙,叫:公钥和私钥
  • 公钥锁上的箱子,公钥却开不了
  • 私钥可以打开公钥锁上的箱子

比如我们常听到的HTTPS就是HTTP加上这种非对称加密协议组合而成。

面向*编程 - 石胖子写网游外挂 (2) 加密和解密

 

-4  加密摘要加密

       这是一种对数据有损的加密方式,所以解密也就变得没有什么意义了。就如同压扁的汽车,外壳恢复的再好,也启动不了一样。

不能验证“数据内容是什么”,只能验证“数据内容是否被篡改”。

一般用来保证数据的一致性。

最耳熟能详的就是MD5了

 

面向*编程 - 石胖子写网游外挂 (2) 加密和解密

使用得当,技术才无罪,爬虫的前车之鉴,谨记。

 

< 科普时间END>