如何将委托转换为 DRAM 中的绝对地址?

How to translate a delegate to absolute address in DRAM?

我想将委托成员 .ptr.funcptr 转换为与 DRAM 中可执行映像中的某些内容匹配的绝对地址。

目标不是调用,也不是修改,而是允许目标在 运行 时间反汇编自己,当它自己的图像加载到 DRAM 中时。

到目前为止,它已经适用于全局函数。

可能吗?

委托的地址是.funcptr属性的值。 属性 的类型有点误导 - 它是 function 类型并且 not 列出了实际预期用于传递上下文的隐藏参数,但是如果只是获取地址,您可以忽略类型(如果您想更改类型,则显式转换为 void*size_t)并只查看地址。

这不是物理内存中的地址,您必须向操作系统询问该地址,但由于它提供的虚拟地址是由处理器自动转换的,因此它很可能就是您想要的。