Форум программистов, компьютерный форум, киберфорум
Наши страницы
Низкоуровневое программирование
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
PEvgen
-235 / 1 / 0
Регистрация: 25.11.2018
Сообщений: 87
Завершенные тесты: 1
1

OllyDBG - не разрешает использовать JNZ

10.04.2019, 08:58. Просмотров 1644. Ответов 27

Всем привет!
В процессе обучения столкнулся с непонятной, для меня, ситуацией: не получается заменить безусловный переход на условный, кто может объяснить почему и как решить?
OllyDBG - не разрешает использовать JNZ
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2019, 08:58
Ответы с готовыми решениями:

инструкция Assmblera jnz
Что делает инструкция Assmblera jnz 200? Правильно выбирайте раздел и давайте темам более...

Что за команда "jnz leave_it"
Привет все, Tasm Ругается на sirena: ;сохранение в стеке используемых регистров push ax...

BIOS не разрешает загрузку ОС
Доброго времени суток! Имеется компьютер CELSIUS R540. При загрузке (даже до GRUB не доходит)...

Wildfly не разрешает комитить запросы
Wildfly 11 MySQL 8.0.11 Ошибка от сервера: java.sql.SQLException: IJ031020: You cannot commit...

Не разрешает записать windows 7 на диск
Я начала записывать windows, дошла до того где надо было отформатировать жесткий диск. У меня их...

27
R71MT
8574 / 1636 / 328
Регистрация: 29.07.2014
Сообщений: 2,679
Записей в блоге: 5
10.04.2019, 10:14 2
PEvgen, пробуй аналогичную инструкцию jne
0
ФедосеевПавел
Модератор
4517 / 2527 / 1018
Регистрация: 01.02.2015
Сообщений: 8,273
10.04.2019, 11:00 3
Лучший ответ Сообщение было отмечено PEvgen как решение

Решение

А разве существует условный косвенный переход в процессорах Intel x86?
Вот в справочнике не могу найти
Справочник инструкций от Intel

Т.е. мне кажется, что такая инструкция не поддерживается процессорами. Условные переходы осуществляются только по конкретному адресу (вернее по смещению относительно текущего адреса).
2
R71MT
8574 / 1636 / 328
Регистрация: 29.07.2014
Сообщений: 2,679
Записей в блоге: 5
10.04.2019, 11:31 4
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
что такая инструкция не поддерживается процессорами.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
org 100h
        mov    ax,next
        jmp    ax
        nop
        nop
next:   xor   ax,ax
        int   16h
        ret
;----------------------------------------
C:\>debug 001.com
-u
0B6D:0100 B80701        MOV     AX,0107
0B6D:0103 FFE0          JMP     AX
0B6D:0105 90            NOP
0B6D:0106 90            NOP
0B6D:0107 31C0          XOR     AX,AX
0B6D:0109 CD16          INT     16
0B6D:010B C3            RET
0
10.04.2019, 11:31
liv
1565 / 1295 / 224
Регистрация: 07.10.2015
Сообщений: 3,436
Завершенные тесты: 1
10.04.2019, 12:07 5
R71MT, речь идет не о jmp (безусловном переходе), а о любом j<условие>
1
PEvgen
-235 / 1 / 0
Регистрация: 25.11.2018
Сообщений: 87
Завершенные тесты: 1
10.04.2019, 12:13  [ТС] 6
Цитата Сообщение от R71MT Посмотреть сообщение
PEvgen, пробуй аналогичную инструкцию jne
Это первое что я попробовал - результат, ну понятное дело какой...
0
ahtak
29 / 23 / 6
Регистрация: 06.03.2019
Сообщений: 76
10.04.2019, 12:18 7
Не надо указывать что переход - короткий, просто jxx
0
liv
1565 / 1295 / 224
Регистрация: 07.10.2015
Сообщений: 3,436
Завершенные тесты: 1
10.04.2019, 12:22 8
PEvgen, как на счет такого варианта?
Assembler
1
2
    jz      $+4
    jmp     ax
