ステップバイステップ:Resource Hackerを使ってお気に入りのWindowsプログラムをハッキングする方法 - TechRepublic

ステップバイステップ:Resource Hackerを使ってお気に入りのWindowsプログラムをハッキングする方法 - TechRepublic

使用するプログラムをもっと細かく制御したい、そして技術者なら誰もがそう望んでいるようなプログラムを使いたいと考えているなら、Angus Johnson氏のResource Hackerがまさにうってつけかもしれません。この強力なユーティリティを使えば、ほぼすべての32ビットWindowsプログラム、さらにはWindows自体を変更できます。Resource Hackerはわずか1.35MBのディスク容量しか必要とせず、Windows 9x/Me/NT/2000/XPで動作し、何より無料です。Resource Hackerを使って、Windowsに欠かせないテキストエディタ「メモ帳」をもっと便利にする方法を見てみましょう。


法的問題に関する警告

Bill Detwiler 氏、テクノロジー担当上級編集者


機能、インストール、および制限事項
:Resource Hacker を使用すると、リソースの表示、変更、追加、削除が可能です。リソースは、アイコン、カーソル、ビットマップなど、ほぼあらゆるものに対応しています。Resource Hacker を使用すると、これらのリソースを独自のリソースに置き換えて、アプリケーションの外観をカスタマイズできます。もちろん、リソースを削除することにメリットがある場合もあります。多くのプログラムは、アプリケーションが実際に使用するリソースよりもはるかに多くのリソースがコンパイル時に用意されています。未使用のリソースを削除することで、アプリケーションのサイズを縮小し、場合によってはメモリ使用量を削減できます。

プログラム内のアイコンやビットマップを変更するのは楽しいですが、これはほんの始まりに過ぎません。アプリケーション内のほぼすべてのテキストを書き換えることができます。ダイアログボックスのデザインを変更したり、さまざまなメニューオプションのショートカットキーを作成したりすることも可能です。アプリケーションのメニューを変更して、機能を追加したり削除したりすることも可能です。

Resource Hacker の実行は至って簡単です。Resource Hacker の Web サイトから 541 KB の zip ファイルをダウンロードし、ハードドライブに解凍してください。ResHacker.exe ファイルをダブルクリックするだけで準備完了です。Resource Hacker は、圧縮された実行ファイルを使用しない 32 ビットプログラムで動作します。また、16 ビット Windows プログラムや DOS プログラムでは動作しません。

メモ帳のハッキング
 Resource Hacker のデモンストレーションをどうしたら良いか、一日中考えていました。実は、最初はフリーウェアのテトリスクローンを改造するのがとても楽しかったんです。でも最終的には、Windowsユーザーなら誰でも持っているメモ帳を使ってResource Hacker のデモンストレーションをすることに決めました。メモ帳の実行ファイルは、Windowsディレクトリに Notepad.exe というファイル名で保存されています。始める前に、万が一変更内容に問題が発生した場合に備えて、Notepad.exe のコピーを作成しておくことをお勧めします。

リソースハッカー内でメモ帳を開くには、「ファイル」→「開く」を選択し、Notepad.exe を参照して「開く」を選択します。リソースハッカーは、リソースハッカーウィンドウのタイトルバーに Notepad.exe の名前を表示することで、Notepad.exe を開いたことを示します。また、リソースハッカーウィンドウの左側のペインに、Notepad.exe のリソースのツリービューが表示されます。このツリービューには、複数のフォルダが含まれているはずです。これらのフォルダの 1 つを選択すると、その内容が右側のペインに表示されます。リソースハッカーの操作は、Windows のレジストリエディタの操作と非常によく似ています。

左側の列に表示されるフォルダは、変更するプログラムによって大きく異なります。メモ帳にはどのようなフォルダが存在するのか、そしてそれぞれのフォルダの役割について簡単に説明したいと思います。

