Эй, Сегодня я попытался сделать двоичный анализ NDIS.sys, и я заметил что-то странное. Я взял функцию и начал ее разграничивать. Первые 30 байт были одинаковыми на диске (с использованием IDA) и в памяти (с использованием WinDbg). Затем что-то изменилось. Я видел что-то вроде «jmp _ imp _XXXXX». байты JMP были одинаковыми, но адрес был другим.Что вызывает различия между драйвером на диске и драйвером, сопоставленным с памятью?
Мой вопрос - в чем разница? Я думаю, что это имеет какое-то отношение к переездам. Хотя прыжок предназначен для адресации в одном модуле, это длинный прыжок, что делает его относительно базового адреса модуля. Если произошло перемещение, ему также необходимо переместить этот адрес, даже если он находится на одном модуле.
Я прав или совершенно не так? :-) Спасибо.
Обратите внимание, что для драйверов устройств предпочтительный базовый адрес полностью игнорируется – snoone
Yup, но - зачем прыгать, чтобы получить переустановку? Пункт назначения перехода находится в том же модуле. – MindBlower
Можете ли вы показать, что вы видите в отладчике? – snoone