2022-10-17 19:59:06 +08:00
|
|
|
|
---
|
|
|
|
|
title: 我开发的第一款软件
|
2023-11-09 17:30:33 +08:00
|
|
|
|
description: 我的编程经历,包括接触程序设计的早期经历和开发外挂的经历。作者分享了在精益论坛和洛克王国游戏中的一些有趣故事,以及如何利用一个特殊的BUG来缩短宠物升级时间。
|
2022-10-17 19:59:06 +08:00
|
|
|
|
keywords:
|
2023-11-09 17:30:33 +08:00
|
|
|
|
- 编程经历
|
|
|
|
|
- 外挂开发
|
|
|
|
|
- 游戏BUG
|
|
|
|
|
- 洛克王国
|
|
|
|
|
tags:
|
|
|
|
|
- 记忆/高中
|
2022-10-17 19:59:06 +08:00
|
|
|
|
authors:
|
2023-11-09 17:30:33 +08:00
|
|
|
|
- 7Wate
|
2022-10-17 19:59:06 +08:00
|
|
|
|
date: 2021-04-26
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
无意间发现 CSDN 显示自己拥有九年码龄,就勾起了很深的记忆。那时刚开始接触程序设计的时候,经常接触到易语言、精益论坛、吾爱破解、看雪论坛等等。所以就一个一个登录查看有没有当年留下的痕迹……
|
|
|
|
|
|
|
|
|
|
## 邮箱群发
|
|
|
|
|
|
|
|
|
|
![帖子](https://static.7wate.com/img/2021/04/26/bc80fc0155623.png)
|
|
|
|
|
|
|
|
|
|
当时是在精益论坛接的一个 200 元的一个单子,然而写好以后又被放鸽子……
|
|
|
|
|
|
|
|
|
|
最后就开源放了出来,找不到源码了,蛮简单的一个邮件群发助手,简单测试功能还可以用!
|
|
|
|
|
|
|
|
|
|
![软件界面](https://static.7wate.com/img/2021/04/26/02c3d68c519fc.png)
|
|
|
|
|
|
|
|
|
|
![邮件](https://static.7wate.com/img/2021/04/26/a2ce82365e54b.png)
|
|
|
|
|
|
|
|
|
|
附件功能应该是有 BUG 了,其他的正常使用;顺带附一下帖子地址和软件地址,满足一下各位好奇心。
|
|
|
|
|
|
|
|
|
|
帖子地址:[QQ群发利器_精易论坛 (125.la)](https://bbs.125.la/forum.php?mod=viewthread&tid=13658866&extra=)
|
|
|
|
|
|
|
|
|
|
软件地址:[QQ群发利器软件](https://static.7wate.com/public/QQ%E7%BE%A4%E5%8F%91%E5%88%A9%E5%99%A8.zip)
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
Algorithm : SHA256
|
|
|
|
|
Hash : 01E1E277B9BC173BA5E3A75E3D42E1AF18EA974AC91F42E8940AAE6FD1473452
|
|
|
|
|
Path : C:\Users\ZZP\Downloads\Compressed\QQ群-发利器\QQ群发利器.zip
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 洛克王国
|
|
|
|
|
|
|
|
|
|
其实一开始我是做外挂出身的哈哈哈,其中洛克王国辅助外挂做的时间最长,简单记述分享一下当年巧遇 BUG 的事情,防止多年以后遗忘。
|
|
|
|
|
|
|
|
|
|
洛克王国是一款网页游戏,如果了解过相关的知识;就会知道这种游戏离不开数据包,所有游戏的操作都是基于数据包来完成的。当然所有类型的游戏互动都是基于数据包的,但是外挂不只有单一的数据包类型的外挂,在此仅简述数据包类型辅助外挂。
|
|
|
|
|
|
|
|
|
|
洛克王国简单来说就是一个宠物养成游戏,最枯燥的事情就是宠物升级需要不停的打怪。因此诞生了许多辅助外挂,当时最快的外挂辅助从 1 级到 100 级满级需要 2 小时 15 分钟左右;
|
|
|
|
|
|
|
|
|
|
因为洛克王国是一个偏向青少年的游戏,在其更新过防沉迷机制后,只有 4 个小时可以正常获取打怪经验。但是官方存在这样一个机制,就是在一个特定的场景:大剧院(就是在游戏内观看各种官方的电影等……),不会增加游戏时间。所以很多辅助外挂根据这个机制,衍生了很多延长获取经验时间的相关功能。
|
|
|
|
|
|
|
|
|
|
而我这当时发现这个 BUG,只需 12 分钟,对于当时游戏机制及其他辅助外挂是颠覆性的。
|
|
|
|
|
|
|
|
|
|
### 一个简单的打怪场景
|
|
|
|
|
|
|
|
|
|
如果在游戏内与场景怪物战斗升级,就会与服务器进行数据包通信。类似于 TCP 的三次握手、四次挥手。例如
|
|
|
|
|
|
|
|
|
|
1. 客户端:我要与编号 0001 怪物战斗。
|
|
|
|
|
2. **服务器:收到编号 0001 怪物战斗请求,当前地图场景编号是否 0001 的我需要确认一下?**
|
|
|
|
|
3. 客户端:我确定在编号 0001 怪物的地图场景,我要开始战斗了。
|
|
|
|
|
4. **服务器:战斗开始校验……**
|
|
|
|
|
5. 客户端:我要用技能 A,干它。
|
|
|
|
|
6. **服务器:技能 A 使用成功。**
|
|
|
|
|
7. 客户端:我要用技能 B,干它。
|
|
|
|
|
8. **服务器:技能 B 使用成功。**
|
|
|
|
|
9. **服务器:怪物死亡……**
|
|
|
|
|
10. **服务器:宠物 A 获取 100 exp(经验)。**
|
|
|
|
|
|
|
|
|
|
这是一个简单的战斗过程,实际校验以及数据包通信比较复杂繁琐。这时你可能想,我直接给服务器说怪物死亡,获取经验不完了。你想要的可能结果是这样的:
|
|
|
|
|
|
|
|
|
|
1. 客户端:怪物死亡……
|
|
|
|
|
2. 服务器:战斗异常(这玩意脑子抽风了?客户是上帝我还是委婉点。)
|
|
|
|
|
|
|
|
|
|
当时基本上 95% 的外挂辅助都是基于此原理开发的,通过不断重复的与服务器进行数据包通信,借此达到宠物升级的目的。
|
|
|
|
|
|
|
|
|
|
### 大剧院机制
|
|
|
|
|
|
|
|
|
|
不过后来大剧院的机制,很多外挂辅助便在进入战斗,确认战斗场景以后。更换场景进入大剧院,接着完成剩下的数据通信。简单来说就是在上述第 5 步之前,与服务器进行数据包沟通更换场景,然后继续战斗,以便达到节省正常游戏经验获取时间。因为并不影响游戏体验,所以官方是默许此机制存在的。
|
|
|
|
|
|
|
|
|
|
而且官方其实开发的也有外挂辅助,只是以民间的名义存在罢了。当时手动升级一个宠物需要一周左右,太影响游戏体验了,而且当时市面的游戏辅助并不影响 TX 挣钱,所以……
|
|
|
|
|
|
|
|
|
|
### 检测机制
|
|
|
|
|
|
|
|
|
|
当时作为外挂辅助开发者,我是不满足长达 2 个小时的时间,就一直在摸索官方的检测机制。因为数据包通信必须存在一定间隔,因为你不可能这样通信:
|
|
|
|
|
|
|
|
|
|
1. 客户端:我要与编号 0001 怪物战斗。
|
|
|
|
|
2. 客户端:我确定在编号 0001 怪物的地图场景,我要开始战斗了。
|
|
|
|
|
3. 客户端:我要用技能 A,干它。
|
|
|
|
|
4. 客户端:我要用技能 B,干它。
|
|
|
|
|
5. 服务器:傻 X ……
|
|
|
|
|
|
|
|
|
|
所以当时每个数据包通信间隔最少需要 600ms(约为 0.6 秒),正是因为这个机制所以一只宠物需要 2 个小时才可以升到 100 级。
|
|
|
|
|
|
|
|
|
|
### 发现 BUG
|
|
|
|
|
|
|
|
|
|
当时反向思维搞了一波,就是如果数据包通信间隔过快,官方是如何检测我的违规操作,并进行封禁处理呢?
|
|
|
|
|
|
|
|
|
|
简单尝试一下,发现官方并不是检测到你状态异常,直接对你的用户状态进行封禁。而是很莫名其妙的,用这个机制进行封禁……
|
|
|
|
|
|
|
|
|
|
1. 客户端:我要与编号 0001 怪物战斗。
|
|
|
|
|
|
|
|
|
|
100ms
|
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
1. 服务器:收到编号 0001 怪物战斗请求,当前地图场景编号是否 0001 的我需要确认一下?
|
|
|
|
|
2. 客户端:我确定在编号 0001 怪物的地图场景,我要开始战斗了。
|
2022-10-17 19:59:06 +08:00
|
|
|
|
|
|
|
|
|
100ms
|
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
1. 封禁服务器:这 B 太快了,封禁。
|
|
|
|
|
2. 封禁服务器:这 B 在那个地图?跟谁战斗?找到他封禁!
|
|
|
|
|
3. 客户端:已被封禁
|
2022-10-17 19:59:06 +08:00
|
|
|
|
|
|
|
|
|
可能是因为每个功能具体分工不同,而且也不明白为什么要在游戏内找到这个角色再进行封禁……
|
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
基于这个机制,我是这样搞得哈哈 h
|
2022-10-17 19:59:06 +08:00
|
|
|
|
|
|
|
|
|
1. 客户端:我要与编号 0001 怪物战斗。
|
|
|
|
|
2. 服务器:收到编号 0001 怪物战斗请求,当前地图场景编号是否 0001 的我需要确认一下?
|
|
|
|
|
3. 客户端:我确定在编号 0001 怪物的地图场景,我要开始战斗了。
|
|
|
|
|
4. 服务器:战斗开始校验……
|
|
|
|
|
5. 客户端:我要用技能 A,干它。
|
|
|
|
|
6. **客户端:哎、我跑到这个地图了。**
|
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
1ms
|
2022-10-17 19:59:06 +08:00
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
1. 客户端:我要用技能 B,干它。
|
|
|
|
|
2. **客户端:哎、我跑到这个地图了。**
|
2022-10-17 19:59:06 +08:00
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
1ms
|
2022-10-17 19:59:06 +08:00
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
1. 客户端:我要用技能 C,干它。
|
|
|
|
|
2. **客户端:哎、我跑到这个地图了。**
|
2022-10-17 19:59:06 +08:00
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
1ms
|
2022-10-17 19:59:06 +08:00
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
1. 服务器:技能 A 使用成功。
|
2022-10-17 19:59:06 +08:00
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
2. 服务器:技能 B 使用成功。
|
2022-10-17 19:59:06 +08:00
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
3. 服务器:技能 C 使用成功。
|
2022-10-17 19:59:06 +08:00
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
4. 服务器:怪物死亡……
|
2022-10-17 19:59:06 +08:00
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
5. 服务器:宠物 A 获取 100 exp(经验)。
|
|
|
|
|
6. **封禁服务器:这 B 太快了,封禁他**
|
|
|
|
|
7. **封禁服务器:这 B 在那个地图?跟谁战斗?找到他封禁!**
|
|
|
|
|
8. **地图服务器:在 001 地图(此时用户又更换了地图场景 002)**
|
|
|
|
|
9. **封禁服务器:找不到啊,赶紧告诉我位置!**
|
|
|
|
|
10. **地图服务器:在 002 地图(此时用户又更换了地图场景 003)**
|
|
|
|
|
11. **封禁服务器:找不到啊,赶紧告诉我位置!**
|
|
|
|
|
12. ……
|
2022-10-17 19:59:06 +08:00
|
|
|
|
|
|
|
|
|
简述如上,封禁服务器一直在屁股上追着你,而且永远追不到你!就这样每个数据包通信为 1ms,升级时间从两个小时缩短到 12 分钟。
|
|
|
|
|
|
|
|
|
|
## 后续
|
|
|
|
|
|
|
|
|
|
后续,我还没有发布这个版本,官方便停服维护了,进入战斗后 10 秒吧,禁止移动游戏场景……
|
|
|
|
|
|
|
|
|
|
我现在不开发外挂,Over!游戏外挂和逆向破解挺有成就感的,不过可不要贪杯哦哈哈!
|
|
|
|
|
|
|
|
|
|
接下来的日子,砥砺前行!
|
|
|
|
|
|
2023-11-09 17:30:33 +08:00
|
|
|
|
![CSDN](https://static.7wate.com/img/2021/04/26/c64ae18f83dd8.png)
|