早期遊戲密碼存檔機制是怎麼實現的?

時間 2021-05-30 03:40:53

1樓:天然喵

前面已經有最佳答案了,來補充一下《天使之翼2》吧。

原理很簡單,但肉眼破解沒那麼容易。

天2的密碼有點意思,18個字元,數目不多沒有那麼喪心病狂,玩家容易接受。每次賽前準備上,相同人員等級關卡等屬性相同的狀態下,每次隨機密碼會不相同,細心記錄會發現這種相同屬性下密碼一共有64種變種。其中這不同密碼中前面15個字元變化跟輸密碼介面的字元排列有整齊的偏移關係,但後三個字元變化規律看不出來。

說明有校驗機制防止玩家隨便矇對密碼。

從遊戲最開的初始屬性密碼不斷讀取就很容易看出來。

這兩個都是相同的密碼。

還有密碼介面左上角字元あ輸入是可以省略的,不改寫預設就是あ。

所以べべべ這種字元特殊的短密碼跟。

是等價的。

以べべべ為例,看遊戲是怎麼產生這個密碼的吧。

遊戲人員經驗乙個有十組,加上關卡,大空翼的兩個射門技的存在狀態,三杉純的體力歸零。這些數值來構成明文。參考DQ2密碼解密的文章劃了個圖表。

隨機數的不同,6位元那麼一共有64種,這就是以相同屬性產生不同的密碼。校驗碼是根據其他數值算出來的,輸入密碼錯誤就可以校驗出來。

可以看到每個人員的經驗值的資訊是包含在兩個密碼字元上的,還有人員的等級數可以有四個經驗值對應(經驗值的高6bit,也就是除以4後的整數部分),那麼人員等級變化後,密碼的變化不容易肉眼看出來。

以一組明文資訊開始加密,這些原始資訊最後會轉換為べべべ這個密碼。

取隨機值10,簡單轉換得到乙個6位元數值的組數,一共剛好18個,碼流轉換方法就是base64原理吧。注意其中算校驗碼是按位元組大小組數之和再加上乙個常量0x309。

這之後就開始查表轉換了。

加密用(如a[0x24]=0x26, a[0x0E]=0x25... )

2D 14 06 1D 02 22 09 2A 34 0E 00 29 37 1F 25 0A

1A 0F 38 03 28 11 13 2E 3D 16 07 36 0D 20 2C 3B

1B 05 0C 12 26 30 1C 19 17 3E 0B 21 3A 23 27 1E

18 01 33 3F 10 2B 39 2F 31 08 35 04 15 32 24 3C

(題外話,這個表其實多年前的中學蛋疼暴力讀相同關密碼時候整出來了,但因為沒有經驗值明文,也沒有學計算機二進位制,明顯能摸不出規律來)

這個表的反表在ROM中的起始位址為0x3265,ROM中這個表是解密用的

0A 31 04 13 3B 21 02 1A 39 06 0F 2A 22 1C 09 11

34 15 23 16 01 3C 19 28 30 27 10 20 26 03 2F 0D

1D 2B 05 2D 3E 0E 24 2E 14 0B 07 35 1E 00 17 37

25 38 3D 32 08 3A 1B 0C 12 36 2C 1F 3F 18 29 33

加密過程查表後變為,

最後查密文碼表,

這個數值與字元轉換表對映排列其實就是輸入密碼介面從左到右,從上到下的排列:

0 1

2 3

4 5

6 7

8 9

A B

C D

E F

0123那麼,

0x31 0x31 0x31 0x00 0x00 0x00 0x00 0x00 0x00 0x00

0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

就很容易得到

解密校驗的過程是反過來。

然而時至今日,有模擬器存檔就夠用了……

國外很早有網頁版生成器(有點錯貌似)CaH4e3 page

參考天2吧一篇帖子的上的網盤資料。

2樓:Ailsa

