サーチ補正。読み書きする値と一緒に移動するものの、常に変わらない値がある場合、その「常に変わらない値(バイト列)」を探すことで補正します。書式は
[adjustment]search, 基準アドレス, 固定バイト列,
探査前端, 探査後端, ステップ
|
です。表記上2行で書いてますが、実際は1行で書いて下さいね。
基準アドレス | 探査を開始するアドレスであるとともに、補正の基準となるアドレスです。固定バイト列が見つかったアドレスと、基準アドレスとの差が補正値になります。 |
固定バイト列 | 書き換えたい値と同量のアドレス移動を起こし、かつ常に変わらない値を、バイト列として指定します。バイト列の詳細は、《B-バイト列》を参照。 |
探査前端 | サーチ範囲の最小アドレスを指定します。 |
探査後端 | サーチ範囲の最大アドレスを指定します。 |
ステップ | 16バイト単位でメモリを区切ったとき、常に1バイト目に固定バイト列がくると分かっている場合、「1バイト進めて比較して」を繰り返すよりも、「16バイト進めて比較して」を繰り返す方が遙かに効率的です。その比較毎のとび幅を指定します。 |
当然ながら、固定バイト列はユニークな値(メモリ中では非常に稀な値)でないと、関係のないところでもヒットしてしまいますので、注意してください。
なお、通常は「固定バイト列が見つかったアドレスと、基準アドレスとの差」が補正値になりますが、この差から補正値を選択するという方法もあります。
[adjustment]search, 基準アドレス, 固定バイト列,
探査前端, 探査後端, ステップ,
差=補正値 / 差=補正値 / 差=補正値
|
このような書き方(1行で書きます)をしますが、ステップのあとに','で区切って、「差=補正値」という形で、必要分だけ'/'で分けて連ねます。このとき該当する差がない場合は、補正値は0になります。
サーチ補正の使用例は、
[adjustment]search, 0x500000, 11FF22CC33, 0x500000, 0x60FFFF, 1
[adjustment]search, 0x800000, CC??CCFF, 0x500000, 0xAFFFFF, 8
[adjustment]search, heap2, 01FF 0100 01FF, heap2, heap3, 1,
0x20=0x40/ 0x30=0x10/ 0x40=0x50
|
などです。
|