私はアセンブリが新しく、現在教育目的で調査中の実行可能ファイルを持っています。私はIDAプロを使用して実行可能ファイルの目的を理解していますが、質問はほとんどありません。私のコードは以下の通りです:アセンブリ:2つのアドレスを追加する
1.text:00401525 call ebp ; MapViewOfFile
2.text:00401527 mov ebp, eax
3.text:00401529 test ebp, ebp
4.text:0040152B mov [esp+54h+argv], ebp ; argv-shi ari chemi dll gadmotanili
5.text:0040152F jnz short loc_401538
6.text:00401531 push eax ; Code
7.text:00401532 call ds:exit
8.text:00401538 ; ---------------------------------------------------------------------------
9.text:00401538
10.text:00401538 loc_401538: ; CODE XREF: _main+EFj
11.text:0040154C mov esi, [ebp+3Ch]
12.text:0040154F push ebp
13.text:00401550 add esi, ebp
14.text:00401552 mov ebx, eax
15.text:00401554 push esi
16.text:00401555 mov [esp+68h+var_30], ebx
17.text:00401559 mov ecx, [esi+78h]
18.text:0040155C push ecx
19.text:0040155D call sub_401040
私の質問を単純化するために列挙しました。
1行目に表示されているように、戻り値はebp
に格納され、次にargv
に格納されます(kernel32.dll
がマップされただけです)。その後11行目(私が理解するように)では、いくつかの関数ポインタがesi
に移動しました。 3ch
の小数点は60
で、各関数は4バイトです。kernel32.dll
からエクスポートされたすべての関数がリストされ、15番目の関数がAddSecureMemoryCacheCallback
であることがわかりました。その後、ebp
がスタックにプッシュされ、13行目で私は完全に混乱しました。私が理解しているように、AddSecureMemoryCacheCallback
を指すポインターに始まるkernel32.dll
のポインターを追加するのはナンセンスですが、これができることは何も考えられませんでしたが、これの目的は何ですか?申し訳ありませんが、私の質問がばかげて聞こえる場合、私はアセンブリで新しく、それは大きすぎるので、コード全体を貼り付けることができませんでした。ありがとう。
エクスポートリストを見ている理由がわかりません。 'kernel32.dll'が最初からマッピングされていた場合、' ebp'はそのMZヘッダを指しています。オフセット60には、PEヘッダーへのオフセットである 'e_lfanew'があります。 –
本当にありがとうございました:)私が言ったように、私はアセンブリで新しく、何が見えるのか分かりませんでしたが、私にはまだ分かりません。説明していただけますか? – Rasty