gpt4 book ai didi

c++ - Asm CALL 指令 - 它是如何工作的?

转载 作者:可可西里 更新时间:2023-11-01 13:50:51 25 4
gpt4 key购买 nike

我很想清楚地解释一下,在 Windows 环境(PE 可执行文件)中,CALL XXXXXXXXXXXXXXX 指令是如何工作的。我一直在研究 PE 格式,但我对 CALL ADDRESS 指令、从 dll 中导入函数以及 CALL ADDRESS 如何到达 DLL 中的代码之间的关系感到很困惑。除了 ASLR 和其他安全功能可能会围绕 DLL 移动之外,可执行文件如何应对这种情况?

最佳答案

它(即,直接调用带有普通相对调用的导入)不起作用,这就是为什么它不是这样做的原因。

要调用导入的函数,您需要查看导入地址表 (IAT)。简而言之,IAT 中的条目首先指向函数名称(即它开始时是导入名称表的拷贝),并且这些指针被加载程序更改为指向实际函数。

IAT 位于固定地址,但如果图像已 rebase 则可以重新定位,因此通过它调用仅涉及一个间接寻址 - 因此 call r/m 与内存操作数一起使用(这只是一个简单的常量)来调用导入的函数,例如 call [0x40206C]

关于c++ - Asm CALL 指令 - 它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14416205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com