banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

《ゼロから始めるIDA逆アセンブリ》学習ノート-5(lea命令)

image

lea 命令#

LEA はLOAD EFFECTIVE ADDRESS:“LEA A, B”命令で、B のアドレスを A に渡します。
この命令は B に格納された内容を取得せず、アドレスまたは後のオペランドの計算結果(角括弧を追加)を渡すだけで、この方法は変数パラメータのアドレスを取得するのに一般的に使用されます。

image

関数パラメータとローカル変数#

IDA が発見した関数は、呼び出し前に一般的にパラメータを渡す必要があり、大部分は PUSH 命令(32 ビットのみ)を通じて行われます。

image

関数パラメータ

image

パラメータの渡し方

LEA 命令は角括弧を使用していますが、角括弧内の式を計算してアドレスを渡すだけで、その内容を読み取ることはありません。

LEA のその他の効果#

LEA はまた、角括弧内の計算結果をターゲットレジスタに渡すためにも使用でき、結果のアドレスに格納された内容を読み取ることはありません。例えば、LEA EAX,[4+5]命令は計算結果 9 を EAX に渡し、MOV EAX,[4+5]命令のようにアドレス0x9に格納された内容を EAX に渡すことはありません。

LEA は変数のアドレスを取得し、MOV は変数のアドレスに格納された値を取得します(OFFSET を除く)。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。