小時候感覺遊戲總會出乙個神秘兮兮的選項,進入乙個輸入一些奇怪的數字和文字的介面。。。

現在想想真是內牛滿面,後來玩熱血系列的時候,記住了輸入幾個奇怪的符號(對當時的我來說確實是符號)就能出現一些不一樣的東西,每次都在重新嘗試,看看手氣怎麼樣。

或許也是一種樂趣。

3樓:輕盈的鳥巢

war3的rpg也流行過密碼存資料,具體實現方法很簡單,比如有n個整數要存,先全部轉成62進製(a-zA-Z0-9)當然也可以用更多的特殊字元不過這樣記起來就不方便了。

然後把前面加密完的字元雜湊為乙個新的整數,並轉為字元存在最後進行驗證。(具體可參見雜湊函式,如md5)

玩家讀檔時只要先把字元轉回整數,再驗證雜湊值即可,簡單高效

4樓:菠蘿的海

小時候感覺遊戲總會出乙個神秘兮兮的選項,進入乙個輸入一些奇怪的數字和文字的介面。。。

現在想想真是內牛滿面,後來玩熱血系列的時候,記住了輸入幾個奇怪的符號(對當時的我來說確實是符號)就能出現一些不一樣的東西,每次都在重新嘗試,看看手氣怎麼樣。

或許也是一種樂趣。

5樓:HCocoa

從來沒有接觸過用密碼存檔的遊戲,但是作為程式設計師,看完問題描述應該就能自己YY出來了吧:

就是乙個把遊戲狀態編碼的過程,儲存在「真外存」(紙片或者玩家的大腦)裡。

6樓:

我覺得各位把事情說複雜了, 情況其實就是:

現在的存檔: 遊戲程式自己寫, 讀存檔.

"密碼"存檔: 玩家幫遊戲程式寫, 讀存檔.

只不過因為以前的遊戲存檔結構簡單, 又沒有網際網路, 使用簡單的"加密"就可以讓玩家無法作弊. 比如不會直接讓你輸入玩到第幾關, 而是在超大範圍數值中挑幾個作為關卡代號, 你沒玩過又沒人告訴你的話, 你是很難自己試出來的.

7樓:

字串編碼。別說早期FC了。魔獸三很多rpg地圖也是這樣玩的。Notd那幾張圖進去所有人第一件事敲密碼。

你想狀態不多啊。比如這個人50級,有xx裝備,間隔?替代我就可以定義乙個字串格式如下:

LV50?Item1X1?Item2X2

這裡面還可以用位置在省略類似LV/Item這樣的字元。

線性遊戲存檔機制會不會很破壞遊戲體驗?

艾克蕾爾星歌 仔細看了問題,其實你問題描述和你的問題準確來說不是乙個問題。這個提問的準確描述應該是,線型遊戲存在固定存檔位置的情況下,如果進行無傷 低消耗等強迫症式的玩法會不會影響遊戲體驗。這種情況就是給你檢查點式自動存檔或隨時存檔,體驗其實是一樣的,不信你自己品一品。你還是會這麼做。答案很簡單,會...

玩了很久的遊戲存檔丟失是種什麼樣的體驗?

剛剛發生的事 用Desume玩口袋妖怪心金已經全徽章,圖鑑123多了,就剩下裂空座和創世神那部分隱藏劇情了 結果手賤不知道按了鍵盤哪個按鍵,一下跳回了我乙個月前的即時存檔,之前所有的存檔都找不回來了 就,挺絕望的 超級無敵小洛棠 今天剛發生的事,玩patapon3玩了有七八年了,角色技能也都刷滿了,...

CHROM是怎麼知道密碼洩漏了的

POST v1 leaks lookupSingle HTTP 1.1 Host passwordsleakcheck pa.googleapis.com 谷歌會把你記錄的密碼通過加密的方式傳輸到google的伺服器進行檢查。檢查的方式,當然是他們先收集了網上公開的洩露的密碼。最近使用谷歌瀏覽器的時...