Windows system >> Windowsの知識 >  >> コンピュータソフトウェアのチュートリアル >> ソフトウェア合成 >> ハードディスクのバージョンを変換するのに最適な方法はCDのバージョンです

ハードディスクのバージョンを変換するのに最適な方法はCDのバージョンです

  

コンピュータのゲーマーは実行中にCDを挿入する必要があります(「完全インストール」の場合も同じです)。ディスクを誤って紛失したり、光学式ドライブが故障した場合、インストールされているゲームに対処する方法はありませんか?あなたはマスターからCDなしのパッチをダウンロードすることを選択できますが、すべてのCD-ROMゲームがそのようなパッチを見つけたり使用したりできるわけではありません。この記事では、完璧なハードディスクゲームを作成するために、あなたはマスターの役割を果たすことができます。

特記事項:この記事の目的は、本物のゲームを購入したユーザーがCD-ROMドライブを装着せずにゲームをプレイできるようにすることだけです。

すべてのCDバージョンのゲームをハードディスクバージョンに変換できるわけではありませんが、ここでは変更可能なゲームの種類と機能をいくつか示し、実際の変更プロセスについて説明します。

戦闘1:ディスク検出の削除

ゲームの特徴:ゲーム内のすべてのファイルはハードドライブにインストールされており、ディスクはゲームの始めに著作権保護の目的でのみ検出されます。

修正の原則:ゲームプログラムの最初にディスクを検出するためのコードがあります最も簡単な検出方法はディスクから特定のファイルを読むことで、そうでなければプロンプトボックスがポップアップしてゲームを終了させます。そしてゲームディスクとして確認されて、プログラムはゲームの始めに飛びます。

修正難易度:★★★

必須ツール:W32DASM、RTA(元のアドレスはもう利用できません。RTAとHiew、010Editorは両方とも16進エディタです)(注)上記の2つのソフトウェアは、PConlineでは提供されていません。セキュリティに注意してください。

ステップ1:W32DASMをダウンロードして解凍し、解凍ディレクトリでW32dsm8.93 + .exeを実行します。 W32DASMのメインインターフェイスメニューの[逆アセンブラ→逆アセンブルするファイルを開く]を選択し、ファイル選択ボックスの "××物語"のインストールディレクトリにあるzweipet.exeを選択します。

ステップ2:メニューの "機能→インポート"(機能→入力テーブル)を選ぶと、ポップアップウィンドウにリストボックスが現れ、プログラムで使われているAPI関数の詳細が表示されます。ウィンドウ上部のテキストボックスに「GetDriveType」と入力して右側の「Search」ボタンをクリックし、下のリストボックス内の行を選択してダブルクリックします(図1を参照)。

図1 "GetDriveType"の検索

ヒント:プログラムがCDを検出する場合は、GetDriveType関数を使用してドライブ文字のデバイスタイプを取得する必要があります。 。そのため、プログラム内でGetDriveType関数の場所を見つけた場合は、近くのディスク検出コードを見つけることができます。

手順3:W32DASMメインインターフェイスのコード表示ボックスで、GetDriveType関数の呼び出し位置を強調表示し、コードボックスを少し下に引き下げてディスク検出コードを確認します(図を参照) 2)。この記事のように、zweipet.exeに含まれるGetDriveTypeの位置は0004843、ディスク検出コードの位置は004088BDです。コードの概要は次のとおりです。

