SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
アジェンダ
● 普通に遊ぶ
● データをいじる
● やったね
● ごにょごにょする
普通に遊ぶ
熟練度上げ
● たたかう
● キャンセル
– 熟練度算出ざっくり式(想像)
● 敵Lv-熟練度+たたかうを選択した回数
● 熟練度が上がると弱い敵を1発殴るだけではダメ
ステータス上げ
● ちから
– こうげき
● すばやさ
– かいひりつ
● HP/MP
– 味方を殴る
ブラッドソード最強
● 16回ヒットで9割くらいのHPを吸い取る
– ダメージ算出ざっくり式(想像)
● 残HP*(ヒット数/16)*0.9
● 18回ヒットすれば100%以上を吸い取る
– 剣熟練度+ヘイスト(or バッカスのさけ)
● 18を上回れば即死武器
● ラスボスも一撃
た5
● ステータスが99を超える
– とうぞくのこて
– ねじりはちまき
– きんのかみかざり
データをいじる
準備するモノ
● カセット
● レトロフリーク
● バイナリエディタが使えるパソコン
レトロフリークの仕様
● セーブデータが独自形式
– 変換ツールが公開されている
RPGは解析しやすいよね
● ほとんどの数値がパラメータとして確認で
きる
ユーザが入力できる値
● 名前
– 6文字入力できる
● 「ああああああ」ならセーブデータ上に6連続で出
現するはず
● 「あいうえおか」ならインクリメントされたデー
タが出現するはず
手順(1/2)
● フリオニールの名前を「ああああああ」
● マリアの名前を「いいいいいい」
● ガイの名前を「あいうえおか」
● レオンハルトの名前を「きくけこさし」
– 予想できる値を入れる
手順(2/2)
● レトロフリークにセーブ
● パソコンにデータを移してデータ変換
● バイナリエディタで目grep
● 予想したパターンを探す
アタリをつける
● 流石にしらみ潰しはツラいので…
– 6回繰り返して出現する「0xXX」と「0xXX+1」
があるはず
– 名前の前後に偶然同じ数値があるかも知れな
いが…
条件に合う部分を抜き出す
$ xxd -c 1 ff2.sav | awk '$0=$2' | uniq -c | awk
'{if($1==6)print}' | sort -u
6 10
6 18
6 1b
6 20
6 3f
6 7c
6 7e
6 7f
6 8a
6 8b
6 e0
6 f8
6 fd
6 ff
2パターン出現
あ=0x7e い=0x7f
あ=0x8a い=0x8b
発見
00001390: 00 8a 8a 8a 8a 8a 8a 1e 00 1e 00 05 00 05 00 0a ................
000013a0: 0a 0a 0a 0a 05 01 46 0a 00 7b 00 53 31 00 00 0a ......F..{.S1...
000013b0: 0a 0a 0a 0a 05 01 05 02 02 01 0e 01 16 00 7c 00 ..............|.
000013c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 ................
000013d0: 00 8b 8b 8b 8b 8b 8b 14 00 14 00 05 00 05 00 05 ................
000013e0: 0f 05 0f 0a 05 01 37 03 00 7a 00 68 30 00 00 05 ......7..z.h0...
000013f0: 0f 05 0f 0a 05 00 00 00 01 01 0a 01 14 00 48 00 ..............H.
00001400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 ................
00001410: 00 8a 8b 8c 8d 8e 8f 28 00 28 00 05 00 05 00 0f .......(.(......
00001420: 05 0f 0a 0a 05 01 46 11 00 7b 00 61 30 00 00 0f ......F..{.a0...
00001430: 05 0f 0a 0a 05 00 00 00 02 01 01 01 19 00 36 00 ..............6.
00001440: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 ................
00001450: 00 90 91 92 93 94 95 1e 00 1e 00 05 00 05 00 0a ................
00001460: 0a 0a 0a 0a 05 01 46 0a 00 7b 00 53 31 00 00 0a ......F..{.S1...
00001470: 0a 0a 0a 0a 05 01 05 02 02 01 0e 01 16 00 7c 00 ..............|.
00001480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00001490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000014a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
文字コード
● 「あ」が0x8aだとわかった
● 「い」が0x8bだとわかった
● 「う」は0x8cっぽい
書き換えてみる
● バイナリエディタで書き換え
● データを変換
● レトロフリークに戻す
● ロード
やったね!!
0x00-0xffまで書き出す
● 書き換えては変換してロード
– ひたすらやる
文字コード表
文字コード表からわかること
● 武器のマーク、ゴミ箱、罫線も文字
● アルファベットがない
– タイトルやエンディングで使ってる
– 0x00-0x3bの表示できない部分があやしい
– 表示モードがあって切り替えて使う?
他のステータスも見てみよう
並んでる
00001390: 00 e5 f1 ce df c2 f2 1e 00 1e 00 05 00 05 00 0a ................
000013a0: 0a 0a 0a 0a 05 01 46 0a 00 7b 00 53 31 00 00 0a ......F..{.S1...
000013b0: 0a 0a 0a 0a 05 01 05 02 02 01 0e 01 16 00 7c 00 ..............|.
000013c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 ................
000013d0: 00 e8 f1 ca ff ff ff 14 00 14 00 05 00 05 00 05 ................
000013e0: 0f 05 0f 0a 05 01 37 03 00 7a 00 68 30 00 00 05 ......7..z.h0...
000013f0: 0f 05 0f 0a 05 00 00 00 01 01 0a 01 14 00 48 00 ..............H.
00001400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 ................
00001410: 00 50 cb ff ff ff ff 28 00 28 00 05 00 05 00 0f .P.....(.(......
00001420: 05 0f 0a 0a 05 01 46 11 00 7b 00 61 30 00 00 0f ......F..{.a0...
00001430: 05 0f 0a 0a 05 00 00 00 02 01 01 01 19 00 36 00 ..............6.
00001440: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 ................
00001450: 00 f3 ce f6 e3 f2 dd 1e 00 1e 00 05 00 05 00 0a ................
00001460: 0a 0a 0a 0a 05 01 46 0a 00 7b 00 53 31 00 00 0a ......F..{.S1...
00001470: 0a 0a 0a 0a 05 01 05 02 02 01 0e 01 16 00 7c 00 ..............|.
並んでる
00001390: 00 e5 f1 ce df c2 f2 ff ff ff ff ff ff ff ff ff ................
000013a0: ff ff ff ff ff 01 46 0a 00 7b 00 53 31 00 00 ff ......F..{.S1...
000013b0: ff ff ff ff ff 01 05 02 02 01 0e 01 16 00 7c 00 ..............|.
000013c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 ................
アイテムも
00001390: 00 e5 f1 ce df c2 f2 1e 00 1e 00 05 00 05 00 0a ................
000013a0: 0a 0a 0a 0a 05 01 46 0a ff ff ff ff ff ff ff 0a ......F..{.S1...
000013b0: 0a 0a 0a 0a 05 01 05 02 02 01 0e 01 16 00 7c 00 ..............|.
000013c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 ................
ステータスについてはわかった。
他はどうなんだ?
レトロフリークの仕様
● 暗号化された状態でロムが保存される
– 保存したロムは別のレトロフリークでは動か
ない
ごにょごにょする
ロムの中にもデータはあるハズ
● hexと文字コードをそのまま置換してみる
読める!読めるぞ!
データからわかること
● 0x18+0xXXでアイテム名に置き換わる
● 0x01は改行
● 0x00は区切り
「ウボァー」もあるよ
00 や っ た ! パ ン デ モ ニ ウ ム に   は い
っ た ! ! 00 つ い に   こ こ ま で や っ て
き た な ! だ が   18 EC を た お す 01 こ と
は で き ん ! し ね ! 00 18 F0 「 こ の   18
EC が   や ら れ る と は … … 01 し ん じ ら
れ … … ん … … 2 ど ま で も … お ま え に
… … 01 … お ま え は   い っ た … い   な
… に も の … … 01 ウ ボ ァ − 00 さ あ   だ
っ し ゅ つ だ ! ! 00 18 EF 「 よ く   ぶ じ
に か え っ て き ま し た ね 01 18 EB 「 つ い
に や っ た な ! お め で と う ! ! 00 ポ −
ル 「 よ く   か え っ て き た な   ほ ん と
「わたし」の使い方
● 0x18EC = わたし
が   あ り ま す 。 00 ミ ン ウ 「 18 EC に は
  き み の う ん め い が   み え る 。 01 そ
れ は   18 EC の う ん め い と も   か か わ
っ て い る … … 01 ま ず   18 2F へ い き な
さ い 。 01 そ れ が う ん め い を き り ひ ら
く   み ち に な る は ず だ 。 00 ふ ふ っ  
そ う で す 。 00 そ れ が   18 04 な の で す
ね ? ! 01 そ れ を   ま ち の ぶ き や に い
る   ト ブ − ル に 01 18 EC て く だ さ い 。
  あ あ   こ れ で   て い こ く と 01 た い
と う に   た た か え る わ ! ! 00 【 16 01
ファイナル・ファンタジー2のデータを解析してみる

Contenu connexe

Tendances

形態素解析の過去・現在・未来
形態素解析の過去・現在・未来形態素解析の過去・現在・未来
形態素解析の過去・現在・未来
Preferred Networks
 
安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと
shibataka000
 

Tendances (20)

形態素解析の過去・現在・未来
形態素解析の過去・現在・未来形態素解析の過去・現在・未来
形態素解析の過去・現在・未来
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
 
Deep Learningと画像認識   ~歴史・理論・実践~
Deep Learningと画像認識 ~歴史・理論・実践~Deep Learningと画像認識 ~歴史・理論・実践~
Deep Learningと画像認識   ~歴史・理論・実践~
 
ゼロから始めるレコメンダシステム
ゼロから始めるレコメンダシステムゼロから始めるレコメンダシステム
ゼロから始めるレコメンダシステム
 
ベルヌーイ分布における超パラメータ推定のための経験ベイズ法
ベルヌーイ分布における超パラメータ推定のための経験ベイズ法ベルヌーイ分布における超パラメータ推定のための経験ベイズ法
ベルヌーイ分布における超パラメータ推定のための経験ベイズ法
 
工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方
 
Introduction to YOLO detection model
Introduction to YOLO detection modelIntroduction to YOLO detection model
Introduction to YOLO detection model
 
1 2.t検定
1 2.t検定1 2.t検定
1 2.t検定
 
情報推薦システム入門:講義スライド
情報推薦システム入門:講義スライド情報推薦システム入門:講義スライド
情報推薦システム入門:講義スライド
 
人間の視覚的注意を予測するモデル - 動的ベイジアンネットワークに基づく 最新のアプローチ -
人間の視覚的注意を予測するモデル - 動的ベイジアンネットワークに基づく 最新のアプローチ -人間の視覚的注意を予測するモデル - 動的ベイジアンネットワークに基づく 最新のアプローチ -
人間の視覚的注意を予測するモデル - 動的ベイジアンネットワークに基づく 最新のアプローチ -
 
Streamlitを用いた音響信号処理ダッシュボードの開発
Streamlitを用いた音響信号処理ダッシュボードの開発Streamlitを用いた音響信号処理ダッシュボードの開発
Streamlitを用いた音響信号処理ダッシュボードの開発
 
安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps LIVE!の設定
 
東京大学2021年度深層学習(Deep learning基礎講座2021) 第8回「深層学習と自然言語処理」
東京大学2021年度深層学習(Deep learning基礎講座2021) 第8回「深層学習と自然言語処理」東京大学2021年度深層学習(Deep learning基礎講座2021) 第8回「深層学習と自然言語処理」
東京大学2021年度深層学習(Deep learning基礎講座2021) 第8回「深層学習と自然言語処理」
 
20190804_icml_kyoto
20190804_icml_kyoto20190804_icml_kyoto
20190804_icml_kyoto
 
【DL輪読会】GET3D: A Generative Model of High Quality 3D Textured Shapes Learned f...
【DL輪読会】GET3D: A Generative Model of High Quality 3D Textured Shapes Learned f...【DL輪読会】GET3D: A Generative Model of High Quality 3D Textured Shapes Learned f...
【DL輪読会】GET3D: A Generative Model of High Quality 3D Textured Shapes Learned f...
 
ボコーダ波形生成における励振源の群遅延操作に向けた声帯音源特性の解析
ボコーダ波形生成における励振源の群遅延操作に向けた声帯音源特性の解析ボコーダ波形生成における励振源の群遅延操作に向けた声帯音源特性の解析
ボコーダ波形生成における励振源の群遅延操作に向けた声帯音源特性の解析
 
SSII2020 [OS2] 限られたデータからの深層学習 (オーガナイザーによる冒頭の導入)
SSII2020 [OS2] 限られたデータからの深層学習 (オーガナイザーによる冒頭の導入)SSII2020 [OS2] 限られたデータからの深層学習 (オーガナイザーによる冒頭の導入)
SSII2020 [OS2] 限られたデータからの深層学習 (オーガナイザーによる冒頭の導入)
 
Differentiable Ray Sampling for Neural 3D Representation
Differentiable Ray Sampling for Neural 3D RepresentationDifferentiable Ray Sampling for Neural 3D Representation
Differentiable Ray Sampling for Neural 3D Representation
 
[DL輪読会] Hybrid computing using a neural network with dynamic external memory
[DL輪読会] Hybrid computing using a neural network with dynamic external memory[DL輪読会] Hybrid computing using a neural network with dynamic external memory
[DL輪読会] Hybrid computing using a neural network with dynamic external memory
 

Plus de (^-^) togakushi (15)

ささみ麻雀部の紹介
ささみ麻雀部の紹介ささみ麻雀部の紹介
ささみ麻雀部の紹介
 
手順書の話 Ver.0.3.0
手順書の話 Ver.0.3.0手順書の話 Ver.0.3.0
手順書の話 Ver.0.3.0
 
仕事の捉え方の話 #ssmjp
仕事の捉え方の話 #ssmjp仕事の捉え方の話 #ssmjp
仕事の捉え方の話 #ssmjp
 
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramikoOpenSSH User EnumerationTime-Based Attack と Python-paramiko
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
 
Janog33.5
Janog33.5Janog33.5
Janog33.5
 
現場で役に立たないsudoの使い方
現場で役に立たないsudoの使い方現場で役に立たないsudoの使い方
現場で役に立たないsudoの使い方
 
sshdのお話
sshdのお話sshdのお話
sshdのお話
 
tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。
 
KVM+cgroup
KVM+cgroupKVM+cgroup
KVM+cgroup
 
SSH力をつかおう
SSH力をつかおうSSH力をつかおう
SSH力をつかおう
 
jenkinsで遊ぶ
jenkinsで遊ぶjenkinsで遊ぶ
jenkinsで遊ぶ
 
Pakena #9
Pakena #9Pakena #9
Pakena #9
 
SSH力をつけよう
SSH力をつけようSSH力をつけよう
SSH力をつけよう
 
Sfstudy #2
Sfstudy #2Sfstudy #2
Sfstudy #2
 
ひとりsphinx
ひとりsphinxひとりsphinx
ひとりsphinx
 

ファイナル・ファンタジー2のデータを解析してみる