アイコン
最初のフォルダは、図Aに示すアイコンフォルダです。アイコンフォルダには、1から始まる番号付きのサブフォルダが含まれています。番号付きの各サブフォルダにはリソースフォルダが含まれており、各リソースフォルダにはアプリケーションで使用されるアイコンが1つずつ含まれています。アプリケーションのアイコンの使用方法を変更する場合は、変更したいアイコンに対応するサブフォルダの番号に注意してください。この番号は、後でアイコングループを変更する際に必要になります。アイコングループについては、この記事の後半で詳しく説明します。

図A
アイコン フォルダーには、アプリケーションで使用されるすべてのアイコンが保存されます。

アイコンを置き換えるには、置き換えたいアイコンに対応するアイコンオブジェクトを右クリックします。表示されるショートカットメニューから「リソースの置き換え」コマンドを選択します。このショートカットメニューでは、必要に応じてアイコン(リソース)を保存または削除することもできます。リソースの置き換えオプションを選択すると、新しいアイコンを含むファイルの名前を入力するダイアログボックスが表示されます。新しいアイコンファイルを開き、ファイル内から置き換えたいアイコンを選択して、「置き換え」ボタンをクリックします。この方法は複雑に聞こえますが、実際には非常に簡単です。手順が多いのは、複数のアイコンを含むファイルからアイコンを選択できるためです。

メニュー
メモ帳が次に使用するフォルダはメニューフォルダです。アイコンフォルダと同様に、メニューフォルダにも番号付きのサブフォルダが含まれています。各サブフォルダには、アプリケーションのメニューに対応するオブジェクトが含まれています。メモ帳は非常にシンプルなアプリケーションなので、メニューは1つしかありません。

図Bを見ると、個々のメニューオブジェクトを選択すると、そのメニューの作成に使用されたソースコードが表示されます。このコードを編集することで、メニューをカスタマイズできます。また、図Bでは、Resource Hackerがメニューコードのすぐ上に別のウィンドウにメニューを表示していることにも気付くでしょう。

メニューコードの変更は簡単です。メニューバー上の各メニューは、「Popup」という単語の後に引用符で囲んだメニュー名を続け、先頭にアンパサンドを付けて指定します。例えば、「ファイル」メニューは POPUP “&File” コマンドで指定します。メニューの選択肢は、メニュー名のすぐ下の開き括弧と閉じ括弧の間に指定します。個々のメニュー項目は MENUITEM コマンドで指定します。これについては後ほど詳しく説明します。

メニューを変更する場合は、変更を保存する前に「スクリプトのコンパイル」ボタンをクリックする必要があります。

図B
Resource Hacker を使用すると、アプリケーションのメニューを変更できます。

ダイアログ
メモ帳の編集時に次に使用できるフォルダは、ダイアログフォルダです。このフォルダにはフォルダオブジェクトが含まれており、各フォルダにはアプリケーションで使用されるダイアログボックスが1つずつ含まれています。アイコンフォルダやメニューフォルダとは異なり、これらのフォルダの番号は1から始まり、増加していくわけではありません。代わりに、各フォルダには名前または番号が割り当てられますが、必ずしも特定の順序付け方法があるわけではありません。

ダイアログオブジェクトを選択すると、そのダイアログボックスを作成するために使用されたコードが表示されます。また、別のウィンドウにダイアログボックス自体も表示されます。図Cを見ると、メモ帳で印刷に使用される「ページ設定」ダイアログボックスが確認できます。

図C
アプリケーションで使用されるダイアログ ボックスを変更できます。

ダイアログエディタの最も優れた機能は、テキストだけでなく、ダイアログボックスのレイアウトを完全にカスタマイズできることです。ダイアログボックス内のあらゆる要素をドラッグ&ドロップで配置できます。テキスト、ドロップダウン、テキスト入力フィールド、グラフィックなどのサイズを変更することも可能です。ダイアログボックスのレイアウト変更は、Microsoft Outlookのフォームデザイナーの操作と非常に似ています。