0
PEvgen
-235 / 1 / 0
Регистрация: 25.11.2018
Сообщений: 87
Завершенные тесты: 1
10.04.2019, 12:27  [ТС] 9
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
А разве существует условный косвенный переход в процессорах Intel x86?
Вот в справочнике не могу найти
Справочник инструкций от Intel
Т.е. мне кажется, что такая инструкция не поддерживается процессорами. Условные переходы осуществляются только по конкретному адресу (вернее по смещению относительно текущего адреса).
Бегло просмотрев 2242 англоязычных листа ответа на свой вопрос я, увы, не нашел...

Чем отличается то что хочу я от следующего:Название: Безымянный2.png
Просмотров: 20

Размер: 2.9 Кб? Почему это работает, а то что хочу я нет?
0
PEvgen
-235 / 1 / 0
Регистрация: 25.11.2018
Сообщений: 87
Завершенные тесты: 1
10.04.2019, 12:31  [ТС] 10
Цитата Сообщение от ahtak Посмотреть сообщение
Не надо указывать что переход - короткий, просто jxx
Прочитав предложенный мне "Справочник инструкций от Intel", я нашел там следующее:
The Jcc instruction does not support far jumps (jumps to other code segments). When the target for the conditional
jump is in a different segment, use the opposite condition from the condition being tested for the Jcc instruction,
and then access the target with an unconditional far jump (JMP instruction) to the other segment. For example, the
following conditional far jump is illegal:
JZ FARLABEL;
To accomplish this far jump, use the following two instructions:
JNZ BEYOND;
JMP FARLABEL;
BEYOND:
Я так понимаю jxx обязательно SHORT....и с этого я начал...
0
liv
1565 / 1295 / 224
Регистрация: 07.10.2015
Сообщений: 3,436
Завершенные тесты: 1
10.04.2019, 12:33 11
PEvgen, в команде jxx указывается знаковое число [-128;+127], как смещение относительно текущего адреса.
В приведенном листинге записан адрес, как сумма значения в команде и текущего адреса.
Отладчик берет на себя часть рутинных вычислений.
0
PEvgen
-235 / 1 / 0
Регистрация: 25.11.2018
Сообщений: 87
Завершенные тесты: 1
10.04.2019, 12:34  [ТС] 12
liv, это OllyDBG...
0
liv
1565 / 1295 / 224
Регистрация: 07.10.2015
Сообщений: 3,436
Завершенные тесты: 1
10.04.2019, 12:38 13
Цитата Сообщение от PEvgen Посмотреть сообщение
JNZ BEYOND;
JMP FARLABEL;
BEYOND:
Все правильно! Команды jxx не могут прыгнуть дальше чем на [-128;127] байт.
Поэтому, чтобы перейти дальше, так и приходится делать.
Посмотрите выше, как я предложил сделать. Применен похожий прием.

Добавлено через 1 минуту
Цитата Сообщение от PEvgen Посмотреть сообщение
это OllyDBG
Какая разница! В любом так!
0
PEvgen
-235 / 1 / 0
Регистрация: 25.11.2018
Сообщений: 87
Завершенные тесты: 1
10.04.2019, 12:39  [ТС] 14
liv
OllyDBG - не разрешает использовать JNZ

В написании я, по моему, не ошибся...
0
liv
1565 / 1295 / 224
Регистрация: 07.10.2015
Сообщений: 3,436
Завершенные тесты: 1
10.04.2019, 12:43 15
PEvgen, начнем с начала.
1) Вы исправляете код crackme?
2) Почему возникла необходимость в команде jnz ax? Покажите весь исходный текст, который хотите исправить.
3) Под отладчиком надо писать конкретный адрес, типа jnz 156 ($ используется в исходных текстах)
0
PEvgen
-235 / 1 / 0
Регистрация: 25.11.2018
Сообщений: 87
Завершенные тесты: 1
10.04.2019, 13:11  [ТС] 16
Цитата Сообщение от liv Посмотреть сообщение
PEvgen, начнем с начала.
С начала, так с начала....
1. Учусь пользоваться Олькой, и, как ни странно, но ничего лучше чем "Учебник Нарваджиты" я не нашел.
2. Правлю, как не сложно было догадаться по скринам, ДЛЛку бейсика,
Почему возникла необходимость в команде jnz ax
JNZ необходим после сравнения. Не думаю что скрин внесет какую-то ясность, но тем не менее держите
OllyDBG - не разрешает использовать JNZ

