Всем привет !
Что-то стало как-то уныло вообще, особенно на работе, поэтому для поднятия настроения решил продолжить наконец-то свои занятия по крякингу, вообще занимаюсь по мануалу «Введение в крякинг с нуля» [C] Рикардо Нарваха, пер. Aquila !
Вся проблема правда, что прочитав глав наверное десять что-то забросил месяца на два, но сейчас решил возобновить занятия…
Вот решил создать тему, что-бы было интересней заниматься, заодно и буду рассказывать о своих успехах на этом поприще (Если они будут эти успехи, ) !
В частности в этой теме расскажу о «Поломанном» своём первом крякми, незнаю правда кому это интересно, но может будут какие-то советы или другие рассказы про крякми, если будет востребовано потом можно даже отдельный раздел создать ! ;)
Итак автор цикла статей использует дебаггер Oledbg, в описании вроде-даже написано что имеет интуитивно понятный интерфейс, но незнаю на сколько он понятный, я если честно вспотел там разбираться что да как, хотя в мануале всё подробно даже разжёвано, но у меня проблемы с памятью и в этоге всё забыл, так-же нехрена не помню эти команды ассемблера, поэтому основные простенькие выписал, кстати во вложение можно всё скачать, сам мануал + всё необходимое…
Итак в главе 13-ть, наконец-то дошёл до крякми, хоть и простецкий, автор вроде всё и разжовывал но последнее крякми, что-то нестал, типо задание нужно вытащить пароль из программы самому, кстати ничего сложного вообще не оказалось:
Рассказываю что я делал, даже этот простецкий крякми можно ломануть кучей способами, я расскажу два способа, третий прочитаете в мануале + наверняка ещё пару найдёте сами, !
Итак самый первый и простецкий способ даже не запуская программу, открываем его в оледбг и пугаемся, :
В общем-то Олле очень умный дизассемблер, т.е. всё видно регистры, дамп-памяти, но самое-главное видно код ассемблера, видны переменные и параметры (правое окошко после кода).
А этого нам и хватит для анализа, по крайне-мере такого простенького крякми (В этом способе будем анализировать код + переменные без запуска программы вообще) !
Итак смотрим код, да-блин какое-то непонятное бла-бла-бла везде там, гы-гы-гы, но потом всё-же видим код двух окошек, т.е. то окошко которое выводится при правильном вводе пароля и то окошко которое выведется при неправильном:
Смотрим самую правую часть окна на скриншёте, олле всё нам рассказал и сдал крякми с потрахами, видим два окошка (их код я пометил двумя стрелочками на скриншёте), ога значит где-то должно-быть сравнение иначе как программа куда-то там зайдёт и тут олле опять нам всё рассказал, маленький триугольник как-раз показывает переходы (Это там, где ассемблерный код уже, на скриншёте выделен серым и так-же есть стрелочка которую я нарисовал для наглядности)…
А где-ж пароль-таки спросите все, тут открываем толстенную книгу ассемблера, желательно по толще, что-бы можно-было двинуть кому-нить по башке, и смотрим что-же за команда JNZ, да-блин я опять забыл:
JNZ переход совершается, если флаг Z неактивен, то есть если результат операции отличен от нуля.
Какой нахер флаг, мы-же прогу не запустили, далее поднимемся выше на строчку, какой-то OR– Это логическое «или», ТОЖЕ НАМ МАЛО ПОМОЖЕТ…
Поднимаемся ещё выше на строчку и видем интересный API:
CALL <JMP.%KERNEL32%.lstrcmspA> я эту команду отметил стрелочкой на скриншоте…
lstrcmspA – Это АПИ сравнивает строки, ога значит должно-быть две переменные, и если пароль забит в программе строкой и никак не генерируется, можно просмотреть его в олле, даже не запуская программу, ога пароль виден на скриншёте, чуть правее кода:
Олле мегаумная программа, сама всё показала и крякнула, вот список переменных которые использует lstrcmspA:
String2 = “cannabis” – Это и есть наш пароль;
String1=”” – То что мы введём, пусто но в следующем способе мы рассмотрим как это работает более детально…
КОРОЧЕ ТРЯСУЩИМЕСЯ РУКАМИ, ВВОДИМ «c-a-n-n-a-b-i-s», я аж чуть со стула не упал от радости:
Способ 2:
А теперь все наверное скажут (кто дочитал до этого места конечно):
Ну а где порушенная система, где сгоревший микропроцессор и т.д., ну-так не интересно это не крякинг, поэтому что-бы не было стыдно смотреть в глаза серьёзному пиплу, который завязывает шнурки монтировкой, будем запускать и попробуем стянуть пароль динамически, т.е. предположем пароль как-то генерируется или хитро скрыт в коде, что ну не видем мы его !
Что-бы не разводить писанину, ибо устал, давайте поставим точку останова, на вызове API lstrcmspA:
CALL <JMP.%KERNEL32%.lstrcmspA>
Запустим крякми в олле, далее введём любые символы и нажмём на Check, всё прога должна зависнуть, далее смотрим стек и что-же мы видим:
String1 = "xcvvzxcvzsdv" – То что мы ввели;
String2 = "cannabis" – Наш пароль ! ;)
А вообще если вместо нашей APIсделать прыжок на адрес 00401251, например прям в олле заменить код на: JMP crackme. 00401251
То программа будет всегда выводить что пароль правильный, т.е. все проверки сняли, !
В общем-то и всё, уж незнаю когда я доберусь до следующего более сложного крякми и доберусь-ли вообще, но вопрос нужно-ли продолжать дальше писать !
В данном случае оказалось писать гораздо сложнее, чем ломать сам крякми, надеюсь хоть прочитаете и интересно мнение как ?
Что-то стало как-то уныло вообще, особенно на работе, поэтому для поднятия настроения решил продолжить наконец-то свои занятия по крякингу, вообще занимаюсь по мануалу «Введение в крякинг с нуля» [C] Рикардо Нарваха, пер. Aquila !
Вся проблема правда, что прочитав глав наверное десять что-то забросил месяца на два, но сейчас решил возобновить занятия…
Вот решил создать тему, что-бы было интересней заниматься, заодно и буду рассказывать о своих успехах на этом поприще (Если они будут эти успехи, ) !
В частности в этой теме расскажу о «Поломанном» своём первом крякми, незнаю правда кому это интересно, но может будут какие-то советы или другие рассказы про крякми, если будет востребовано потом можно даже отдельный раздел создать ! ;)
Итак автор цикла статей использует дебаггер Oledbg, в описании вроде-даже написано что имеет интуитивно понятный интерфейс, но незнаю на сколько он понятный, я если честно вспотел там разбираться что да как, хотя в мануале всё подробно даже разжёвано, но у меня проблемы с памятью и в этоге всё забыл, так-же нехрена не помню эти команды ассемблера, поэтому основные простенькие выписал, кстати во вложение можно всё скачать, сам мануал + всё необходимое…
Итак в главе 13-ть, наконец-то дошёл до крякми, хоть и простецкий, автор вроде всё и разжовывал но последнее крякми, что-то нестал, типо задание нужно вытащить пароль из программы самому, кстати ничего сложного вообще не оказалось:
Рассказываю что я делал, даже этот простецкий крякми можно ломануть кучей способами, я расскажу два способа, третий прочитаете в мануале + наверняка ещё пару найдёте сами, !
Итак самый первый и простецкий способ даже не запуская программу, открываем его в оледбг и пугаемся, :
В общем-то Олле очень умный дизассемблер, т.е. всё видно регистры, дамп-памяти, но самое-главное видно код ассемблера, видны переменные и параметры (правое окошко после кода).
А этого нам и хватит для анализа, по крайне-мере такого простенького крякми (В этом способе будем анализировать код + переменные без запуска программы вообще) !
Итак смотрим код, да-блин какое-то непонятное бла-бла-бла везде там, гы-гы-гы, но потом всё-же видим код двух окошек, т.е. то окошко которое выводится при правильном вводе пароля и то окошко которое выведется при неправильном:
Смотрим самую правую часть окна на скриншёте, олле всё нам рассказал и сдал крякми с потрахами, видим два окошка (их код я пометил двумя стрелочками на скриншёте), ога значит где-то должно-быть сравнение иначе как программа куда-то там зайдёт и тут олле опять нам всё рассказал, маленький триугольник как-раз показывает переходы (Это там, где ассемблерный код уже, на скриншёте выделен серым и так-же есть стрелочка которую я нарисовал для наглядности)…
А где-ж пароль-таки спросите все, тут открываем толстенную книгу ассемблера, желательно по толще, что-бы можно-было двинуть кому-нить по башке, и смотрим что-же за команда JNZ, да-блин я опять забыл:
JNZ переход совершается, если флаг Z неактивен, то есть если результат операции отличен от нуля.
Какой нахер флаг, мы-же прогу не запустили, далее поднимемся выше на строчку, какой-то OR– Это логическое «или», ТОЖЕ НАМ МАЛО ПОМОЖЕТ…
Поднимаемся ещё выше на строчку и видем интересный API:
CALL <JMP.%KERNEL32%.lstrcmspA> я эту команду отметил стрелочкой на скриншоте…
lstrcmspA – Это АПИ сравнивает строки, ога значит должно-быть две переменные, и если пароль забит в программе строкой и никак не генерируется, можно просмотреть его в олле, даже не запуская программу, ога пароль виден на скриншёте, чуть правее кода:
Олле мегаумная программа, сама всё показала и крякнула, вот список переменных которые использует lstrcmspA:
String2 = “cannabis” – Это и есть наш пароль;
String1=”” – То что мы введём, пусто но в следующем способе мы рассмотрим как это работает более детально…
КОРОЧЕ ТРЯСУЩИМЕСЯ РУКАМИ, ВВОДИМ «c-a-n-n-a-b-i-s», я аж чуть со стула не упал от радости:
Способ 2:
А теперь все наверное скажут (кто дочитал до этого места конечно):
Ну а где порушенная система, где сгоревший микропроцессор и т.д., ну-так не интересно это не крякинг, поэтому что-бы не было стыдно смотреть в глаза серьёзному пиплу, который завязывает шнурки монтировкой, будем запускать и попробуем стянуть пароль динамически, т.е. предположем пароль как-то генерируется или хитро скрыт в коде, что ну не видем мы его !
Что-бы не разводить писанину, ибо устал, давайте поставим точку останова, на вызове API lstrcmspA:
CALL <JMP.%KERNEL32%.lstrcmspA>
Запустим крякми в олле, далее введём любые символы и нажмём на Check, всё прога должна зависнуть, далее смотрим стек и что-же мы видим:
String1 = "xcvvzxcvzsdv" – То что мы ввели;
String2 = "cannabis" – Наш пароль ! ;)
А вообще если вместо нашей APIсделать прыжок на адрес 00401251, например прям в олле заменить код на: JMP crackme. 00401251
То программа будет всегда выводить что пароль правильный, т.е. все проверки сняли, !
В общем-то и всё, уж незнаю когда я доберусь до следующего более сложного крякми и доберусь-ли вообще, но вопрос нужно-ли продолжать дальше писать !
В данном случае оказалось писать гораздо сложнее, чем ломать сам крякми, надеюсь хоть прочитаете и интересно мнение как ?
Вложения
Последнее редактирование: