Сейчас на форуме: igorcauret, Rio (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Крякмис №2 , не совсем понял работу NOP
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 0.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 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 там как то попонятнее было.



Ранг: 60.6 (постоянный), 87thx
Активность: 0.060
Статус: Участник

Создано: 17 мая 2015 16:21
· Личное сообщение · #2

heshurg пишет:
Зачем мы ставим брейкпоинты

Чтобы понять, какой из вызовов rtcMsgBox срабатывает при появлении NAG

heshurg пишет:
И почему именно число 909090909090 ?

Потому что http://en.wikipedia.org/wiki/NOP . Заменяем инструкцию call многократным повторением инструкции NOP.

Знаешь байку про замену продукции Apple на почте кирпичами и прочими вещами, чтобы по весу совпадало? Та же идея

| Сообщение посчитали полезным: DenCoder

Ранг: 0.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 17 мая 2015 16:55
· Личное сообщение · #3

Kaimi пишет:
Чтобы понять, какой из вызовов rtcMsgBox срабатывает при появлении NAG


Так там несколько сразу поставилось . Я на всех вывел число 909090909090 . Нага осталась ( Что то не так видимо сделал .

Я так понял число 909090909090 просто взято от балды, просто что бы по весу было такое же как и при начальном значении ?



Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 17 мая 2015 17:00 · Поправил: dosprog
· Личное сообщение · #4

Код 90h эквивалентен инструкции <xchg eax,eax>. То есть не делать ничего. Синоним - NOP - <no operation>





Ранг: 0.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 17 мая 2015 17:09 · Поправил: heshurg
· Личное сообщение · #5

dosprog пишет:
Код 90h эквивалентен инструкции <mov eax,eax>. То есть не делать ничего. Синоним - NOP - <no operation>

Спасибо понял

Вообщем что я делаю в Ollydbg . Нахожу строку 0040238D . Нажимаю Assemble . Вместо FF151C104000 пишу 909090909090 . Сворачиваю Ollydbg . Открываю Крякмис. Наг не исчез что не так делаю ?



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 17 мая 2015 17:28 · Поправил: TryAga1n
· Личное сообщение · #6

Вместо Assemble, жми Edit


Либо когда выбираешь Assemble, пиши nop и не забудь поставить галочку на Fill with NOP's
-
А, у тебя изменения не сохраняются...как сказали ниже, изменения ты проводишь в памяти процесса, чтобы сохранить их на диск, нужно сделать следующее:

А в открывшемся окне дампа, еще раз правой кнопкой и




Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 17 мая 2015 17:28
· Личное сообщение · #7

Ты не патчишь бинарь, ты патчишь только образ бинаря в памяти. Соответственно, при перезапуске все твои патчи перетираются.

-----
старый пень


| Сообщение посчитали полезным: heshurg

Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 17 мая 2015 21:51 · Поправил: unknownproject
· Личное сообщение · #8

dosprog пишет:
Код 90h эквивалентен инструкции <xchg eax,eax>

Лучше бы вы объяснили парню, что ноп не выполняет ничего, чем расписывали про зеркальные инструкции.

heshurg пишет:
Зачем мы ставим брейкпоинты и что такой за NOPить вызов. И почему именно число 909090909090 ?

Брейкпоинт - точка прерывания, место, на котором программа будет остановлена по необходимости, например после каких-либо вычислений.Так как NOP занимает всего один байт, а CALL пять, то, чтобы не нарушить целостность кода, делается патч = кол-ву байт заменяемой инструкции.Это справедливо не только для ноп, но и для всех остальных инструкций.

-----
TEST YOUR MIGHT




Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 17 мая 2015 22:28 · Поправил: tihiy_grom
· Личное сообщение · #9

unknownproject пишет:
Лучше бы вы объяснили парню, что ноп не выполняет ничего, чем расписывали про зеркальные инструкции.

Лучше бы парень почитал топик "введение в крэкинг с нуля"

а если есть совсем большое желание, то можно ещё объяснить что 909090909090 - это не просто 12 циферок, а АЖ ЦЕЛЫХ 6 NOP'ОВ ПОДРЯД !!!

| Сообщение посчитали полезным: plutos

Ранг: 0.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 18 мая 2015 13:23 · Поправил: heshurg
· Личное сообщение · #10

Ребят топик читал . Спасибо за ответы всё получилось . Но есть ещё проблемка по редактору WinHex .

Там в крякмисе нужно просто активировать кнопку и всё. Задание я сделал , но логику разъяснений опять же не понял . Открываем WinHex , поиском ищем слово Enable Me , нашли побитово это слово в HEX коде.
Но как он нашёл , побитово свойства кнопки. После Enable ME , стоят пробелы , значки непонятные . Тыкните носом где про это всё прочитать



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 18 мая 2015 14:26
· Личное сообщение · #11

Формат хранения форм в VB и Delphi, а так же BCB похож.
Что-то вроде:
1) Длина названия класса компонента в байтах
2) Название класса компонента
3) Длина 1го поля свойств компонента
4) Содержимое 1го поля
5) Длина 2го поля
6) ...

