Сейчас на форуме: igorcauret, Rio (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Крякмис №2 , не совсем понял работу NOP |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 17 мая 2015 16:04 · Личное сообщение · #1 Задание : It's very simple, you must delete the NAG Screen! You can patch it! This is intended for newbies who wants to try out their skills on "patching VB". If you fail or want to ask me something just mail me! Ответ [CrackMe #2] Remove NAG Запускаем и видим NAG с надписью "Remove Me". Надо убрать! Запускаем OllyDbg. Будем ловить MessageBox. Search for - All intermodular calls, выбираем rtcMsgBox и ставим бряки на все вызовы - set breakpoint to every call to rtcMsgBox. Оказываемся здесь: 0040238D . FF15 1C104000 CALL DWORD PTR DS:[<&MSVBVM60.#595>] ; MSVBVM60.rtcMsgBox Этот вызов надо NOP'ить, превращая FF151C104000 в 909090909090. Можно прямо в Olly, но мне больше нравиться hiew. ********************** Не свовсем понял разъяснения к прохождению. Понял что надо найти MsgBox . Зачем мы ставим брейкпоинты и что такой за NOPить вызов. И почему именно число 909090909090 ? заранее спасибо. Только учусь . Выполнил задания Fant0ma там как то попонятнее было. ![]() |
|
Создано: 17 мая 2015 16:21 · Личное сообщение · #2 heshurg пишет: Зачем мы ставим брейкпоинты Чтобы понять, какой из вызовов rtcMsgBox срабатывает при появлении NAG heshurg пишет: И почему именно число 909090909090 ? Потому что http://en.wikipedia.org/wiki/NOP . Заменяем инструкцию call многократным повторением инструкции NOP. Знаешь байку про замену продукции Apple на почте кирпичами и прочими вещами, чтобы по весу совпадало? Та же идея ![]() ![]() |
|
Создано: 17 мая 2015 16:55 · Личное сообщение · #3 Kaimi пишет: Чтобы понять, какой из вызовов rtcMsgBox срабатывает при появлении NAG Так там несколько сразу поставилось . Я на всех вывел число 909090909090 . Нага осталась ( Что то не так видимо сделал . Я так понял число 909090909090 просто взято от балды, просто что бы по весу было такое же как и при начальном значении ? ![]() |
|
Создано: 17 мая 2015 17:00 · Поправил: dosprog · Личное сообщение · #4 |
|
Создано: 17 мая 2015 17:09 · Поправил: heshurg · Личное сообщение · #5 dosprog пишет: Код 90h эквивалентен инструкции <mov eax,eax>. То есть не делать ничего. Синоним - NOP - <no operation> Спасибо понял Вообщем что я делаю в Ollydbg . Нахожу строку 0040238D . Нажимаю Assemble . Вместо FF151C104000 пишу 909090909090 . Сворачиваю Ollydbg . Открываю Крякмис. Наг не исчез что не так делаю ? ![]() |
|
Создано: 17 мая 2015 17:28 · Поправил: TryAga1n · Личное сообщение · #6 Вместо Assemble, жми Edit ![]() Либо когда выбираешь Assemble, пиши nop и не забудь поставить галочку на Fill with NOP's - А, у тебя изменения не сохраняются...как сказали ниже, изменения ты проводишь в памяти процесса, чтобы сохранить их на диск, нужно сделать следующее: ![]() А в открывшемся окне дампа, еще раз правой кнопкой и ![]() ![]() |
|
Создано: 17 мая 2015 17:28 · Личное сообщение · #7 Ты не патчишь бинарь, ты патчишь только образ бинаря в памяти. Соответственно, при перезапуске все твои патчи перетираются. ----- старый пень ![]() |
|
Создано: 17 мая 2015 21:51 · Поправил: unknownproject · Личное сообщение · #8 dosprog пишет: Код 90h эквивалентен инструкции <xchg eax,eax> Лучше бы вы объяснили парню, что ноп не выполняет ничего, чем расписывали про зеркальные инструкции. heshurg пишет: Зачем мы ставим брейкпоинты и что такой за NOPить вызов. И почему именно число 909090909090 ? Брейкпоинт - точка прерывания, место, на котором программа будет остановлена по необходимости, например после каких-либо вычислений.Так как NOP занимает всего один байт, а CALL пять, то, чтобы не нарушить целостность кода, делается патч = кол-ву байт заменяемой инструкции.Это справедливо не только для ноп, но и для всех остальных инструкций. ----- TEST YOUR MIGHT ![]() |
|
Создано: 17 мая 2015 22:28 · Поправил: tihiy_grom · Личное сообщение · #9 unknownproject пишет: Лучше бы вы объяснили парню, что ноп не выполняет ничего, чем расписывали про зеркальные инструкции. Лучше бы парень почитал топик "введение в крэкинг с нуля" а если есть совсем большое желание, то можно ещё объяснить что 909090909090 - это не просто 12 циферок, а АЖ ЦЕЛЫХ 6 NOP'ОВ ПОДРЯД !!! ![]() ![]() |
|
Создано: 18 мая 2015 13:23 · Поправил: heshurg · Личное сообщение · #10 Ребят топик читал . Спасибо за ответы всё получилось . Но есть ещё проблемка по редактору WinHex . Там в крякмисе нужно просто активировать кнопку и всё. Задание я сделал , но логику разъяснений опять же не понял . Открываем WinHex , поиском ищем слово Enable Me , нашли побитово это слово в HEX коде. Но как он нашёл , побитово свойства кнопки. После Enable ME , стоят пробелы , значки непонятные . Тыкните носом где про это всё прочитать ![]() |
|
Создано: 18 мая 2015 14:26 · Личное сообщение · #11 Формат хранения форм в VB и Delphi, а так же BCB похож. Что-то вроде: 1) Длина названия класса компонента в байтах 2) Название класса компонента 3) Длина 1го поля свойств компонента 4) Содержимое 1го поля 5) Длина 2го поля 6) ... Приведу пример с Delphi, ибо VB нету: Имеем такую кнопку: ![]() Значит разглядывая ее через Hex-редактор, получится, что свойство кнопки Enabled, отвечающее за активность, будет иметь длину 8 байт(само название)+1 байт(состояние). По поводу пробелов и значков непонятных, это не пробелы и значки. Ты смотришь вправо, а нужно смотреть налево, на байты. В текстовом виде они представляют полную ахинею, а в виде данных, используемых программой они представляют четкую структуру. ![]() |
|
Создано: 18 мая 2015 15:20 · Личное сообщение · #12 |
|
Создано: 18 мая 2015 16:24 · Личное сообщение · #13 |
|
Создано: 18 мая 2015 18:03 · Поправил: Rainbow · Личное сообщение · #14 |
|
Создано: 18 мая 2015 18:10 · Личное сообщение · #15 |
|
Создано: 18 мая 2015 20:28 · Личное сообщение · #16 |
|
Создано: 18 мая 2015 20:40 · Поправил: TryAga1n · Личное сообщение · #17 heshurg пишет: если мы не знаем языка программирования То мы берем PEiD и смотрим, либо открываем файл в отладчике и видим на чем написано приложение. heshurg пишет: Просто пустая кнопка которую надо активировать Много разных вариантов, например бряк на EnableWindow или например инлайним код push 1 push <ButtonID> call EnableWindow - А вообще, активировать задизейбленые кнопки - дело не благодарное. Нужно ломать схему регистрации, чтобы программа думала, что зарегана и сама их включала. Редким исключением является так называемая "Демо-версия", которая имеет полный функционал, но не имеет регистрации. Такое встречалось буквально пару раз за несколько лет. ![]() |
|
Создано: 18 мая 2015 21:20 · Личное сообщение · #18 heshurg пишет: Хорошо ,а если мы не знаем языка программирования. Перед нами только HEX код , как мы найдём свойства кнопки ? Если даже надписи не будет "Enable me" Просто пустая кнопка которую надо активировать Вопрос из разряда "а сломать прогу, написанную на VB, если ты сам не пишешь на VB - это реально ?" ![]() ![]() |
|
Создано: 18 мая 2015 21:30 · Личное сообщение · #19 TryAga1n пишет: А вообще, активировать задизейбленые кнопки - дело не благодарное. Нужно ломать схему регистрации, чтобы программа думала, что зарегана и сама их включала. Редким исключением является так называемая "Демо-версия", которая имеет полный функционал, но не имеет регистрации. Такое встречалось буквально пару раз за несколько лет. Спасибо за помощь. У меня щас цель разобраться в реверсинге . Понять как всё это работает . ![]() |
|
Создано: 18 мая 2015 21:32 · Личное сообщение · #20 Разбирайся, разбирайся. Будут вопросы - смело задавай. Свежей крови давно не хватает ![]() ![]() |
|
Создано: 18 мая 2015 21:54 · Личное сообщение · #21 TryAga1n пишет: Разбирайся, разбирайся. Будут вопросы - смело задавай. Свежей крови давно не хватает Я щас посмотрел разбор крякмисов от касперского , у меня мозг поплыл ![]() Я всегда думал ,что для реверсинга математика не нужна ,а там ещё и для подсчёта кейгена в добавок прогу надо написать ) ![]() |
|
Создано: 18 мая 2015 22:08 · Личное сообщение · #22 |
|
Создано: 18 мая 2015 22:09 · Личное сообщение · #23 |
|
Создано: 18 мая 2015 22:16 · Личное сообщение · #24 |
|
Создано: 18 мая 2015 22:20 · Личное сообщение · #25 |
|
Создано: 18 мая 2015 22:31 · Личное сообщение · #26 |
|
Создано: 18 мая 2015 22:40 · Поправил: plutos · Личное сообщение · #27 |
|
Создано: 18 мая 2015 22:46 · Личное сообщение · #28 deman17051 Наконец то написали ![]() 25 сообщений в такой теме. Качать и тыкать крякми без понимания процесса - не лучший путь, но начинают чаще с него. Прочитай Крис Касперский (Искусство дизассемблирования), пройди Рикардо, Tiga. Учи язык программирования, не скриптовый, и будет счастье. Загляни к Джеффри Рихтеру, когда он на C++ писал. Через 2 года будешь щелкать 80% прог в уме, и до того как их напишут (потому что мало кто читает, изучает, думает. пишут одну и ту же ерунду ежегодно). Как мои крякми (бред полный был ![]() ![]() |
|
Создано: 19 мая 2015 00:24 · Личное сообщение · #29 |
|
Создано: 19 мая 2015 00:53 · Личное сообщение · #30 |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› Крякмис №2 , не совсем понял работу NOP |