我在阅读 fasm 源代码时在 windows XP 环境中学习 fasm,我发现调用宏
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。
谢谢