Это редактируемый в данный момент кусок кода
3.
Под отладчиком надо писать конкретный адрес
Безусловный переход работает! Конкретный адрес и ДЛЛ.... я конечно не спец, но по моему так низя, это ж не 4ххххх....в конкретном случае может и прокатить, но: у меня на хосте и гостевой база отличается, поэтому уже не пойдет, я так понимаю...?
0
liv
1565 / 1295 / 224
Регистрация: 07.10.2015
Сообщений: 3,436
Завершенные тесты: 1
10.04.2019, 13:32 17
PEvgen, ну почему, я увидел, что хотел Есть место, где можно что-то добавить.
Теперь еще вопрос:
Цитата Сообщение от PEvgen Посмотреть сообщение
JNZ необходим после сравнения
После какого сравнения?
В коде безусловный переход (в двух местах используется jmp ax). Как надо сделать?

Добавлено через 2 минуты
А исправим мы не в отладчике, а сам файл. Ищем в hex-редакторе это место и правим байтики...
Только сначала хочу понять, что именно надо сделать.

Добавлено через 6 минут
Цитата Сообщение от PEvgen Посмотреть сообщение
Конкретный адрес и ДЛЛ
когда в отладчике впишем конкретный адрес, в команду запишется смещение относительно текущего адреса. Так что, все в порядке. Можете попробовать.
Ну или потом подправим файл...
0
PEvgen
-235 / 1 / 0
Регистрация: 25.11.2018
Сообщений: 87
Завершенные тесты: 1
10.04.2019, 13:55  [ТС] 18
Цитата Сообщение от liv Посмотреть сообщение
Ну или потом подправим файл...

Как на самом первом скрине нуна (последний безусловный заменить)

когда в отладчике впишем конкретный адрес, в команду запишется смещение относительно текущего адреса.
Я ассемблнр не изучал ранее, но, отступая от курса "С", мой препод говорил, что прямая адресация в ДЛЛ не возможна, я отталкиваюсь от этого.... Может он был не прав? Нарваха пишет именно так как Вы говорите, то есть он, естественно, не обьясняет, что
в команду запишется смещение относительно текущего адреса
это ведь не его дело, но его уроки не всегда верны на данное время (как я понимаю или по другим причинам), приходится их пересматривать под сейчас. Я, собственно, поэтому и отталкиваюсь от базы а не от EIP (да и не оттолкнешься от него) или прямой адресации. Но попробовать - попробую, на всякий случай, это ж намного проще,править только заново, теперь, все....
0
liv
1565 / 1295 / 224
Регистрация: 07.10.2015
Сообщений: 3,436
Завершенные тесты: 1
10.04.2019, 13:59 19
Цитата Сообщение от PEvgen Посмотреть сообщение
Как на самом первом скрине нуна (последний безусловный заменить)
Если как-то заменим на условный переход (допустим), то куда надо перейти, если будет Z=1?
0
PEvgen
-235 / 1 / 0
Регистрация: 25.11.2018
Сообщений: 87
Завершенные тесты: 1
10.04.2019, 14:20  [ТС] 20
Цитата Сообщение от liv Посмотреть сообщение
Если как-то заменим на условный переход (допустим), то куда надо перейти, если будет Z=1?

Если будет Z=1, надо будет еще три ПОПа сделать, а потом перейти (на строку после КреатВинд), потому я про JNZ и спрашиваю, оно, в таком порядке, красивее выходит, а значит правильнее....а по Z=0 -> на три ПОПа выше КреатВинд

ПС. Надо будет их потом перенести, что бы не дублировался код....их то, ведь, один хрен ПОПать, а после можно и переход осуществить...
0
10.04.2019, 14:20
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2019, 14:20

Фаевол в Opensuse не разрешает войти по ssh
Здравствуйте люди! Создал правило что бы можно было входить по SSH, но когда пытаюсь за конектится...

Планировщик заданий не разрешает выводить сообщения
Сам вопрос в названии темы, я могу запланировать только запуск программы, а выводить сообщение (не...

gethostbyname не всегда 'разрешает IP из адреса хоста'
При написании простенького Proxy столкнулся с проблемой - gethostbyname работает некорректно. А...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru