上に戻る
1.テキストファイル?バイナリファイル?
概要
 現行のほとんどのコンピュータのシステムでは、ファイルというカタマリでデータを管理していると思いますが(そうだよね?)、そのファイルを2種類に分類してみようというところから。
 知っている人にとっては『改造と全然関係ないじゃん』って話ですが、やります。なぜかって言うと、自分が改造を始めるときに真っ先につまづいたポイントだから……
ファイルの分類
 タイトルでも挙げたとおり、ファイルは『テキストファイル』と『バイナリファイル』に分類できます。正確には、『テキストファイル』は『バイナリファイル』に含まれるのですが……
 その関係はたとえると、『かんきつ類』と『フルーツ』というところでしょうか。みかんやレモンは『かんきつ類』であると同時に『フルーツ』です。ところが、メロンは『かんきつ類』ではなく『フルーツ』でしかないです。
 いや、そんな例え要らないだろっていう話ですが……

 その違いは、厳密なところは知らないのですが、『テキストファイル』には含んではいけないデータがあるようです。逆に、それを含んでも良く、つまり自由なデータを含めるものが『バイナリファイル』であるようです。
唐突にメモ帳の話
 Windowsの『メモ帳』というソフトをご存知でしょうか?『スタートボタン』→『(すべての)プログラム』→『アクセサリ』→『メモ帳』で起動できます。
 このソフトは文を編集することが出来ます。ワードなどと違い、(一部の)文字の大きさや色を変えたりすることはできません。
 適当な文を打ち込んで保存すると、.txtという拡張子で保存されます。保存したデータはもちろん『メモ帳』で読み直すことも出来ます。
メモ帳を使っていろいろなファイルを開く
 さて、この『メモ帳』ですが、実はいかなるファイルも開くことが可能です。
 やり方は簡単です。ファイルをドラッグして『メモ帳』のウインドウにドロップすればOKです……が、開くのはいいのですが、決して『保存』しないでください
 てすと とりあえず、この画像を開いてみると
 ぐちゃぐちゃてすと こんなことになりました。
 なんというか……ぐちゃぐちゃですね。
あ……よく見ると、Comment Created with The GIMPって^^あと、最下段の・_・が顔に見える……
 一方で、開いてみると『ちゃんと』見れるファイルもあります。
 いに有名なアーカイバの設定ファイル……一応ソフト名は伏せておきます。
メモ帳を使った大雑把な見分け方
 勘違い覚悟で、とんでもなく大雑把に言いますと、後者のようにメモ帳で『ちゃんと』見れるファイルが『テキストファイル』で、前者のようにぐちゃぐちゃに見えるのが『バイナリファイル』です。
 実際には、特定のデータを含むかどうかが判定基準だと思うので、一見『テキストファイル』に見えても実は『バイナリファイル』だった……ということもあるかもしれません。
 上のバイナリファイルの例でも、テキストで読める部分もありますしね。
テキストファイルの書き換え方
 テキストファイルはメモ帳で見ることができるので、そのまま書き換えることも出来ます。
 とはいえ、アプリケーションの設定ファイルを滅茶苦茶に書き換えたら大変なことが起きそうですし、あとエンコードの問題も出てくるのですが……まぁそれは割愛します。
 あと、事項も参照。
メモ帳はバイナリファイルを壊す
 メモ帳のようなソフトを『テキストエディタ』というようです。配置を工夫したりフォントを変更したりする『ワープロソフト』とはだいぶ違います。
 で、多くの『テキストエディタ』は、『バイナリファイル』を扱うことが出来ません。
 上の画像をメモ帳で読ませた例……もう一度おきますと、↓コレ。
 ぐちゃぐちゃてすと再登場
 実は、表示できない文字が、黒い四角や『・』や空白に置き換えられて表示されているようです。
 さて、これをこの状態で『別名で保存』して見ましょう。拡張子は変えず、すなわち.pngのままにします。とりあえず、test.pngとしてみました。
 結果は……画像が開けなくなりました。ファイルが壊れてしまったのです。
 そもそも『テキストエディタ』は『テキストファイル』を操作することを目的に開発されているので、それに『バイナリファイル』を読み込ませて無茶をさせているんだから壊れてしまうのに無理はありません。
 しかし、『テキストファイル』だと思ってメモ帳で編集したら、実は『バイナリファイル』であったため結局壊れた……ということも起こりえます。
