九十年代初,个人电脑尚未普及,我正在读大学。学校开了 BASIC 和 FoxBASE 课程。那时通信还靠纸笔,红袖添香更是奢望,电脑游戏便成了穷学生最亲切的慰藉。

为了在游戏里玩得更好,我开始琢磨两件事:一是怎样修改游戏人物的各项指标,比如生命值和宝物数量;二是怎样跟机房老师斗智斗勇,多争取些上机时间。这两件事无意间成了我的技术启蒙。

01 博弈

玩《三国志》时,为了提高武将逃跑的成功率,恨不得人手一匹赤兔马。那时互联网还只是传说,既没有攻略论坛可以交流,也没有现成的修改器可买,只能自己动手,丰衣足食。

于是我从汇编语言学起,钻研操作系统的底层原理和文件加解密技术,为了防止自己的「作品」被随意复制,还专门写了一个压缩软件。这种为游戏而做的「逆向工程」,改变了我思考问题的方式。

编写工具软件与开发应用程序截然不同。后者有成熟的高级语言,只需专注于算法逻辑;前者必须直面电脑的物理层面,跟操作系统底层、文件存储、扇区读写短兵相接。

这段「小打小闹」的经历让我受益匪浅。后来接触 Windows、Mac OS 这类保护模式操作系统,我并不觉得陌生;每遇到系统故障,思路会本能地下潜到机器代码层面去找病灶。

九十年代初的游戏数值基本不加密,32 就是 32,顶多换算成十六进制的 20H。反复比对数值变化、缩小搜索范围,总能定位到物理存储地址。改多改少全凭心情,要面子的翻个倍,没底线的直接改到溢出。

商家与玩家的这种博弈,催生了后来日益复杂的加密技术。道高一尺,魔高一丈,随后出现了台湾团队开发、大陆金山等公司跟进的专业修改软件,这些工具背后的思路也能轻松破解许多加密文件。再往后,专业软件普及,自己手写工具已无必要。回想 DOS 时代,许多技术门槛并不高,关键在于肯不肯钻研。那段没钱也没女朋友的日子,或许恰恰成就了一批早期的电脑专家。

02 机房

当年的机房,相当于如今的网吧,正式名称是学校运营的计算机实验室。凭卡上机,每小时一元,多买有优惠,但对当时的学生仍是一笔不小的开销。

初见 IBM 486 时,只能用「惊艳」二字形容。此后经手的电脑性能虽然千倍于它,却再难找回那份最初的触动。

现在的孩子很难理解,为了装一个游戏要把三十多张软盘轮流插进去是什么滋味,更难体会在没有存档功能的年代,电脑一死机、心血付诸东流的无奈。当时机房电脑分 C、D 两个区,C 盘容量小,还加了写保护,个人应用只能装在 D 盘,一重启就被清空。

于是「破解硬盘写保护」迅速上升为主要矛盾。这涉及 BIOS 操作,不像今天百度一下就知道,我们几个同好研究了好几个月才攻克。老师们对此睁一只眼闭一只眼。机房角落的几台电脑渐渐成了我们的专座,我们还通过隐藏文件在 C 盘上交流资料(包括各种图片),那里成了秘密基地。

当时有位机房老师长得颇像影星吴启华,技术精湛,对学生有点凶。学校机房严禁玩游戏,可游戏恰恰是我们的第一需求。老师值守机房也无聊,同样靠打游戏打发时间。有一天,我看他玩游戏总卡在某一关,便悄悄告诉他生命值的存储地址。他是科班出身,一点就透,随手把数值改到爆表。如今流行的「爆表」一词,我们二十年前就身体力行了。从此我们结下「革命友谊」,我专挑他值班时去上机,省下了不少机时费。

03 网络

我第一次接触真正的网络,是在附近理工大学的 Novell 局域网上。

意识到海量资料可以通过网络存取,甚至能和别人实时文字聊天,我的眼界一下子打开了,才知道联网电脑和单机是如此不同。单机游戏打得再好,战胜的也不过是冰冷的程序逻辑,何况常常还靠作弊;联网对战时,屏幕对面是和你一样绞尽脑汁的真人,对抗中的变数和乐趣无穷无尽。

也是在理工大的机房里,我第一次接触 Unix 系统。它复杂的指令集和深不见底的功能远远超出了我当时的认知,却也有一种迷人的魅力。如果说 C 语言是一辆汽车,Unix 就是一架航天飞机,能飞进浩瀚的未知。

C 语言写的程序可以直接在 Unix 下运行,这一点极具优势。汇编语言虽能直接操纵硬件,却过于原始繁琐,一个简单的文件操作就要几百行代码,调试稍有不慎就是几个小时的挫败。C 语言不仅高效,跟晦涩的汇编一比,连常被人诟病的「指针」都显得眉清目秀起来。

04 语言

C 语言及其衍生的 C++、Visual C,至今仍是编程界的基石。即便在人工智能大行其道的今天,那些花样翻新的新语言,归根结底都建立在 C 语言打造的生态之上。

