ゲーム改造 ノート代わり。
ゲーム改造
評価。
小テスト(2回)70%
授業態度(出席含)30%
パソコン・・ハードウェア CPUを中心に動く(計算)←→メモリ(プログラム、データ)
ゲーム・・・ソフトウェア
↓
メモリに書かれたプログラムによって動く。
ゲームの改造→メモリのゲームの入ってる場所を書き換える。→↓
↓
メモリ(きれいに並んでることは珍しい) ↓
(1)コード部(プログラム) ↓
(2)リリース部(げーむが利用する画像や音楽) ↓
(3)データ部(パラメータなど状況によって変化する。) ←
メモリ→電源が切れると保存されない(ゲームが終了)
他人の目に触れることが少ない→暗号化されることが少ない。
再起動しなくなるということは少ない。
ゲームが異常終了→再起動する。
16進数
ビット(情報の最小単位)
「0」と「1」・・・・2進数
スイッチがオンとオフ
バイト・・・8ビット
プログラムカウンタ
次に実行すべき命令の場所
命令。。プログラムカウンタの値が自動的に増えて→次の命令をさす。
電源落とすとリセットされる。
*メモリアドレス
データの格納場所の明示的な位置
16進数で表記(桁数が多いため)
4バイト(32ビット)をひとつに束ねて・・dward方式
ダブル
4バイト、dqard方式
現在のCPU
狩猟はインテル互換(8086系)→i286系→i386系→i486系→Pentium
データを格納する・・・リトルエンディアンというデータ管理方法を用いる。
0x123456
↓
コンピュータに格納する
(メモリ)
2バイト以上のサイズがあるデータの場合
1バイトごとに分割してメモリの各アドレスに格納する
どの番地に格納するか
バイトホダ(エンディアン)という
最下位のバイトから順番で記憶する
「56341200」で扱う
Motorola社 68000系CPU(RISC系)
Mac
ビッグエンディアン
「00123456」で扱う
ダンプリスト
データ・・すべ数値で管理している。
漢字、ひらがな、カタカナ、英字 etc.
ASCIIコード
数字の0・・・0x30
9・・・0x39
空白 ・・・・0x20
漢字・・
EUC(UNIX)
shift-JIS(Windows)
Unicode ・・ 全世界のすべての文字
→16ビットで表現しようとしている。
//
ビッグエンディアン
あバイトごとに分割
バイトホダ
最下位のバイト
リトルエンディアン
4バイト
dward方式
数値
//
2時間目
アドレス +00 +01 +02 +03 +04 +05 +06 +07
00000000h 01 02 03 04 31 32 33 34
0番地に記憶されているDwordの値 04030201h
4バイト
1番地に記憶されているwordの値 0302h
2バイト
2番地に記憶されているbyteの値 03h
2番地に記憶されているdwordの値
4番地から入ってる文字列 1234
4番地から入ってる文字列をdwordとしてみたら 34333231h
ASCII ← ASCIIコード
・・・1234
プログラムはどう保存されるか
「0」か「1」・・・機械語
近い言語
アセンブラ言語
機械語の命令と1対1で対応
「プログラム言語」。。より人間の言葉
(言語・・ Java、VB など)
ソースコード
↓
コンパイル(翻訳)
↓
アセンブラ言語ファイル
アセンブル↓
実行ファイル(機械語)
MMX・・・高速に描画
↑(難しい)
アセンブラ言語ファイル
↑
ディスアセンブル(逆アセンブル)
↑
実行ファイル
xxxxxxxxxxxxxxxxxxxxxxxx
小テスト
12月15日5時間目
36ページまで。
xxxxxxxxxxxxxxxxxxxxxxxx
ゲーム改造とは
新しいものを追加する ×
今あるもの何かを別の動作に変える ○
基本となるツール(道具)
① バイナリエディタ → 対象のファイルはバックアップしておく
ファイルをバイナリコードで表示、編集するためのツール
② プロセスメモリエディタ
起動したプログラムが保持しているメモリ空間をリアルタイムで参照。
改造を行うためのツール
メモリに展開されたデータを操作する
↓
ゲームがとまることはあっても再起動しなくなることはない
③ デバッグ
メモリ上に展開したデータを操作する。
ディスアセンブル→プログラムの流れをリアルタイムに見る。
④ ディスアセンブラ
実行ファイル → アセンブラ言語
(変換)
xxxxxx12月13日xxxxxx
バイナリエディタ(BZ)の使い方
2進数で書かれたセーブデータの書き換え。
ファイルバックアップを取る。
ツールバーで大体のことはできる。
開く(ファイルを開く)
上書き保存
リードオンリ(読み取り専用のオン/イフ)
(デフォルト)
コピー
貼り付け
ビットマップ(バイナリコードをビットマップと表示する)
構造体
上下分割(ウインドウの分割)
左右分割
**検索ボックス
先頭に記号→さまざまな動作ができる。
「?」16進数の計算式を入力→結果を表示。
+ - & | ^
加算 減算 論理積 論理輪 論理差
(AND) (OR)
「 > 」 入力した数値のアドレスに移動する
「 # 」 バイト数値の検索
16進数で入力
何もつけない 文字列検索
敵のパラメータを探る
敵の能力値を下げる→簡単に倒せる。
弱い敵の獲得経験値だけ上げる→レベルアップが容易
パラメータはマニュアルや攻略本と同じ順番のことが多い。
方法・・セーブデータの書き換え
暗号化、圧縮されていることが多い
メモリを改造する。
ゲーム改造
評価。
小テスト(2回)70%
授業態度(出席含)30%
パソコン・・ハードウェア CPUを中心に動く(計算)←→メモリ(プログラム、データ)
ゲーム・・・ソフトウェア
↓
メモリに書かれたプログラムによって動く。
ゲームの改造→メモリのゲームの入ってる場所を書き換える。→↓
↓
メモリ(きれいに並んでることは珍しい) ↓
(1)コード部(プログラム) ↓
(2)リリース部(げーむが利用する画像や音楽) ↓
(3)データ部(パラメータなど状況によって変化する。) ←
メモリ→電源が切れると保存されない(ゲームが終了)
他人の目に触れることが少ない→暗号化されることが少ない。
再起動しなくなるということは少ない。
ゲームが異常終了→再起動する。
16進数
ビット(情報の最小単位)
「0」と「1」・・・・2進数
スイッチがオンとオフ
バイト・・・8ビット
プログラムカウンタ
次に実行すべき命令の場所
命令。。プログラムカウンタの値が自動的に増えて→次の命令をさす。
電源落とすとリセットされる。
*メモリアドレス
データの格納場所の明示的な位置
16進数で表記(桁数が多いため)
4バイト(32ビット)をひとつに束ねて・・dward方式
ダブル
4バイト、dqard方式
現在のCPU
狩猟はインテル互換(8086系)→i286系→i386系→i486系→Pentium
データを格納する・・・リトルエンディアンというデータ管理方法を用いる。
0x123456
↓
コンピュータに格納する
(メモリ)
2バイト以上のサイズがあるデータの場合
1バイトごとに分割してメモリの各アドレスに格納する
どの番地に格納するか
バイトホダ(エンディアン)という
最下位のバイトから順番で記憶する
「56341200」で扱う
Motorola社 68000系CPU(RISC系)
Mac
ビッグエンディアン
「00123456」で扱う
ダンプリスト
データ・・すべ数値で管理している。
漢字、ひらがな、カタカナ、英字 etc.
ASCIIコード
数字の0・・・0x30
9・・・0x39
空白 ・・・・0x20
漢字・・
EUC(UNIX)
shift-JIS(Windows)
Unicode ・・ 全世界のすべての文字
→16ビットで表現しようとしている。
//
ビッグエンディアン
あバイトごとに分割
バイトホダ
最下位のバイト
リトルエンディアン
4バイト
dward方式
数値
//
2時間目
アドレス +00 +01 +02 +03 +04 +05 +06 +07
00000000h 01 02 03 04 31 32 33 34
0番地に記憶されているDwordの値 04030201h
4バイト
1番地に記憶されているwordの値 0302h
2バイト
2番地に記憶されているbyteの値 03h
2番地に記憶されているdwordの値
4番地から入ってる文字列 1234
4番地から入ってる文字列をdwordとしてみたら 34333231h
ASCII ← ASCIIコード
・・・1234
プログラムはどう保存されるか
「0」か「1」・・・機械語
近い言語
アセンブラ言語
機械語の命令と1対1で対応
「プログラム言語」。。より人間の言葉
(言語・・ Java、VB など)
ソースコード
↓
コンパイル(翻訳)
↓
アセンブラ言語ファイル
アセンブル↓
実行ファイル(機械語)
MMX・・・高速に描画
↑(難しい)
アセンブラ言語ファイル
↑
ディスアセンブル(逆アセンブル)
↑
実行ファイル
xxxxxxxxxxxxxxxxxxxxxxxx
小テスト
12月15日5時間目
36ページまで。
xxxxxxxxxxxxxxxxxxxxxxxx
ゲーム改造とは
新しいものを追加する ×
今あるもの何かを別の動作に変える ○
基本となるツール(道具)
① バイナリエディタ → 対象のファイルはバックアップしておく
ファイルをバイナリコードで表示、編集するためのツール
② プロセスメモリエディタ
起動したプログラムが保持しているメモリ空間をリアルタイムで参照。
改造を行うためのツール
メモリに展開されたデータを操作する
↓
ゲームがとまることはあっても再起動しなくなることはない
③ デバッグ
メモリ上に展開したデータを操作する。
ディスアセンブル→プログラムの流れをリアルタイムに見る。
④ ディスアセンブラ
実行ファイル → アセンブラ言語
(変換)
xxxxxx12月13日xxxxxx
バイナリエディタ(BZ)の使い方
2進数で書かれたセーブデータの書き換え。
ファイルバックアップを取る。
ツールバーで大体のことはできる。
開く(ファイルを開く)
上書き保存
リードオンリ(読み取り専用のオン/イフ)
(デフォルト)
コピー
貼り付け
ビットマップ(バイナリコードをビットマップと表示する)
構造体
上下分割(ウインドウの分割)
左右分割
**検索ボックス
先頭に記号→さまざまな動作ができる。
「?」16進数の計算式を入力→結果を表示。
+ - & | ^
加算 減算 論理積 論理輪 論理差
(AND) (OR)
「 > 」 入力した数値のアドレスに移動する
「 # 」 バイト数値の検索
16進数で入力
何もつけない 文字列検索
敵のパラメータを探る
敵の能力値を下げる→簡単に倒せる。
弱い敵の獲得経験値だけ上げる→レベルアップが容易
パラメータはマニュアルや攻略本と同じ順番のことが多い。
方法・・セーブデータの書き換え
暗号化、圧縮されていることが多い
メモリを改造する。