教我卡Bug的學長後來去當工程師了

發表時間:2026 年 11 月 02 日 | 更新日期:2026 年 11 月 02 日 | 編輯:雅寶社區編輯團隊
教我卡Bug的學長後來去當工程師了 - 雅寶社區 · 頂客論壇

第一類是「利用地圖設計不良」。例如某段牆的碰撞判定有缺口、某個斜坡可以讓你滑進 normally 到不了的區域。這種東西不動到遊戲資料,純粹是遊戲世界本身的幾何錯誤,比較像是「發現開發者忘了關的門」。

第二類是「利用系統判定的時間差」。例如在道具欄切換的瞬間執行某個動作,讓系統重複計算一次獎勵;或者在傳送讀取的空白畫面期間輸入指令,讓角色落在錯誤的座標。這一類開始有一點「鑽漏洞」的味道了。

第三類,就是修改遊戲檔案、使用外掛、攔截封包。這一類在老遊戲時代很常見,但它已經不是「卡Bug」,而是「改遊戲」了,法律與帳號風險完全是另一個等級。

學長當年只碰前兩類,而且他有個很明確的原則:不動別人的帳號、不影響其他玩家的正常遊玩、發現了就去回報。他常說一句話:「你找到一個洞,是為了讓它被補起來,不是為了住在裡面。」這句話,後來我在資安圈聽到幾乎一模一樣的版本,叫做「負責任揭露」(Responsible Disclosure)。

二、那些年我們一起卡過的Bug

接下來這段,算是這篇文章比較「攻略」的部分。我不會給你具體某一款遊戲的操作步驟,因為那既過時又可能違反遊戲規約;我要給你的是「類型」與「思路」。這些思路,才是真正能帶得走的東西。

2.1 穿牆、複製道具與無限金幣:三大經典漏洞

先講穿牆。穿牆的原理,幾乎都跟「碰撞偵測」有關。遊戲判斷你能不能過去,通常是檢查你的角色座標有沒有和牆的範圍重疊。問題是,角色的移動不是連續的,而是一格一格跳的——你按一下前進,角色可能直接從 A 點跳到 B 點,中間的過程被省略了。如果 B 點剛好落在牆的「另一側」,而且系統只檢查「終點有沒有在牆裡」,那你就有機會直接穿過去。這就是所謂的「隧穿效應」,跟物理學那個同名概念意外地像。

所以老玩家會用「斜角衝刺」、「貼牆跳」、「利用延遲連點」這些手法,本質上都是在製造「一次跳太遠」的瞬間。學長當年教我,穿牆失敗不要一直重試同一個角度,要「換一個維度想」:改成從高處落下、改成在讀取時移動、改成兩人疊在一起。這就是除錯時很重要的「改變變因」。

再講複製道具。這是老遊戲最常見的漏洞,原理多半是「交易或丟棄的流程沒有做原子性處理」。白話一點說:系統先把東西給你,才把東西從對方身上扣掉,這中間如果有零點幾秒的空檔,你就能用斷線、切換地圖、或同時開兩個視窗的方式,讓「給」發生兩次、「扣」只發生一次。這在資料庫的世界裡叫「競態條件」(Race Condition),是工程師面試很愛考、實務上很常炸的東西。

最後是無限金幣。這一類通常不是「複製」,而是「計算錯誤」。例如賣出價格高於買入價格、任務獎勵可以重複領取、或者某個兌換比例寫錯。學長當年的做法很工程師:他會拿一張紙,把「取得金幣的所有管道」列出來,一個一個算期望值,看哪一個的數字「看起來不合理」。他說:「只要有一個地方的數字漂亮到不像話,那裡就有問題。」這句話,大學修演算法時我再次聽到,叫做「尋找異常值」。

2.2 卡Bug的技術含量比你想的高

