2017-07-25 22 views
0

ファイルを解析するためのプロIDAを使用して、私はかなり理解していないといういくつかのコード全体を実行している:このコードは何を意味しますか:ss:dword_410CC5 [ebp]?

mov eax, ss:dword_410CC5[ebp] ; 
call eax; Indirect Call Near Proc 

がこのアドレスに行く - 410CC5 - 私はこれを参照してください。

ile.........Clos 
eHandle......... 

を私はEAXの最初のコードスニペットでは、ライブラリ関数の名前が

call eax; Indirect Call Near Proc 

によって、その後に呼び出された保存されている。しかし、問題は完全にアドレス410CC5しないと仮定この名前に対応しています(添付を参照)。このアドレスでは実際にはゼロにすぎません。

はとにかく

call eax; Indirect Call Near Proc 

で、我々はCloseHandleをを呼び出すことを意味していることありますか?もしそうなら、なぜ正しいアドレスがEAXに渡されないのですか?

Code snippet

+5

'dword_410CC5 [ebp]'は絶対アドレス '410CC5'ではないので、 'ebp'の値を追加する必要があります。これは '[ebp + 410CC5]'の愚かな構文です。また、 'call eax'は名前で関数を呼び出すことはありません。 – Jester

+1

確かに、その最初のコード行には、 'MOV'命令がありませんか? –

+0

はい、申し訳ありません。修正済み – ShHolmes

答えて

1

call命令が解体に表示されたら、それは別のルーチン/機能は、その時点で呼び出されることを意味します。

ルーチンに絶対アドレスがある場合、命令はcall 0xaabbccddのように表示されます。

呼び出される関数のアドレスが動的アドレス(この種類のアドレスは、OSが実行可能ファイルをロードするときに解決されます)の場合、登録された値を介して呼び出されます。

しかし、この命令はルーチンを呼び出すために使用されます。それだけです。

関連する問題