Приведу пример с Delphi, ибо VB нету:
Имеем такую кнопку:

Значит разглядывая ее через Hex-редактор, получится, что свойство кнопки Enabled, отвечающее за активность, будет иметь длину 8 байт(само название)+1 байт(состояние).

По поводу пробелов и значков непонятных, это не пробелы и значки. Ты смотришь вправо, а нужно смотреть налево, на байты. В текстовом виде они представляют полную ахинею, а в виде данных, используемых программой они представляют четкую структуру.

| Сообщение посчитали полезным: heshurg

Ранг: 0.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 18 мая 2015 15:20
· Личное сообщение · #12

TryAga1n пишет:
Значит разглядывая ее через Hex-редактор, получится, что свойство кнопки Enabled, отвечающее за активность, будет иметь длину 8 байт(само название)+1 байт(состояние).

Спасибо огромное за разъяснение. Скажите а всегда состояние ровно 1 байт ?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 18 мая 2015 16:24
· Личное сообщение · #13

heshurg потому что тип boolean занимает в Delphi 1 байт

-----
[nice coder and reverser]


| Сообщение посчитали полезным: heshurg, Rainbow


Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 18 мая 2015 18:03 · Поправил: Rainbow
· Личное сообщение · #14

Hellspawn пишет:
heshurg потому что тип boolean занимает в Delphi 1 байт


Сэкономили мля... Булевый dword для delphi в реалиях говнокодеров и с учетом "особенностей строения PE" видимо непозволительная роскошь Иначе произойдет image overflow xDDDDD




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 18 мая 2015 18:10
· Личное сообщение · #15

Rainbow ну не важно как так получилось) их там аж 4

Boolean - 1, ByteBool - 1, WordBool - 2, LongBool - 4



-----
[nice coder and reverser]




Ранг: 0.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 18 мая 2015 20:28
· Личное сообщение · #16

Хорошо ,а если мы не знаем языка программирования. Перед нами только HEX код , как мы найдём свойства кнопки ? Если даже надписи не будет "Enable me" Просто пустая кнопка которую надо активировать



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 18 мая 2015 20:40 · Поправил: TryAga1n
· Личное сообщение · #17

heshurg пишет:
если мы не знаем языка программирования

То мы берем PEiD и смотрим, либо открываем файл в отладчике и видим на чем написано приложение.
heshurg пишет:
Просто пустая кнопка которую надо активировать

Много разных вариантов, например бряк на EnableWindow или например инлайним код
push 1
push <ButtonID>
call EnableWindow

-

А вообще, активировать задизейбленые кнопки - дело не благодарное. Нужно ломать схему регистрации, чтобы программа думала, что зарегана и сама их включала. Редким исключением является так называемая "Демо-версия", которая имеет полный функционал, но не имеет регистрации. Такое встречалось буквально пару раз за несколько лет.



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 18 мая 2015 21:20
· Личное сообщение · #18

heshurg пишет:
Хорошо ,а если мы не знаем языка программирования. Перед нами только HEX код , как мы найдём свойства кнопки ? Если даже надписи не будет "Enable me" Просто пустая кнопка которую надо активировать

Вопрос из разряда "а сломать прогу, написанную на VB, если ты сам не пишешь на VB - это реально ?"



Ранг: 0.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 18 мая 2015 21:30
· Личное сообщение · #19