文字列テーブル
メモ帳が次に使用するフォルダは、文字列テーブルフォルダです。このフォルダには、文字列オブジェクトを含む番号付きのサブフォルダが複数あります。サブフォルダには番号が付けられていますが、必ずしも連続しているわけではありません。

図D
文字列テーブルには、アプリケーション内で使用されるすべてのテキストが含まれます。

アクセラレータ
メモ帳が次に使用するフォルダは、アクセラレータフォルダです。アクセラレータセクションは、様々なメニューオプションに対応するホットキーに関係しています。図Bに戻ると、「ファイル」メニューの1行目に「MENUITEM “&New\tCtrl+N”, 1」という行があることに気づくでしょう。このコマンドは、「新規」コマンドを「ファイル」メニューに配置し、ショートカットキー[Ctrl]Nを割り当てます。また、コマンドの後に数字の1が続くことにも気づくでしょう。

「Accelerators」フォルダを開くと、それぞれに名前の付いた複数のサブフォルダがあることがわかります。MAINACCフォルダには、メインメニューのショートカットキーが含まれています。図Eを見ると、このアクセラレータオブジェクトの1行目が「VK_N, 1, CONTROL, VIRTKEY」となっていることがわかります。この行は、ショートカットキー1を[CRTL]Nに割り当てることを示しています。

図E
Accelerators フォルダーを使用すると、ショートカット キーを作成できます。

アイコン グループ
メモ帳が使用する次のフォルダーは、アイコン グループです。アイコン グループには番号付きのサブフォルダーが含まれており、各サブフォルダーにはアイコン グループ オブジェクトが含まれています。このオブジェクトの例は、図 Fで確認できます。図に示すように、アイコン グループ オブジェクトは、使用可能なアイコンとその表示方法をアプリケーションに指示します。このファイルの各行には、解像度、カラー パレット、序数が含まれています。序数は、アイコン フォルダーの下にあるサブフォルダーに対応します。画像の右端を見ると、すべてのアイコンが表示されていることがわかります。アイコン グループとアイコンの序数を変更することで、独自のアイコンをアプリケーションに簡単に追加できます。

図F
アイコン グループ フォルダーは、アイコン フォルダーで定義されているアイコンのコレクションを作成します。

メモ帳では使用されませんが、私が試していたテトリスゲームなど、一部のアプリケーションでは「カーソル」と「カーソルグループ」という2つの追加フォルダが使用されます。アプリケーションがビジー状態になるとマウスポインタが砂時計に変わるアプリケーションを見たことがあるでしょう。このようなアプリケーションでは、マウスポインタは「カーソル」フォルダと「カーソルグループ」フォルダで定義されます。これらのフォルダは、「アイコン」フォルダと「アイコングループ」フォルダと同じように機能します。

図G
バージョン情報オブジェクトには、アプリケーションのバージョンと著作権情報が含まれています。

24
メモ帳が使用する最後のフォルダオブジェクトは24です。24フォルダはすべてのアプリケーションで使用されるわけではなく、私がテトリスを試していた時には存在しませんでした。24フォルダに関するドキュメントは見つかりませんでしたが、24オブジェクトはメモ帳にいくつかの動作パラメータを与えるXMLファイルのようです。例えば、図Hに示すように、24フォルダは公開鍵トークン、言語、プロセッサアーキテクチャを指定します。

図H
24 フォルダーには、さまざまな動作パラメーターをリストした XML ファイルが格納されています。

必ずコピーを作成してください
。Resource Hackerで何ができるかの基本的な概要がわかったので、お気に入りのプログラムを改造する様々な方法について考え始めているのではないでしょうか。ただし、ハッキングを始める前に、必ずプログラムのバックアップコピーを作成してください。Resource Hackerは便利なユーティリティですが、プログラムを誤って改造すると、プログラムが不安定になったり、動作しなくなったりする可能性があります。

Tagged: