patch (idb モードのみ)

特定のアドレスまたは変数に式の値を記述して、実行ファイルを編集します。

構文

patch addr = expr  

パラメーター

addr

値を設定するアドレスまたは変数。

expr

アドレスの値。

説明

このコマンドは、指定されたアドレスまたは変数に式の値を記述することにより、実行ファイルを変更します。

このコマンドを使用して、実行ディスクファイルの無効なデータや命令を修正します。テキスト、初期化データ、読み取り専用データ領域をパッチできます。bss セグメントや、スタックの場所およびレジスターの場所はディスクファイル上には存在しないため、パッチを適用することはできません。

コードに直接パッチを適用するのは危険です。ソースとターゲットが、構造体、サイズ、バイトオーダーなどに適合するように注意する必要があります。適合しない場合、アプリケーションが壊れる可能性があります。

このコマンドは、ディスク上のバイナリーファイルを変更する場合のみ使用してください。デバッグ対象のメモリーを変更するには、assign コマンドを使用します。patch コマンドの発行時にイメージが実行中の場合は、デバッグ対象のアドレス空間にある対応する場所も更新されます。ディスクへのパッチ適用が正常に行われたかどうかにかかわらず、assig コマンドが source 式と destination 式を処理できる限り、デバッグ対象は更新されます。プログラムがロード済みでも、実行が開始されていない場合、ディスクへのパッチ適用は、対応するメモリーへの割り当てが行われずに実行されます。

patch コマンドを使用する際、オリジナルのファイル名に ~backup が付けられて保存されます。これにより、必要に応じて元のバイナリーに戻すことができます。また、ファイル名に ~temp が付けられたファイルも作成されます。デバッグセッションが終了すると、デバッガーはこのファイルを削除します。

(idb) 
					 run
[1] stopped at [int main(void):24 0x120001324] 
24 return 0; 
(idb) 
					 patch i = 10
0x1400000d0 = 10 
(idb) 
					 patch j = i + 12
0x1400000d8 = 22 
(idb) 
					  

関連情報


このヘルプトピックについてのフィードバックを送信