ゲーム改造 ノート代わり。

ゲーム改造


評価。
小テスト(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

漢字・・
EUCUNIX
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バイト


トルエンディアン
Intel系)

1番地に記憶されているwordの値 0302h
           2バイト
2番地に記憶されているbyteの値 03h
2番地に記憶されているdwordの値
4番地から入ってる文字列 1234
4番地から入ってる文字列をdwordとしてみたら 34333231h


ASCII ← ASCIIコード
・・・1234

        プログラムはどう保存されるか
「0」か「1」・・・機械語
近い言語
アセンブラ言語
機械語の命令と1対1で対応






「プログラム言語」。。より人間の言葉
(言語・・ JavaVB など)
ソースコード

コンパイル(翻訳)

アセンブラ言語ファイル
アセンブル
実行ファイル(機械語





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

漢字・・
EUCUNIX
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バイト


トルエンディアン
Intel系)

1番地に記憶されているwordの値 0302h
           2バイト
2番地に記憶されているbyteの値 03h
2番地に記憶されているdwordの値
4番地から入ってる文字列 1234
4番地から入ってる文字列をdwordとしてみたら 34333231h


ASCII ← ASCIIコード
・・・1234

        プログラムはどう保存されるか
「0」か「1」・・・機械語
近い言語
アセンブラ言語
機械語の命令と1対1で対応






「プログラム言語」。。より人間の言葉
(言語・・ JavaVB など)
ソースコード

コンパイル(翻訳)

アセンブラ言語ファイル
アセンブル
実行ファイル(機械語





MMX・・・高速に描画

↑(難しい)
アセンブラ言語ファイル

ディスアセンブル(逆アセンブル

実行ファイル




xxxxxxxxxxxxxxxxxxxxxxxx

小テスト
12月15日5時間目
36ページまで。

xxxxxxxxxxxxxxxxxxxxxxxx



ゲーム改造とは
新しいものを追加する ×
今あるもの何かを別の動作に変える ○



基本となるツール(道具)
① バイナリエディタ → 対象のファイルはバックアップしておく
ファイルをバイナリコードで表示、編集するためのツール

② プロセスメモリエディタ
起動したプログラムが保持しているメモリ空間をリアルタイムで参照。

改造を行うためのツール
メモリに展開されたデータを操作する

ゲームがとまることはあっても再起動しなくなることはない


③ デバッグ

メモリ上に展開したデータを操作する。
ディスアセンブル→プログラムの流れをリアルタイムに見る。


④ ディスアセンブラ
実行ファイル → アセンブラ言語
      (変換)







xxxxxx12月13日xxxxxx


バイナリエディタ(BZ)の使い方

2進数で書かれたセーブデータの書き換え。
ファイルバックアップを取る。

ツールバーで大体のことはできる。
開く(ファイルを開く)
上書き保存
リードオンリ(読み取り専用のオン/イフ)
 (デフォルト)

コピー
貼り付け
ビットマップ(バイナリコードをビットマップと表示する)
構造体
上下分割(ウインドウの分割)
左右分割
**検索ボックス
先頭に記号→さまざまな動作ができる。
「?」16進数の計算式を入力→結果を表示。

+ - & | ^
加算 減算 論理積 論理輪 論理差
(AND) (OR)

「 > 」 入力した数値のアドレスに移動する
「 # 」 バイト数値の検索
16進数で入力

何もつけない 文字列検索




敵のパラメータを探る
敵の能力値を下げる→簡単に倒せる。
弱い敵の獲得経験値だけ上げる→レベルアップが容易
パラメータはマニュアルや攻略本と同じ順番のことが多い。
方法・・セーブデータの書き換え
暗号化、圧縮されていることが多い
メモリを改造する。