致我最好的朋友

一个月前,我最好的朋友猝死了。

说来惭愧,今天我踏上从武夷山回程的火车,才有时间坐下来,为这位可爱的灵魂写下一篇文章,记录他在我生命中不朽的价值。时至今日,我时常想起与他的那些时光。然而,对于轰鸣向前的所谓大厂,一个耗材的逝去又算得了什么呢?几年后,也许迈向同一个工厂的人成了我,我又如何保证不会落到相同境地?到时候,也许想去,也没有这样的能力吧。前倨而后恭,如是而已。

我有太多,太多想说的。一时间,让我无从下笔了。

陈是我最好的朋友。他比我大四岁,当我在读初二的时候,他已经高二了。那时,他是我身边为数不多的电脑高手,是把我带进网络安全这个领域的人。我记得初二的一天他向我展示他最近在写的项目 PINGPONG(我们后来叫它“窝窝”,这是一个由谷歌的错误翻译导致的梗)。那是一个 CC (又称 C2,Command & Control)框架,用 python 写的,用原生 socket 实现通讯,把 metasploit 里的 script 缝缝补补拿来做后渗透。那段时间我们免杀用的是加密 pyinstaller 打包产物的 bytecode,即 –key 参数。在低版本的 pyinstaller 中,你可以使用 –key 参数去实现 virusscan 上全绿的静态免杀(2021)。

哈哈,想起来如果没他我高低要被骂两句嘉豪。

那会疫情,我们都在上网课。于是就都 Alt + Tab 出来一起写项目。后来啊,我们还一起写了一些其他的玩具项目。比如僵尸网络的框架 Arctic Wolf,还有什么其他的东西,记不得了。那会就我们俩互相黑着玩。那段时间我算是摇晃着把编程学了一点,入门了一些软件开发。

我读高中的这几年,大部分属于计算机的时间都浪费在 CTF 竞赛上了。陈比我聪明,他倒是对竞赛不感兴趣,他就一直在开源社区写东西。我们下一次一起写项目是我高三的这一年,针对 python 的沙箱绕过写了一个自动化工具,Typhon —— 别闹了,那是没有 AI 的时代。我是不可能独立写出来这些东西的。提丰里面的核心算法设计,包括架构,都是陈和另一个亲爱的人完成的。然而依然是我们几个互相黑着玩的东西。好在后来又拉了一些人搞了点宣传终于能看到一些用户用我们的玩具。

我英文比较好,所以陈很早就推荐我去给他所贡献或维护的项目写一些文档的翻译稿,这也直接导致我后来有了翻译的爱好。不论是 cpython 还是 php 内核的文档的翻译工作,一开始都是他推荐我去尝试的。最后,这个爱好一直保持了五年,直到现在。

高三的时候压力非常,非常大。好在陈就在我附近的大学读书。很多时候我下晚自习,也就是十点左右,就会去找陈一起去深圳的海边骑车。说是海边,其实也就是深圳湾附近的公园,能窥见太平洋的一角。那里有平静的海浪打击礁石的声音,和镜子一样的圆月,倒映在像湖一样的海水里。

好了。写作不是来折磨自己的,我不想再往下写了。

有人说,毁尸灭迹没什么难的。你把尸体往大厂的楼下一扔,他们会替你压下来。是啊,陈的死,除了身边关系亲近的人之外,我再没有听其他人说起。也许大家都习惯了吧。毕竟,不就是一个员工猝死了么?我们大可以归类到作息不规律,不社交,不运动,不控制饮食,不及时就医,云云。

能看到这篇文章的各位,也都是我所亲爱的人——大家应该知道,我们的人生不止在给工作电脑插电源的时候,才会产生花火;我们的手不止能永无止境的敲击键盘,也能种下花儿。

陈尊重我的对或错,让我的声音在中学时代被人听到而不再孤独。告诉我在软件的世界里什么样的人是强大的,使我不再害怕什么。他是我生命的贵人。即使他如今已经离开,他对我的影响永存(static)。

也罢,也罢。我想,有时候人生就像一趟长途的火车。当你刚刚踏上它的时候,你也许会抱怨漫长的车程,你也许会抱怨自己只能在二等座。但是,当你习惯了窗外呼啸而过的田野,山川,海洋,村落,沐浴着橙色的霞光半躺在椅子上时,火车,就要到站了。

51993f3ab9c81b32f5fa82ea52f6418a

好了。:wq

2026.6.1 在从武夷到深圳北的火车上