У меня есть драйвер устройства, который я хочу исправить. Этот драйвер устройства вызывает IOLog, и я хочу избавиться от ведения журнала.Исправление CALLL путем замены с помощью NOP работает в пространстве пользователя, но не в пространстве ядра
Если я заменил CALLL на IOLog (соответствующее число) NOP внутри драйвера устройства (kext), ядро сработает с тем, что выглядит как разбитый стек («Backtrace terminated-invalid frame pointer 0»).
Тот же метод, однако, отлично работает в пользовательском пространстве (например, NOPping NSLogs внутри двоичного файла OS X).
Что мне здесь не хватает?
Я занимаюсь исправлением на диске. Если мои NOP были заменены как побочный эффект перемещения, не будет ли тогда драйвер функционировать так же, как и до исправления? Перемещение может сыграть определенную роль, но я еще не понял, как это работает. otool перечисляет 390 записей перемещения в изображении машинного механизма. – diciu 2008-11-04 10:02:55