Исправление сборки IDA завершается с ошибкой, поскольку невозможно достичь места назначения из текущего местоположения.

Я новичок в IDA (и обратном проектировании).

Я пытаюсь использовать опцию "patch->assembly" в меню edit->patch, но это не удается с ошибкой, которую я не могу понять.

Моя текущая строка — «jnz short func» (где func — это метка, которую я переименовал из loc_xxxx), и я пытаюсь изменить ее на «jmp short func», но когда я нажимаю «ОК», я получаю окно сообщения с сообщением: « не может добраться до пункта назначения из текущего местоположения».

Кто-нибудь может объяснить, что это значит и почему это не работает? Я пытался искать все, и я не могу найти ни одного ответа!

Я также должен добавить, что делаю это как часть учебника по IDA, который я нашел (на tut4you.com).

Еще раз спасибо за вашу помощь, я действительно застрял с этим!


person TCS    schedule 08.05.2012    source источник
comment
Вы используете одну и ту же цель в обоих случаях? - короткий прыжок имеет диапазон -128 - 127 от текущего IP.   -  person 500 - Internal Server Error    schedule 19.02.2013


Ответы (1)


Инструкции «jnz short func» и «jmp short func» не имеют одинакового количества байтов. Постарайтесь сохранить выравнивание кода с исходным кодом. Также jnz, jz, ja,.. (условные переходы) не работать с дальними указателями (т.е. межсегментными).. но только jmp..

person Vladi    schedule 18.02.2013