互联网时代初期,JAVA 曾如日中天。它可以看作 C 的简化版,剔除了直接读写内存等容易导致系统崩溃的危险操作,保留了相似的语法,又加入了 Socket、类等特性。

JAVA 的核心优势是跨平台:编程时不必考虑对方的硬件配置,只要装了虚拟机,代码就能通行无阻。这对网络编程是划时代的。所谓划时代的思想,往往就是把人从简单重复的劳动中解放出来。

JAVA 流行时,我身在大连,那是一个把扑克牌游戏「打滚子」视作社交礼仪的城市。业余时间我用 JAVA 写了一个支持局域网四人对战的「打滚子」游戏,那时联众游戏平台还没有诞生。

与 JAVA 相关的另一个概念是 JavaScript(JS)。它在设计思想上继承并精简了 JAVA,但二者并无血缘关系。如今随便打开一个网页,大半是 JS 和 PHP 的天下。由于 JAVA 和 JS 都严格限制对本地硬件的读写,要想深度操控远程电脑(也就是所谓的黑客行为),往往还得回到 Unix 时期的网络技术,重拾 C 语言一系。

如今编程有 Python,数据库有 MySQL,脚本有 PHP,技术门槛比 C 语言时代低了许多;更重要的是,它们都有了拥有海量扩展功能的完整生态。

05 驻留

在 DOS 时代,控制电脑的常用手段是编写「内存驻留程序」(TSR)。

这类程序表面上已经运行结束,实际上潜伏在内存深处,监听键盘、鼠标、硬盘等中断信号。记录键盘敲击在技术上非常简单,难点在于如何神不知鬼不觉地混入系统、躲过杀毒软件并抹掉痕迹。因此 TSR 技术堪称早期黑客的入门必修课。

进入 Windows 时代,汇编语言逐渐隐退,C 语言接过了这一棒。到了网络时代,驻留程序不再局限于监听,更多是留下预设口令的「后门」,用来远程窥探或回传信息。对普通用户来说,只要不随意安装来路不明的软件,用正版系统,配合防护软件,被黑的概率仍然很低。

06 Web

1996 年前后,电话拨号上网开始走进中国普通家庭。那时一台电脑的价格相当于普通人一年的收入,经济压力不亚于今天买车。直到 1998 年克林顿「拉链门」事件导致雅虎瘫痪,人们才惊觉网络已经成了公众获取信息的核心渠道。

雅虎(Yahoo)揭开了门户时代的序幕,很有远见地整合了搜索、浏览和邮件服务,定义了初代网民的「冲浪」方式。时过境迁,它早已不复当年的统治力,但作为数字世界的拓荒者,依然值得敬重。

2002 年,局域网和宽带互联成了许多单位的标配。同年我负责建设单位的办公网络,从服务器端能清楚看到每个节点的数据流向,那一刻不禁感慨:网络无隐私。项目验收后我很快移交了管理权,一来志不在此,二来也知道这是个风口浪尖的位置。

2002 年以前,大多数人只是网络的看客,互动仅限于聊天室、QQ 和 MSN。

聊天室:谈人生哲学的地方,当然更多时候是在约会和吵架。移动互联网兴起后,它逐渐式微。

MSN:背靠 Hotmail,在谷歌崛起之前曾不可一世。

QQ:如今的国民软件。许多人或许不知道,早期注册 QQ 号是要付费的。收费多半出于激烈的生存竞争,未必是本意;后来的历史表明,自由与免费才是互联网长久不衰的根本。

让大众真正知道「博客」这个概念的,是两位女性。

一位是竹影青瞳。2002 年前后,她在博客上发布了大尺度个人写真,虽然昙花一现,却让公众第一次见识了博客的传播力。

另一位是木子美。2003 年前后,她以一份《遗情书》及录音引爆网络,她筛选男记者的标准更是惊世骇俗。

天涯影响了一批事件,创造了一批语汇,也捧出了一批名人,堪称网络时代的黄埔军校。木子美文笔洗练,目光毒辣,撕开了无数伪装。如今她的名字虽已成了敏感词,恰如《红高粱》上映之后,无数高粱地应声倒伏。

若干年后,新浪微博上活跃着一位文笔辛辣的「不加V」,人称木老师。后来「不加V」也销声匿迹,据说化身成了一只乌鸦,继续点醒世间道貌岸然之辈。鸟在文化中本就地位非凡:三足乌是太阳之灵,凤凰能浴火重生,密涅瓦的猫头鹰是智慧的化身。看着木老师当年那些爆文,倒真让人对鸟类油然起敬。

07 后记

本文由我 2014 年发布的几篇零散微博整理而成。

发在微博等第三方平台上的文字,常常随着账号变迁无声无息地消失,这篇旧文便是一例。好在我一直有自己备份的习惯。这次重发,顺应时势删去了部分内容,文字也略作修饰。

2026年1月5日 补记