很多沒碰過的人會覺得,卡Bug就是「知道密技的人很爽」。但實際上,真正會卡Bug的人,做的是一連串很有系統的事:

  • 觀察:先假設遊戲是怎麼運作的,再去找「和假設不符」的地方。例如你認為屋頂上不去,那就去測「所有可能讓角色高度上升的動作」。
  • 控制變因:一次只改一個東西。換角度、換速度、換裝備、換連線品質,逐項測試,才知道哪個因素是關鍵。
  • 記錄:學長的筆記本裡畫滿了地圖、座標、時間點。他會寫「14:32 第三次成功,網路延遲 180ms」。這根本就是測試報告。
  • 重現:能穩定重現,才算真的找到。只成功一次的叫「運氣」,能連續十次成功的才叫「Bug」。
  • 回報與修補建議:他會去官方論壇發文,附上重現步驟,甚至猜測是哪一段程式邏輯寫錯。
  • 你看出來了嗎?這五件事,和軟體工程裡的「重現問題、隔離問題、提出修正、驗證修正」幾乎一模一樣。當年我們以為自己在玩遊戲,其實是在做最原始的軟體測試。

    三、從遊戲漏洞到程式漏洞:同一種思維

    學長後來考上了資工系,畢業後進了一家做後端的公司。有一次我們吃飯,我問他:「你覺得當年卡Bug對你現在有幫助嗎?」他想了一下,說:「有,而且是決定性的。因為我比同學更早習慣一件事——程式一定會出錯,而錯誤是可以被找出來的。」

    3.1 卡Bug教會我的除錯邏輯

    他跟我分享了一個很有意思的對照。當年我們在遊戲裡找漏洞,靠的是「對系統行為的預期」和「實際行為」之間的落差。工程師除錯也是這樣:你預期按下按鈕會送出表單,結果畫面白掉,那中間一定有一個環節和你以為的不一樣。

    更具體地說,卡Bug訓練了三種能力:

    第一種是「邊界感」。遊戲的地圖有邊界、數值有上限、道具數量有最大值。漏洞幾乎都住在邊界上:數量 0 和 1 之間、座標的最大最小值、時間的 23:59 和 00:00。工程師寫程式最常炸的地方也是邊界:空陣列、除以零、整數溢位。當年為了卡Bug去測試「剛好 99 個道具會怎樣」、「站在地圖最右上角會怎樣」,其實就是在做邊界測試。

    第二種是「狀態機的概念」。遊戲角色有很多狀態:站立、移動、攻擊、被擊暈、讀取中。很多Bug來自「某些狀態下本來不該能做的動作,卻沒有被擋住」。例如「被擊暈時能不能喝水」、「讀取中能不能交易」。這在工程上叫「狀態驗證不完整」,是資安漏洞的常見成因。學會用「狀態」去拆解一個系統,是很值錢的能力。

    第三種是「不相信前端」。當年很多「修改本地檔案就能無敵」的漏洞,原因是遊戲把重要判斷放在玩家電腦上跑。學長那時就說:「如果規則是玩家自己電腦在算的,那玩家想怎麼算就怎麼算。」這句話,就是現在資安課第一堂會講的「永遠不要信任客戶端」。很多網站把權限判斷寫在前端 JavaScript,下場就跟當年那些遊戲一樣。

    3.2 學長如何把「找漏洞」變成正職

    我必須說,學長不是那種一路順遂的天才。他重考過一年,大學程式設計被當过一次,第一份工作也不是什麼大公司。但他有一個別人沒有的習慣:他會把「找到問題」當成樂趣,而不是當成麻煩。

    他跟我說,他大學專題做了一個很無聊的東西:一個模仿當年那款遊戲的道具系統。他刻意在裡面留了三個漏洞,然後寫了一份報告,說明這三個漏洞是怎麼產生的、怎麼修、修完怎麼驗證。那份報告後來變成他面試的作品集。面試官問他:「你為什麼想做這個?」他說:「因為我以前在遊戲裡找漏洞,找到後來想知道,這些漏洞到底是怎麼被寫出來的。」

    後來他進了公司,做的第一批工作就是 QA(品質保證)與自動化測試。他跟我說,很多新人覺得測試很無聊,但他覺得那是全世界最像「卡Bug」的工作:你要想辦法弄壞一個系統,而且要有憑有據地說出你怎麼弄壞的。再後來他轉去做後端,理由是「我想站在寫出漏洞的那一邊,把它們寫得少一點」。

    四、當「卡Bug」變成一門專業:給玩家的轉職指南

    如果你看到這裡,心裡想的是「我也喜歡找漏洞,那我能不能也走這條路」,那這段就是寫給你的。我不會給你什麼速成班,但我可以給你一條相對清楚的路線,以及幾個我認為真正重要的觀念。

    4.1 從玩家到測試工程師:最短的距離

    如果你完全沒有程式基礎,最務實的起點是「軟體測試」或「遊戲測試」。這個職位對本科系的要求相對寬鬆,重視的是「你能不能有系統地找出問題」。而這件事,你已經在遊戲裡練了很多年。

    你需要補的東西大概是這些:

  • 測試的基本概念:等價類別、邊界值分析、情境測試、回歸測試。這些名詞聽起來嚇人,但你會發現你早就會了,只是沒有名字。
  • 寫測試案例:把「我怎麼弄壞它的」寫成別人可以照著做的步驟。這件事比你想的難,也比你想的重要。
  • 一點點程式能力:至少看得懂 Python 或 JavaScript,能寫簡單的自動化腳本。不需要一開始就很強。
  • 工具:Git(版本控制)、Postman(測 API)、基本的瀏覽器開發者工具。這幾個學起來,履歷就開始有樣子了。
  • 我建議的做法是:找一個你熟悉的網站或 App,開始「有紀律地」找它的問題。不是隨便亂點,而是先寫下你預期它應該怎麼運作,再去驗證。找到問題就記錄下來,附上截圖和重現步驟。累積二三十個案例,那就是你的作品集。這跟當年學長那本筆記本,是同一件事。

    4.2 從腳本小子到資安研究員:需要跨越的門檻

    如果你對「漏洞」本身的興趣大於「測試流程」,那資安會是更對口的方向。但我要老實說,這條路的門檻比較高,而且灰色地帶更多。你需要非常清楚「授權」的界線:沒有經過允許去測試別人的系統,在法律上就是入侵,不管你的動機多純良。

    合法的入門方式有幾個:

  • 練習平台:像 Hack The Box、TryHackMe、PortSwigger 的 Web Security Academy,都是專門給你打靶的環境。從這裡開始,不要從真實網站開始。
  • Bug Bounty:很多公司有漏洞獎勵計畫,明確授權你在範圍內測試。這是把興趣變成收入最直接的方式,但需要一定的技術底子。
  • CTF 競賽:資安解謎比賽,台灣也有很多隊伍在玩。這是練功兼交朋友的好地方。
  • 基礎知識:網路概論(HTTP、TCP/IP)、作業系統(Linux)、Web 基本架構(前端、後端、資料庫)。這些是地基,不能跳。
  • 學長給我的建議是:「不要把『會用工具』當成能力。工具誰都會用,真正值錢的是你知不知道『為什麼這個工具能奏效』。」這句話套在卡Bug上也成立:會按密技的人很多,知道為什麼會生效的人很少。

    4.3 給自己的三個練習建議

    不管你走哪條路,我都建議你養成三個習慣。第一個是「寫下來」。當年學長的筆記本,就是他後來面試的武器。你現在遇到的每一個問題、每一個「咦怎麼會這樣」,都值得記下來。

    第二個是「問為什麼,問到不能再問」。為什麼這個按鈕按了沒反應?因為事件沒綁定。為什麼沒綁定?因為元素是後來才產生的。為什麼後來產生的元素沒綁定?因為用了錯誤的綁定方式。問到這裡,你就學到東西了。

    第三個是「自己動手做一個小東西」。做一個小遊戲、一個小網站、一個小工具,然後想辦法弄壞它。你會發現,當你站在「建造者」那一側,你對漏洞的理解會完全不同。這也是學長從 QA 轉後端的原因:他想知道洞是怎麼被留下來的。

    五、寫給還在卡Bug的你:遊戲倫理與風險

    講了這麼多「卡Bug的好處」,我必須把另一面也講清楚,不然這篇文章就太不負責了。當年的網咖時代,卡Bug的代價頂多是被管理員踢下線、被同學笑。現在的環境完全不同。

    首先是遊戲規約。幾乎所有線上遊戲的服務條款都明文禁止「利用程式漏洞獲取不正當利益」。輕則回收道具,重則永久封鎖帳號。你花了几千小時的帳號,可能因為一次「測試」就沒了。而且現在的遊戲公司會記錄行為軌跡,不是你說「我只是好奇」就能過關的。

    其次是法律風險。在台灣,未經授權入侵他人電腦系統可能觸犯刑法妨害電腦使用罪;修改遊戲程式、散布外掛,也可能涉及著作權問題。這些不是嚇唬人,是真的有案例。當年那種「改個檔案就能飛」的時代已經過去了,現在的遊戲大多有防篡改機制,你動它,它會回報。

    再來是私服與來路不明的程式。很多號稱「可以卡Bug」、「送無限資源」的私服或外掛,本身才是最大的漏洞——它們可能竊取你的帳號密碼、綁架你的電腦、或把你變成殭屍網路的一部分。你以為你在卡Bug,其實是別人在卡你。

    所以我會這樣建議:想練習找漏洞,去合法的練習環境;想測試遊戲,先看清楚規約,並且只在自己的單機或私人環境做;找到真正的漏洞,走「負責任揭露」的路,回報給官方,而不是拿去賣或拿去用。學長當年那句「你找到一個洞,是為了讓它被補起來,不是為了住在裡面」,到了今天,我認為依然是對的。

    六、結語:那個Bug,其實是人生的入口

    前陣子我又見到學長。他現在已經是個帶團隊的工程師了,講話還是不快,眼鏡度數好像又深了一點。我們聊到當年網咖的事,他笑說:「你知道嗎,我現在每天在做的事,其實跟當年沒什麼不同。當年我找的是遊戲的洞,現在我找的是系統的洞。差別只是,現在找到洞會有錢,而且不能自己鑽進去。」

    我問他,如果再遇到一個像當年我那樣、蹲在網咖角落對著牆一直撞的國中生,他會說什麼。

    他想了一下,說:「我會問他,你為什麼覺得這樣撞有用?如果他能講出一個理由,那我就會教他更多。如果他只是亂撞,那我會叫他先去把遊戲玩熟。」

    「那如果他有理由呢?」

    「那我會跟他說,你現在做的這件事,有一個名字,叫測試。以後可以當飯吃。」

    寫這篇文章的時候,我一直在想,當年那個在網咖裡教我卡Bug的學長,其實不知不覺地示範了一件事:好奇心的方向,決定它會變成破壞,還是變成創造。同樣是「找漏洞」,有人拿來複製裝備、賣帳號,有人拿來修系統、寫程式。中間的差別,不是技術,是選擇。

    如果你現在也正在某個遊戲裡,對著一道牆反覆嘗試,那我希望這篇文章能給你兩個東西:一個是更系統化的思路,讓你知道自己在幹嘛;另一個是方向感,讓你知道這份好奇心可以帶你去哪裡。至於要不要真的去當工程師,那是另一回事。但我可以跟你保證,當年那個教我卡Bug的學長,現在過得還不錯,而且他還是很喜歡找洞——只是現在他找的洞,會被人們感謝,而不是被人們檢舉。

    最後,還是要提醒一句:遊戲規約要看、法律界線要守、別人的系統不要亂碰。真正的「高手」,不是卡進別人進不去的地方,而是知道哪裡不該進去。這一點,比任何密技都難學,也比任何密技都值錢。

    願你找到的每一個 Bug,都能讓你更懂這個世界一點。

    🏠 返回首頁