我找到了与 linux x86_64 绝对寻址相关的主题: Absoluteaddressing for runtime code replacement in x86_64。据说 linux 不支持绝对寻址。
windows x64 怎么样,支持近乎绝对的调用吗?
对于 windows x86,函数的地址可以通过以下方式从接近绝对调用 (0xFF 0x15) 中获取:
unsigned char call_nearAbsolute[2] = {0xFF, 0x15};
if(memcmp(bytes, call_nearAbsolute, sizeof(call_nearAbsolute)) == 0) {
{
unsigned char offset[] = {
*(bytes + 0x5),
*(bytes + 0x4),
*(bytes + 0x3),
*(bytes + 0x2)
};
PDWORD_PTR absolute_addr =
(PDWORD_PTR)(((offset[0] & 0xFF) << 24) |
((offset[1] & 0xFF) << 16) |
((offset[2] & 0xFF) << 8) |
offset[3] & 0xFF);
}
如果 x64 支持,如何正确获取程序地址?