Windows XP 環境で fasm を学習しているときに fasm のソース コードを読んでいると、invoke マクロが見つかりました。
invoke MessageBox,0,[_strbuf],_msgcap,MB_ICONINFORMATION+MB_OK
そしてインポートマクロ。
import user,\
MessageBox,'MessageBoxA',\
wsprintf,'wsprintfA'
しかし、MessageBoxA のハードコーディングされたアドレスも、アセンブリ コードでの user32.dll の読み込みも見つかりませんでした。アドレスではなく文字列にラベルを付けるマクロ定義のみがあります。
私の仮定はこれです
user32.dll をロードし、ロードされた dll の開始アドレスを返すコードがあります => ここで、返されたアドレスをロケーション A に呼び出しましょう
ハードコーディングされたアドレスとラベルのペアがあります (例: MessageBoxA = 0x00000000)
したがって、命令「call」は MessageBoxA ラベルを呼び出すことができます (位置 A + MessageBoxA オフセットに変換されます)。
私の仮定は間違っていますか?API はどのように呼び出されるのだろうか。
ありがとう