Size: a a a

Ассемблер

2020 September 20

H

H̲i̲L̲e̲v̲e̲l̲... in Ассемблер
__gg
Ребят, привет. Я первокурсник по ИБ, только начал изучать ассемблер. Нам дали некую лабу по "крякингу" программ, запрашивающих некий пароль и сравнивающий его с истинным паролем.
В общем, пропатчить неоптимизированную компилятором программу для того, чтобы программа принимала любой введенной пароль за истинный, я смог. Затем, нужно было то же самое сделать, но только с оптимизированной компилятором программой. Я смог изменить участок инструкций только так, чтобы программа принимала любой неверный пароль за верный, но в случае, если будет введен вверный, то программа посчитает его за неверный.
Можете, пожалуйста, подсказать, каким образом необходимо изменить инструкции так, чтобы программа принимала любой пароль за верный? (Прикладываю участок инструкций с проверкой пароля)
Jnz на jmp поменять?
источник

_

__gg in Ассемблер
H̲i̲L̲e̲v̲e̲l̲
Jnz на jmp поменять?
Так оно уходит тогда в правую ветвь.
источник

H

H̲i̲L̲e̲v̲e̲l̲... in Ассемблер
__gg
Так оно уходит тогда в правую ветвь.
Ну и адрес тоже
источник

H

H̲i̲L̲e̲v̲e̲l̲... in Ассемблер
Пжди
источник

H

H̲i̲L̲e̲v̲e̲l̲... in Ассемблер
Нопами обставить
источник

H

H̲i̲L̲e̲v̲e̲l̲... in Ассемблер
И готово
источник

_

__gg in Ассемблер
H̲i̲L̲e̲v̲e̲l̲
Ну и адрес тоже
Окей, это получилось, спасибо. А что связанное с нопами, то это как? Нам говорили про нопы, но примеров с их использованием я не смог найти.
источник

D

Dim in Ассемблер
по идее нопы это пустые операторы
источник

D

Dim in Ассемблер
они ничего не делают, кроме как съедают время
источник

D

Dim in Ассемблер
а именно один машинный цикл
источник

H

H̲i̲L̲e̲v̲e̲l̲... in Ассемблер
__gg
Окей, это получилось, спасибо. А что связанное с нопами, то это как? Нам говорили про нопы, но примеров с их использованием я не смог найти.
Я хз как в иде это делается, но в ollydbg прям есть опция "insert nop region"
источник

H

H̲i̲L̲e̲v̲e̲l̲... in Ассемблер
Поищи что-то типа ida nop region
источник

_

__gg in Ассемблер
H̲i̲L̲e̲v̲e̲l̲
Поищи что-то типа ida nop region
Нет, судя по всему, у IDA не такой возможности.
источник

ST

Saenro T in Ассемблер
__gg
Ребят, привет. Я первокурсник по ИБ, только начал изучать ассемблер. Нам дали некую лабу по "крякингу" программ, запрашивающих некий пароль и сравнивающий его с истинным паролем.
В общем, пропатчить неоптимизированную компилятором программу для того, чтобы программа принимала любой введенной пароль за истинный, я смог. Затем, нужно было то же самое сделать, но только с оптимизированной компилятором программой. Я смог изменить участок инструкций только так, чтобы программа принимала любой неверный пароль за верный, но в случае, если будет введен вверный, то программа посчитает его за неверный.
Можете, пожалуйста, подсказать, каким образом необходимо изменить инструкции так, чтобы программа принимала любой пароль за верный? (Прикладываю участок инструкций с проверкой пароля)
Исследуй call _strncmp (тут все ответы)
источник

_

__gg in Ассемблер
Saenro T
Исследуй call _strncmp (тут все ответы)
Это самоубийство. Это же функция из стандартной либы Сишника. Там слишком много махинаций. Там без оптимизации то будет трудновато понять, что к чему, а с оптимизацией - подавно.
источник

ST

Saenro T in Ассемблер
Там пароль из 12 символов
источник

ST

Saenro T in Ассемблер
Тебе разве не интересно какой?
источник

_

__gg in Ассемблер
Saenro T
Тебе разве не интересно какой?
Хах, пароль из файла достается)
источник

ST

Saenro T in Ассемблер
Он уже в памяти к тому времени
источник

_

__gg in Ассемблер
Его нет в памяти. Программа при запуске начинает считывать файл и доставать из него пароль.
источник