故事 › 遊戲裡藏著一整個網站
遊戲裡藏著一整個網站
你的遊戲資料夾裡有一個叫 easo 的資料夾,519 個檔案。
那不是「一些網頁」,是一整套 2005 年的社群網站 ——
註冊、好友、俱樂部、錦標賽、排行榜、線上配對。
它跟著光碟一起裝進你的硬碟,而它要連的伺服器早就不在了。
這是全站門檻最低的一次探索
不用解壓縮、不用十六進位、不用任何工具。
裡面 127 個 .html 和 11 個 .js,記事本直接打得開。
想跟著做,就從暖身課那套心法開始: 先備份、只看不改。這一課連改都不用改。
它有多大
| 副檔名 | 檔數 | 是什麼 |
|---|---|---|
| .jpg | 261 | 背景圖、頭像卡 |
| .swf | 115 | Flash —— 一整層已經死掉的技術 |
| .html | 127 | 網頁。記事本打得開 |
| .js | 11 | JavaScript。也打得開,而且沒有壓縮過 |
| .xml | 2 | 文字表 |
| .txt / .png | 3 | 其他 |
| 合計 | 519 | 約 10.8 MB |
它叫什麼名字
easo 是縮寫。這個資料夾自己說出了全名 ——
打開 data\easo\mvp\help\about1.html,第五行就寫著:
EA SPORTS(tm) Online
不是這款棒球專用的。「common」開頭的四個資料夾是 EA 所有運動遊戲共用的同一套殼, 棒球只是把自己的內容塞進去。
⚠️ 一個很容易上當的搜尋
想確認「遊戲主程式真的會去開這個資料夾」,直覺是去主程式裡搜 EASO。
本站這樣做,撈到 22 個片段,看起來證據充分。但那是假的。
SEASON 這個字裡面就含有 EASO
S-EASO-N。棒球遊戲裡「賽季」這個字出現幾百次,
每一次都會被當成 EASO 撈進來。
把含 SEASON 的片段排掉之後,22 個只剩下 4 個:
DISC_EASO
POSTEASO
EASO_ADVANCE
IMVPEASOInterfaceWWW
這四個才是真的。證據從 22 個縮到 4 個,但這 4 個是真的。
這是本站反覆遇到的同一件事:
搜尋器會丟掉單字母、
grep 對二進位檔會靜默失效、
現在是關鍵字被包在別的字裡。
搜出一堆命中,跟搜出正確答案,是兩件事。
當年它能做什麼
說明頁有 26 個主題,光看標題就是一張完整的功能表。 下表照分類把篇數列出來,「主題」那一欄是舉例不是全部 —— 標了「等」的四列,本站沒有把該分類的每一篇都列進來(22 個列在下面,另外 4 個沒有):
| 分類 | 篇數 | 主題 |
|---|---|---|
| 俱樂部 | 6 | 建立、尋找、我的俱樂部、設定、管理成員等 |
| 錦標賽 | 5 | 建立、大廳、我的賽事、歷史紀錄等 |
| 制度 | 6 | 評等、等級、代幣、排名賽、會員選單等 |
| 線上配對 | 3 | 配對大廳、建立對戰等 |
| 個人 | 3 | 生涯、數據、設定 |
| 其他 | 3 | 首頁、排行榜、即時通 |
Flash 檔裡還能撈出 48 個伺服器端點名稱。光看名字就知道規模:
create_club join_club leave_club
recruit_member ban_member unban_member
transfer_commissioner accept_commissioner
edit_club_logo edit_club_news get_cvc_leaderboard
會長可以轉讓、可以封鎖會員、可以改俱樂部新聞、還有俱樂部對俱樂部的排行榜。 這是 2005 年,一款單機棒球遊戲的隨附品。
上面列出來的那些是不含主機位址的相對路徑(同一批 Flash 檔裡另外還有十幾條帶主機名的舊網址,本站不列),而且對應的伺服器早就不存在。 這裡列出來是為了說明當年的功能,不是可以連的東西。
開發者忘了收乾淨的東西
11 個 JavaScript 檔共 1,826 行。把所有會跳出訊息框的那行找出來,一共 78 行:
| 狀態 | 行數 |
|---|---|
| 被註解掉了 | 31 |
| 被偵錯開關擋住(開關是關的) | 40 |
| 沒被擋,玩家真的會看到 | 7 |
計法:alert 跟左括號之間允許有空白。這頁上線時只搜了 alert(,少掉 patcher.js 裡 5 行寫成 alert ( 的 —— 那 5 行全部是被註解掉的,所以 73 應為 78、26 應為 31,下面兩列不受影響。31 + 40 + 7 = 78。
那七行是這些:
alert("iamge too large")
alert("iamge too large")
alert("not an image")
alert("SERVER_ERROR_10016")
alert("iamge file too large")
alert("no game api available")
alert("FAKEGAME")
一、iamge 是 image 拼錯了
而且錯了三次。這是玩家上傳俱樂部隊徽、檔案太大的時候,真的會跳出來的字。
二、一個永遠翻不出人話的錯誤訊息
SERVER_ERROR_10016 是代號,不是句子 —— 正常應該去文字表換成人看得懂的話。
去查 data\easo\mvp\main\MVP_lt_en.xml 這張英文字串表:裡面有 32 個 SERVER_ERROR 代號 ——
31 個編號從 10000 排到 10213,另外一個是 SERVER_ERROR_-1(工作階段逾時)。
偏偏沒有 10016。
所以玩家看到的就是 SERVER_ERROR_10016 這串字本身。
這個錯誤從出貨那天起,就沒有翻譯可以對。
三、FAKEGAME
它在 mvp/main/easoAPI.js 的第 6 行 —— 檔案最開頭。
看起來是開發時用來測試「網頁跟遊戲主程式接不接得上」的假訊號。 推測 本站沒有解出它實際什麼時候會跳。
為什麼這些東西還在
這一整套東西現在完全沒有用 —— 伺服器不在了,Flash 也早就被瀏覽器全面停用。 但它還躺在每一份安裝裡,佔著 10.8 MB。
跟本站其他頁講的是同一件事
介面檔裡有目錄根本不指向的資料(本站測試機那份 ingame.big 是 92.6%,剛安裝好的原版只有 0.04% —— 那 92.6% 是後來一次次改檔疊出來的,不是遊戲的性質)、
語音庫有一批號碼沒有人在用(本站測試機七成,剛安裝好的原版三成)、
球隊欄位名還停在 2004 年。
遊戲從來不刪東西。它只是不再指向那些東西。 所以二十年後打開,那些東西都還在原地。
你可以自己去看
這一課不需要任何工具,也不會動到任何檔案。三個起點:
| 打開這個檔 | 你會看到 |
|---|---|
| data\easo\mvp\help\about1.html | 它自己說出全名 |
| data\easo\commonJS\logoUpload.js | 三個 iamge 拼錯,就在檔案中段 |
| data\easo\mvp\main\easoAPI.js | 第 6 行的 FAKEGAME |
用記事本開就好。看完直接關掉,不要存檔 —— 記事本可能會偷偷改掉換行符。
本站沒有解出的部分
四件事
一、115 個 Flash 檔的畫面長什麼樣,本站沒有還原。
只從裡面撈出了文字。未解
二、FAKEGAME 實際在什麼情況下會跳。推測
三、那 48 個端點回傳什麼格式、當年實際怎麼運作。未解
四、本站沒有、也不會嘗試連線任何伺服器。
這頁全部是讀本機檔案讀出來的。
📌 重點整理
- 一句話 你的遊戲資料夾裡那個叫
easo的資料夾,是一整套 2005 年的社群網站,跟著光碟裝進你的硬碟,而它要連的伺服器早就不在了。 - 它有多大 519 個檔案、約 10.8 MB。其中 127 個
.html和 11 個.js記事本直接打得開而且沒有壓縮過,261 個.jpg,還有 115 個 Flash,那是一整層已經死掉的技術。它的全名寫在data\easo\mvp\help\about1.html第五行:EA SPORTS(tm) Online,是 EA 所有運動遊戲共用的同一套殼。 - 最容易上當的一次搜尋 想證明主程式真的會開這個資料夾,直覺是去搜
EASO,撈到 22 個看起來證據充分。但S-EASO-N這個字裡面就含有EASO,棒球遊戲裡「賽季」出現幾百次。排掉之後 22 個只剩 4 個,而那 4 個才是真的。搜出一堆命中,跟搜出正確答案,是兩件事。 - 本站訂正了自己的計數 統計會跳訊息框的行數時,這頁上線時只搜了
alert(,漏掉patcher.js裡 5 行寫成alert ((中間有空白)的。所以總數 73 應為 78、被註解掉的 26 應為 31,31 + 40 + 7 = 78,另外兩列不受影響。 - 開發者忘了收乾淨的三樣東西
iamge這個拼錯的字出現三次,玩家上傳俱樂部隊徽太大時真的會跳出來;SERVER_ERROR_10016這個代號在data\easo\mvp\main\MVP_lt_en.xml這張字串表裡查不到,那張表有 32 個代號(31 個編號從 10000 排到 10213,另外一個是SERVER_ERROR_-1),偏偏沒有 10016,所以這個錯誤從出貨那天起就沒有翻譯可以對;FAKEGAME就寫在mvp/main/easoAPI.js第 6 行。 - 當年它能做什麼 說明頁 26 個主題,俱樂部、錦標賽、評等與代幣、線上配對、排行榜都有;Flash 檔裡還撈得出 48 個伺服器端點名稱,會長可以轉讓、可以封鎖會員、可以改俱樂部新聞,還有俱樂部對俱樂部的排行榜。這是 2005 年,一款單機棒球遊戲的隨附品。
- 為什麼二十年後還在 跟本站其他頁講的是同一件事,介面檔裡有目錄根本不指向的資料(本站測試機那份是 92.6%,剛安裝好的原版只有 0.04%)、語音庫有一批號碼沒人用(本站測試機七成、原版三成)、球隊欄位名還停在 2004 年。遊戲從來不刪東西,它只是不再指向那些東西。這一課門檻最低,用記事本打開,看完直接關掉不要存檔。
- 本站沒驗的 115 個 Flash 檔的畫面長什麼樣沒有還原,只從裡面撈出文字;
FAKEGAME實際在什麼情況下會跳是推測;那 48 個端點回傳什麼格式、當年實際怎麼運作未解。本站沒有、也不會嘗試連線任何伺服器,這頁全部是讀本機檔案讀出來的。
接下來
- 一個檔案裡的地層 —— 「不刪只是不指向」的另一個例子
- 平安夜凌晨的兩次建置 —— 開發現場留下的另一種痕跡
- 暖身課 —— 用同一套心法打開第一個遊戲檔案
- 遊戲檔案地圖 ——
easo以外還有什麼