리눅스 x86_64 절대 주소와 관련된 주제를 찾았습니다 : Absolute addressing for runtime code replacement in x86_64. 절대 주소 지정은 리눅스에서 지원되지 않는다고 들었습니다.Windows x64에 가까운 절대 호출 (0xFF 0x15) 주소 지정
windows x64는 절대 호출과 거의 비슷합니까? 창에 대한
은 함수의 주소는이 방법으로 절대 호출 (를 0xFF 0x15) 근처에서 잡아 수 86 :
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 바이트입니다. –