TryAga1n пишет:
А вообще, активировать задизейбленые кнопки - дело не благодарное. Нужно ломать схему регистрации, чтобы программа думала, что зарегана и сама их включала. Редким исключением является так называемая "Демо-версия", которая имеет полный функционал, но не имеет регистрации. Такое встречалось буквально пару раз за несколько лет.

Спасибо за помощь. У меня щас цель разобраться в реверсинге . Понять как всё это работает .



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 18 мая 2015 21:32
· Личное сообщение · #20

Разбирайся, разбирайся. Будут вопросы - смело задавай. Свежей крови давно не хватает

| Сообщение посчитали полезным: Rainbow

Ранг: 0.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 18 мая 2015 21:54
· Личное сообщение · #21

TryAga1n пишет:
Разбирайся, разбирайся. Будут вопросы - смело задавай. Свежей крови давно не хватает


Я щас посмотрел разбор крякмисов от касперского , у меня мозг поплыл от 2014 года конкурс был

Я всегда думал ,что для реверсинга математика не нужна ,а там ещё и для подсчёта кейгена в добавок прогу надо написать )




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 18 мая 2015 22:08
· Личное сообщение · #22

heshurg пишет:
Я всегда думал ,что для реверсинга математика не нужна ,а там ещё и для подсчёта кейгена в добавок прогу надо написать )


В этом деле только в совокупности матчасть+находчивость+усидчивость дают результат. У многих тупо проблема в 3м



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 18 мая 2015 22:09
· Личное сообщение · #23

Пока у тебя нет базы, даже не заморачивайся по поводу конкурсных крякмисов. Выше головы не прыгнешь, нужно начинать с малого.



Ранг: 0.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 18 мая 2015 22:16
· Личное сообщение · #24

TryAga1n пишет:
Пока у тебя нет базы, даже не заморачивайся по поводу конкурсных крякмисов. Выше головы не прыгнешь, нужно начинать с малого.

Можешь посоветовать базу для начинающего ? Инфы очень много , с чего начать не понимаю.



Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 18 мая 2015 22:20
· Личное сообщение · #25

heshurg http://www.crackmes.de/



Ранг: -0.3 (гость), 6thx
Активность: 0.010
Статус: Участник

Создано: 18 мая 2015 22:31
· Личное сообщение · #26

советую тебе прочитать статью навахова Рикардо Нарвахи
«Введение в крэкинг с помощью OllyDbg» там все путево описано




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 18 мая 2015 22:40 · Поправил: plutos
· Личное сообщение · #27

heshurg пишет:
Можешь посоветовать базу для начинающего ?


tihiy_grom пишет:
Лучше бы парень почитал топик "введение в крэкинг с нуля"


Тебе ж уже посоветовали с чего начинать, что еще не ясно?

-----
Give me a HANDLE and I will move the Earth.




Ранг: 46.8 (посетитель), 20thx
Активность: 0.040
Статус: Участник

Создано: 18 мая 2015 22:46
· Личное сообщение · #28

deman17051

Наконец то написали
25 сообщений в такой теме.

Качать и тыкать крякми без понимания процесса - не лучший путь, но начинают чаще с него.
Прочитай Крис Касперский (Искусство дизассемблирования), пройди Рикардо, Tiga.

Учи язык программирования, не скриптовый, и будет счастье.
Загляни к Джеффри Рихтеру, когда он на C++ писал.

Через 2 года будешь щелкать 80% прог в уме, и до того как их напишут (потому что мало кто читает, изучает, думает. пишут одну и ту же ерунду ежегодно). Как мои крякми (бред полный был , и многих других, если искать сообщения давности более 1000 дней.




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 19 мая 2015 00:24
· Личное сообщение · #29

plutos пишет:
что еще не ясно?

Человеку не хватает общения. При чём он привык так общаться. Вот ему бы на конференцию

-----
IZ.RU





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 19 мая 2015 00:53
· Личное сообщение · #30

heshurg пишет:
Выполнил задания Fant0ma там как то попонятнее было.

Все даже я не выполнил, а ты ещё после них спрашиваешь про нопы)

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh



. 1 . 2 . >>
 eXeL@B —› Вопросы новичков —› Крякмис №2 , не совсем понял работу NOP
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати