3
我已經找到與linux x86_64絕對尋址相關的主題: Absolute addressing for runtime code replacement in x86_64。有人告訴我,linux不支持絕對地址。近絕對呼叫(0xFF 0x15)尋址窗口x64
那麼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);
}
如果支持64位,如何正確獲取過程地址?
不確定這是什麼,ff 15 xx xx xx xx是一個間接調用,'call qword ptr [offset]'其中* offset *是一個32位帶符號的偏移量,與指令指針無關。尋址位置的8個字節包含要調用的函數的實際地址。 –
也是用於x64的8個字節? – ChatCloud
Erm,地址是64位模式下的8個字節。 –