バイナリファイルの書き換え方
 じゃ、そんなデリケートな^^『バイナリファイル』をどうやって弄くるのか。これが言いたくてここまで書いてきたわけですが、それには『バイナリエディタ』というものを使います。
 バイナリ は、2進数の、という意味で、実は日本語で『バイナリエディタ』といわれているのは誤用で、正式な名称がある……という話がありますがそういうのは置いておいて。
 バイナリエディタはフリーソフトがあるので、適当にお探しください。昔は『狐's』ってのが有名だったらしいですが……
 私は、『Stirなんたら』ってソフトを使っていますが、このソフトも古いな……
 バイナリエディタの使い方のチュートリアルとして、試しに以下のちっこい画像を書き換えてみます。
 Winなら見られる ←これね .bmpはネット画像には避けたほうがいいのですが……
 これをバイナリエディタで読ませます。一例として次のようになります。
 バイナリエディタに読ませたもの
 もちろん、バイナリエディタによって表示は異なりますが、大体こんな感じかと思います。
 なにやら、文字が並んでいます。これらは16進数で表されています。16進数についてはこちらを。
 このウェブサイトでは16進数を表すときは後ろにhをつける事にします。10進数であることを強調したい場合は後ろに小文字のdをつける事にします。どっちもついていないときはアドリブで判断してください^^

 白い部分の一番左上のカーソルのある部分……『42』となっているところが、ファイルの先頭です。そこから、右に右にとデータが進みます。『……28 00』まで来て、その次のデータは、次の段の一番左です。(最初の『42』のすぐ下)
 このようなルールで進み、最後の『FF』でデータが終了です。
 右側の『BM~……』と続く部分は、これらデータが対応する文字コードで表されたものです。
 なんとなくわかると思いますが、ある場所に対し『左の灰色の部分』に、『上の黄色の部分』を足したものが、『先頭からの位置』です。
 例えば、中ほどやや右にある『F9』は、先頭から4Ah番目のデータです。
 このビットマップのサイズは、126dバイトです。これは、16進数では7Ehバイトです。ちょうど最後のデータの位置が7Dhなのでぴったりですね。
(0から数えるため、サイズを語るときは『最後+1』になります)

 さて、ちょっと書き換えてみましょう。  書き換え後
 赤紫の部分が書き換えたところです。
 書き換える際に注意することが2つもあります。
 まず、バイナリエディタの種類によっては、ファイル読み込み時に何故か『書込み禁止』や『閲覧専用』になっていることがあります。
 そのようなバイナリエディタでは、まず、『書込み禁止』を解除する必要があります。
 もう一つ。必ず『上書きモード』で書き換えてください。『挿入モード』でやると、サイズが変わってしまい、大変なことが起こります。これは今後も同じです。
 これらの方法は、バイナリエディタ次第です。メニューバーにあるでしょう……
 さて、上のように書き換えたら、別名で保存してみます。拡張子は当然.bmpのままで。
 Winなら見られるその2
 ちっこ過ぎてわかりにくい?じゃ、拡大。
 Winなら見られる 拡大
 なにやらノイズが載りました。きちんと書き換えできたということですね。
 よーーーく見ると、一定のパターンにそって配列していることがわかりますが、それは.bmpの形式の話なので、割愛します。
 とにかく、『なんか書き換え』できました。若干下のほうを書き換えたのですが、最初のほうを書き換えるとやっぱり壊れてしまったりするはずです。
オチ?
 なんでここまでたらたら書いてきたかといいますと、ROMイメージはもちろんバイナリファイルであるので、バイナリエディタを使って書き換える必要があります。
 その為の説明と、書き換え方をここまでで書きました。こんな感じで書き換えてやれば、改造できるわけです。
 もちろん『どこを』『どのように』弄るかが大事で、難しいわけですが^^
(5)2006年12月23日 プレさ兵衛
inserted by FC2 system