Итак, я использовал CFF Explorer для добавления раздела кода в файл .exe
. Я установил характеристики раздела 0x60000020
(исполняемый, читаемый, содержит код) и создал там фиктивный код с использованием IDA.Нарушение прав доступа на `jmp` до добавленного сегмента
Однако, когда я ввел jmp
в этот код от исходного сегмента .text
, все, что у меня было, было нарушением доступа. Я использовал IDA исправлять двоичный код, так что генерируется коррекций для меня, но это, похоже, прав:
jmp far ptr 6:75D100h
В результате опкод выглядит правильно тоже:
EA 00 D1 75 00 06 00
Но как только я ударил, что jump - «Команда ссылается на память в 0xFFFFFFFF, память не может быть прочитана». Я немного экспериментировал с смещениями безрезультатно; Приложенный сегмент, кажется, правильно загружен в память.
Был бы признателен за любой намек на то, что мне не хватает здесь :)
Что заставляет вас думать, что '6' - правильный селектор сегмента? – Jester
@Jester как факт, это не так - похоже, что правильный - 5, но segfault сохраняется. Я понятия не имею, почему IDA ставит там 6, спасибо – Ap31
'5' выглядит очень подозрительно. '7' может работать, если вы назначили новый дескриптор в LDT. – Jester