図2 "ディスクの挿入"のディスク検出コード

  • :004088BD mov eax、dword ptr [esp + 14]
  • :004088C1 test eax、eax //ディスクがあるかどうかを確認
  • :004088C3 jnz 004088DB //004088DBの位置(つまりゲームの開始位置)にジャンプするディスクがあるが、ディスクがジャンプしない
  • :004088C5 push 00000000
  • :004088C7 push 00428934
  • :004088CC push 00428919
  • :004088D1 push 00000000
  • :004088D3 call dword ptr [004233EC] //「XXゲームディスクを挿入してください」というプロンプトウィンドウが表示されます。
  • :004088D9 jmp 00408933 //プログラムはコードの最後に戻ります。これにより、ゲームが強制終了されます(図3を参照)。

    <図3:004088D3の位置コードがこのプロンプトボックスを表示します。

    ステップ3:004088C3でプログラムの方向を確認できます(次のコード行に進むか004088DBにジャンプします)。 Game)、あなたが判断せずに004088DBにプログラムをジャンプさせることができるのであれば、それはディスク検出をスキップすることと同等です。 W32DASMを閉じ、ダウンロードしたばかりのRTAを開き、メニューの[ファイル]→[ファイルを開く]を選択して、zweipet.exeを開きます。 RTAインターフェイスは、zweipet.exeのアセンブラコードをすぐに表示します。一番左の赤い数字はコードの位置、横の青い16進数はラインコードのマシンコード、そして右側の黄色いテキストはアセンブリコードです。 004088C3を変更する場所を見つけ、アセンブリコードは "JNZ SHORT 4088DB"です、それを "JMP SHORT 4088DB"に変更します(引用符なしで、マシンコードはEB16です)。 (修正図4の前に)




    (図の後に変更。5)とあなたが--JNZ JMPを知って
    どういう意味ですか?
    JNZは条件付き分岐命令で、最初に条件を検出し、それが満たされるとジャンプし、そうでなければ次のコード行を実行し続けます。 JMPは、条件を検出せずに転送する必要がある位置に直接ジャンプする無条件分岐命令です。
    ステップ4:メニューコマンド[ファイル]→[ファイルの保存]を選択して、変更した結果を保存します。 「X×Story」を再実行すると、「XX Storyのゲームディスクを挿入してください」というプロンプトボックスが迷惑になることがなくなり、CDなしで遊ぶことができます!
    Combat 2:ハードディスクへのCDファイルの転送
    ゲームの機能:ハードディスクにはいくつかのゲームファイルしかなく、コピーされたCDファイルのパスはファイルまたはレジストリに記録されます。
    修正原則:CDから抽出する必要があるコンテンツをローカルハードディスクにコピーし、パスレコードを修正してゲームプログラムをローカルハードディスクから読み取らせる。
    典型的なゲーム: "××医院"
    修正難易度:★★
    必須ツール:メモ帳
    ステップ1:インストール中に "Full Installation"を選択しても "××Hospital"実行時にもディスクを挿入する必要があり、ディスクを挿入した後はゲーム中に大量のデータが読み込まれるため、一部のゲームファイルがローカルハードディスクにインストールされていないと判断されます。ゲームディスクを挿入し、以下のファイルを参照して、ハードディスクのゲームインストールディレクトリ内のファイルと比較すると、いくつかのディレクトリ内のファイルの数は異なりますが、ディスクの構造はハードディスクと同じです。
    ステップ2:足りないゲームファイルをCDからハードディスクのゲームインストールディレクトリにコピーし( "上書き"が利用可能)、ゲームを再実行して、ゲームCDの挿入を求めるメッセージが表示されることを確認します。ゲームプログラムは、見つからないゲームファイルをハードディスクにコピーしたことを認識していないため、CD上のファイルを探します。それでは、どのようにしてゲームプログラムに知らせることができますか?ゲーム用のゲーム設定ファイルなど、ゲーム設定ファイル(通常、ファイル名には "Config"、 "cfg"、 "settings"、その他のキーワードが含まれています)を探して、ゲームプログラムの "メモリ"を変更する必要があります。 Hospital.Cfgをインストールディレクトリにインストールし、このファイルを「メモ帳」で開き、「INSTALL_PATH =」の後のパスをゲームのインストールパス(つまり、ハードディスクからコピーしたファイルが見つからないパス)に変更します。この行は "INSTALL_PATH = C:¥Program Files¥Bullfrog¥Hospital¥"のようになっていますので、ファイルを保存して閉じます。
    ステップ3:ゲームをもう一度実行して、ディスクを挿入する必要がなくなったことを確認します。
    変更プロセスの概要
    上記の例を示した後、変更手順をより一般的な方法でまとめました。
    まず第一に、ゲームの種類がAかBかを判断するためのファイル比較とCD-ROMの読み取り時間です。
    A.ディスクを検出するだけで、すべてのゲームファイルがハードディスクにインストールされます。
    ステップ1:W32DASMを使用してゲームプログラムファイルのアセンブラコードを表示し、ディスク検出部分のコード位置を見つけます。
    ステップ2:このコードを解析して、条件付き分岐命令JNZの位置を見つけます。
    ステップ3:RTAでゲームプログラムファイルを編集し、記録されたばかりのJNZの位置を確認し、それをJMP(無条件分岐命令)に変更します。
    ヒント:上記の状況は、それ以上暗号化されていないゲームにのみ使用され、ディスク検出コードに "フラワーインストラクション"または "動的暗号化"テクノロジを使用するゲームもあり、この方法では変更できません。 //この記事は、コンピュータのソフトウェアおよびハードウェアのアプリケーションネットワークwww.45it.comからの引用です。
    B.ハードディスク内のゲームファイルは不完全であり、CDから読み取る必要があります。
    ステップ1:ハードディスク上のゲームファイルの数とCD上のファイルの数を比較し、足りないファイルをハードディスクからゲームのインストールディレクトリの対応する場所にコピーします(他のディレクトリにコピーし、3番目のステップのパスで)。適切な変更を加えますが、互換性の理由から、ゲームのインストールディレクトリにコピーすることを強くお勧めします。
    ヒント:ファイルを暗号化したり隠したりするゲームがいくつかありますが、この方法でパスを変更すると、 "missing files"のようなメッセージが表示されます。
    ステップ2:記事に記載されている機能認識方法に従って、CDファイルのパスを保存するためにゲームの設定ファイル(またはレジストリの場所)を探します。
    ステップ3:設定ファイルを編集し、ファイル保存パスをゲームのインストールディレクトリに変更します。

Copyright © Windowsの知識 All Rights Reserved