九月将近,各种通知一发,入学前的氛围又渲染了起来:对新生活的期待和紧张,再加上一些迷茫。从初高中再到本科入学,这种感觉我已经体验过很多次了。但这一次,让我感到迷茫的另有其事:研究生这三年,我要往哪个方向努力?
往大了说,无非就是做科研和就业两条路。从这个角度来看,我还没上手研究生阶段要做的事情,的确没法马上给出一个答案,只能先走一步看一步。所以这里思考的方向,不仅是毕业之后的打算,更是研究生阶段的研究方向:我要深挖哪一个细分领域,把什么课题作为自己的核心课题,做到什么程度呢?
离入门还远着
在夏天开始以前,我和导师有过一次沟通。他当时告诉我,在 AI 蓬勃发展的当下,传统的漏洞挖掘技术已有日渐式微的迹象——我们必须找到用 AI 赋能安全技术的途径并深入研究。例如,能不能设计一个模型,从更加本质的角度理解程序,从而定位到漏洞的所在和潜在利用方式?我大受鼓舞,对这个方向十分感兴趣,表示希望能在这个方向上做些什么。
暑假以来,他给了我一个思考题:“从你接触到的这些常见安全漏洞来观察,你觉得它们的本质是什么?”我在学习一段时间之后给出了自己的答案。导师不置可否,只说希望我能在之后的学习里,接触更多类型的漏洞,然后用它们来反复验证、修正自己的观点,这样才能得到更加深刻的观察。
后来了解了一些更现代的攻击方式,也读了几篇论文,顿觉醍醐灌顶:原来现在很少使用单一的漏洞执行攻击了,而是通过一个可能不起眼的条件,触发一个小 bug,进入某种可能的异常状态,然后再利用另一个漏洞……以此类推,通过连锁反应达到预料之外的结果。于是我的认知又加深了一层。
但再接着往深处走,我却发现我没办法把每个“名词”和“具体的行为”相联系起来了——对于很多概念,我只掌握了一些皮毛,了解个大概,完全没办法把它的细节说出来。例如,“对象生命周期”在实现层面是什么样的?为了保证“内存安全”,到底有哪些约束和规范?程序的状态转移究竟是怎么发生的?它和对象的创建与销毁又有什么关系?
……我意识到,我没学过的东西实在是太多了。这就导致我从宏观层面得到的结论,很可能是错的。我很讨厌这种一知半解的状态。我甚至因此感到些许羞愧,就好像一个明明啥都没摸清楚,还要发表一番议论的门外汉。
我试图把不熟悉的内容补起来,结果发现:程序分析、体系结构、内存模型、漏洞原理、编译原理……每个概念往下挖都有一整套知识。而我想要研究的领域,需要动用所有这些知识储备,并在此基础上探索新的内容。到这时候我才知道,一直以来我都轻敌了。我踌躇满志地给自己设下了那么多远大目标,搞半天都还没入门嘛。
越学越自闭
这给了我一些打击,但我也试着通过积攒知识走出这种迷茫的状态。不过一段时间以来,我始终没有找到适合自己的学习方法。
一开始,我尝试的是系统地听网课,但没坚持几天就开始打退堂鼓。说来这也是老问题了,我向来很难在课堂上集中精神,坚持不过20分钟。为此本科的时候老爱坐在第一排,靠和老师互动来提升听课效果,但就算这样也时常溜号。(此处播放刘晓燕老师的“回家吧孩子”语音……)
我很识趣地放弃了干坐着听课,使用 PortSwigger Academy、Pwn.college 等在实践中学习的网站,跟着他们的课程系统学习。但说来奇怪,我总还是感觉有些不得劲:题明明做了,这些知识点也掌握了,但总感觉没什么实感。于是我没能持续性地投入到这些学习中。每次打起精神,突击性练个一大截,翌日就又打回了原形。
思忖一番,除了自己纯纯犯懒以外,可能还有这些原因……
- 知识地图实在是太大了。 我在过程中学得越多,不明白的东西反而越多,需要学习的也越多。不仅如此,“掌握一个题目的解法”和“形成对整个领域的理解”更不是一回事。这就导致我每次看着漫长的学习清单,都感到很挫败:为什么我的很多和我年纪一样大的同学都掌握了这些呢?我本科都干什么去了?怎么欠了这么多东西没学?
- AI 太好用了。 在做题的时候,我发现很多任务完全可以不加思考地丢给 AI。只需稍等片刻,它就能给你一个准确的解法。自己费劲分析半天,到头来还可能是错的。一条非常方便的捷径摆在面前,谁还会想自己去苦苦琢磨呢?
- 总是在纠结要不要补基础。 就像前面所说的,AI 正在逐步替代这些老手艺人的技术。我现在再去了解这些、积累经验,会不会已经没有性价比了?甚至,如果我再功利一点,单纯从就业角度看,我现在学习的这些内容会不会一文不值?这些想法总是在我试图学习的时候飘出来。
以上的观点,很多都不甚理性,甚至轻松两句话就能被反驳。但它们都是我真实的情绪体验和挫败来源。也许是我还需要调整自己的学习方法,也许是我的执行力还不足——总之,我的确是意识到了“我在原地踏步”这一件事。
恍然间我想起了本科教我们操作系统的老师。在课上他三令五申,反复念叨,让我们认真学基础知识,研读《程序员的自我修养》等等读物,主动和MIT对标……讲这些时,他眼里总好像是闪烁着光。他绘声绘色地描绘着那个蓬勃向上的时代、所有人奋发进取的时代——大家都抱着一本又一本计算机原理书硬啃,不吃透 CS 的奥秘不罢休。聊罢看向讲台底下偷偷看手机的我们,他眼里总是闪过一丝对世风日下的失望。
这个老师在我心目中的形象,的确是有些堂吉诃德化了。但每次谈到“打基础”,我总是会想到他。当时的我不以为意,现在的我发现缺乏基础知识实在是寸步难行,逐渐理解了他的号召(好吧我早就理解,只是懒得花时间去做……)。
宕开一笔,我仍然有些不解,如果 AI 能够代替我们做到更多事情,那我们需要学习的还剩下什么?我们需要掌握的是什么样的能力?我们又需要扮演一个什么样的角色?——不过这又是另一个话题了,值得另找时间好好讨论一番。
高不成,低不就
到头来,我既没有积累足量的前置知识,也没能想好自己的研究方向是什么。但不管怎么样,我还是按照目前的见解,对自己可能的方向审视了一番。
我真正感兴趣的还是网络安全领域中“攻防”的要素。通过自己的运维技能加固服务器,防范各种攻击很有趣;在逆向的代码中寻找端倪,挖掘出关键漏洞很有趣;就算技术上万无一失,也能通过人为的疏忽,出奇制胜——这就更有意思了。这种博弈是我最感兴趣的部分,也是我持续学习的动力。
但是近年来的变化让我不得不从更现实的角度考虑。以往的那些攻防技术似乎成了老手艺,在 AI 的铁骑碾压下有些不够看了。我要么也把 AI 纳入自己的研究范围,要么再深入一些,去做更基础的、更理论性的研究。
说实话,我并不太想去研究现在的热点,Agent 技术或者说 Harness Engineering。我不否认它们的技术含量,但我总觉它们的本质,就是把软件工程那套规范化的原则在 LLM 上再构建一遍。对这类偏工程应用的工作,我不太提得起研究兴趣。后训练、强化学习等偏 AI 底层的方向也不是我的菜。
也许导师向我介绍的那一个方向最有可行性。但从我现在积累的知识来看,完全说得上是“高不成,低不就”。如果我自己都说不明白“程序在机器层面到底是什么样的”,我又怎么能做到让模型理解这一点呢?就算霸王硬上弓,最后可能也只会变成“先拿 Transformer/GNN/Agent 这些工具,再找一个地方把它们套进去”的灌水工作。
简而言之,我还不具备做底层研究的实力,却有不少野心;没法去走一些传统的路径,却也不甘心。与此同时还有些眼高手低——这不是一个好的征兆。
更适合自己的是……?
我也意识到了,要打破这样的局面,还是得从提升自身能力开始。不管研究的东西能不能发出论文、能不能毕业;不管掌握的本领能不能让我找到工作、混口饭吃——我想要达成这个目标,就必须想方设法让自己掌握更多东西。立足当下,这才是要做的。
而从长远一些的层面去观察,之所以我没有办法确定自己的研究方向,之所以那个“要不要继续深入做科研”的问题也还没个答案,都是因为我根本不知道这个领域的“做研究”是什么样的,又怎么能知道自己想要什么,更从何谈喜欢和坚持?
所以说到底,我现在其实没有必要急着决定方向。因为我还没有获得足够多的东西,去判断自己真正想研究什么。ChatGPT 锐评:“你现在并不需要决定三年后的自己是谁。”(最后还是靠 AI 来指点迷津了啊……(扶额))
行文至此,开头问题似乎还是没能有一个明确的答案。不过这些思考也给了我一个短期的目标。学习更多知识也好,积累更多实践经验也好,先不急着想东想西,而是做些什么。当前任务不是决定方向,而是获得判断方向的能力。
(先找到适合自己的学习方式,把越学越自闭的问题解决吧~)












