eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: LoxmatbIj (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› Взлом простенькой программы
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 7.5 (гость)
Статус: Участник

Создано: 22 мая 2014 09:26 · Поправил: skew New!
Цитата · Личное сообщение · #1

Добрый день. вот сижу пишу собственные CrackMe и ломаю их, но вот добрался до такого где пароль генерируется из динамических данных и никаких сообщений не выводит при неправильном вводе. Вопрос в том, как найти тот самый переход где идет проверка на правильность ввода. По сути код программы состоит из 4 строчек. Можете подсказать ? Желательно без использования IDR, так как с ним это слишком просто. Спасибо
Программа в аттаче

{ Атач доступен только для участников форума } - Project2.exe

Ранг: 10.9 (новичок)
Статус: Участник

Создано: 22 мая 2014 09:50 · Поправил: ThugboyZ New!
Цитата · Личное сообщение · #2

Code:
  1. Name: unknownproject
  2. Code: 252unknownFor14unknownproject640

Алго очевиден.

Константа1+первая половина имени+Константа2 (Из имени формы Form1 копируются первые 3 символа) +длина имени+полное имя+Константа3

Только почему Form2 пустая ? Хоть бы что-нибудь информационное добавили

Ранг: 7.5 (гость)
Статус: Участник

Создано: 22 мая 2014 10:08 New!
Цитата · Личное сообщение · #3

ну я просто тестирую для себя, от лишней инфы толку мало.
но вот как вы это определили, если не трудно можете пояснить ?

Ранг: 10.9 (новичок)
Статус: Участник

Создано: 22 мая 2014 10:13 · Поправил: ThugboyZ New!
Цитата · Личное сообщение · #4

skew пишет:
ну я просто тестирую для себя, от лишней инфы толку мало.
но вот как вы это определили, если не трудно можете пояснить ?

Использовал декомпилятор IDR.Далее открыл в нем вкладку визуального отображения форм и посмотрел адрес обработчика нажатия кнопки (событие Onclick), потом поставил программный бряк в отладчике и вручную прошелся по коду и следил за изменениями стека.

Ранг: 7.5 (гость)
Статус: Участник

Создано: 22 мая 2014 10:19 New!
Цитата · Личное сообщение · #5

ну я ж в заголовке написал не юзать IDR ))) с ним это слишком просто, представь что написано не на Delphi а на С++ например, там IDR бессилен и что делать?

Ранг: 10.9 (новичок)
Статус: Участник

Создано: 22 мая 2014 10:20 · Поправил: ThugboyZ New!
Цитата · Личное сообщение · #6

skew пишет:
ну я ж в заголовке написал не юзать IDR ))) с ним это слишком просто, представь что написано не на Delphi а на С++ например, там IDR бессилен и что делать?

Команда Push EBP.Всегда ловлю на ней нажатия кнопок.Собственно она начинает выполнение любой процедуры/функции.

Ранг: 7.5 (гость)
Статус: Участник

Создано: 22 мая 2014 10:27 New!
Цитата · Личное сообщение · #7

ну так функций же может быть сотни, причем Push EBP не всегда идет началом, а перебирать каждый бряк из тысячи думаю будет долго, или я в чем то ошибаюсь ?

Ранг: 4.0 (гость)
Статус: Участник

Создано: 22 мая 2014 10:29 New!
Цитата · Личное сообщение · #8

У меня для таких случаев есть плагин-трэйсер для odbg2 ))
помечает все выполненые инструкции до нажатия проверки серийника, помечает все после, смотрит что изменилось, выводит в лог результат-адреса и помечает hit'ами в окне дизасма для наглядности.
в получившихся 235 строк где то переход на false/success.

{ Атач доступен только для участников форума } - log.txt

Ранг: 10.9 (новичок)
Статус: Участник

Создано: 22 мая 2014 10:37 · Поправил: ThugboyZ New!
Цитата · Личное сообщение · #9

skew пишет:
ну так функций же может быть сотни, причем Push EBP не всегда идет началом, а перебирать каждый бряк из тысячи думаю будет долго, или я в чем то ошибаюсь ?

Для конкретной кнопки это 0044F1D0
По листингу кода как выше, так и далее видны вызовы функций IsWindowEnabled/IsWindowVisible

Логично предположить, что они делают активным и видимым окно другой формы в случае верности всех условий регистрации.

Ранг: 7.5 (гость)
Статус: Участник

Создано: 22 мая 2014 10:38 New!
Цитата · Личное сообщение · #10

jeep скинь трейсер, по какому принципу он работает и с каким шансом верности? все равно же сторонняя модификация, получается что ли найти вручную точку проверки нельзя?

Добавлено спустя 10 минут
ThugboyZ прошелся по этим функциям через Ctrl + R вылезла только на одной из них на IsWindowEnabled и то не так близко к нужному месту

Ранг: 10.9 (новичок)
Статус: Участник

Создано: 22 мая 2014 10:59 · Поправил: ThugboyZ New!
Цитата · Личное сообщение · #11

skew пишет:
ThugboyZ прошелся по этим функциям через Ctrl + R вылезла только на одной из них на IsWindowEnabled и то не так близко к нужному месту

Ок.Разбираем алгоритм работы Вашего кракми.Ввели имя, ввели соответствующий рег код, нажали кнопку.В случае, если рег код верный - становится видимым окно второй формы, возможно и еще доступным.
Если перевести на примерный код в синтаксисе delphi, то это выглядит следующим образом:
Code:
  1. if RegCode=ok then
  2. begin
  3. Form2.Enabled:=True;
  4. Form2.Show;
  5. end
  6. else
  7. exit;

Единственными отсылками на это являются приведенные мной выше функции.

Ранг: 4.0 (гость)
Статус: Участник

Создано: 22 мая 2014 11:06 New!
Цитата · Личное сообщение · #12

skew пишет:
jeep скинь трейсер, по какому принципу он работает и с каким шансом верности? все равно же сторонняя модификация, получается что ли найти вручную точку проверки нельзя?

Напиши свой трейсер На сайте odbg даже заготовка есть trace.cpp. Принцип я обяснил выше.
Из нескольких условных переходов методом тыка обнаружен нужный, буквально в несколько кликов
Code:
  1. 0044F2DC  |. /75 0C         JNZ SHORT 0044F2EA

Ранг: 7.5 (гость)
Статус: Участник

Создано: 22 мая 2014 11:10 New!
Цитата · Личное сообщение · #13

ThugboyZ ну это я понял, но ведь результат таким образом не был получен

Ранг: 10.9 (новичок)
Статус: Участник

Создано: 22 мая 2014 11:19 · Поправил: ThugboyZ New!
Цитата · Личное сообщение · #14

skew пишет:
ThugboyZ ну это я понял, но ведь результат таким образом не был получен

Естественно, вспомогательным путем.Декомпиляцией был найден нужный адрес, а результат уже в отладчике.Но ведь я близок к логике работы программы и воссоздал алгоритм генерации рег.номера.Для меня задача выполнена.Код кейгена уже не трудно будет написать, да там всего одна строка кода.

Ранг: 7.5 (гость)
Статус: Участник

Создано: 22 мая 2014 11:30 · Поправил: skew New!
Цитата · Личное сообщение · #15

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


Ранг: 990.3 (! ! !)
Статус: Модератор
Author of DiE

Создано: 22 мая 2014 11:51 New!
Цитата · Личное сообщение · #16

skew заблуждаетесь, на NET все намного проще. Какова цель топика?

Ранг: 7.5 (гость)
Статус: Участник

Создано: 22 мая 2014 12:03 New!
Цитата · Личное сообщение · #17

Hellspawn ну я про то что IDR который точно указывает на выполняемую функцию уже не поможет. Основная цель понять как найти место проверки если в программе нет прерываний - Message и отсутствует какой либо текст наводящий на пароль, а сам пасс генерируется из динамических данных, которые тоже отображаться сразу не будут

Добавлено спустя 2 минуты
Hellspawn а почему по вашему с NET проще чем с Delphi?

Ранг: 95.7 (постоянный)
Статус: Участник

Создано: 22 мая 2014 12:07 · Поправил: unknownproject New!
Цитата · Личное сообщение · #18

skew пишет:
ну приду домой сделаю 1 в 1 код на C# , но уже декомпилятор не поможет, как тогда быть, нужно как то искать руками. в этом то я и хочу разобраться

А смысл ? В составе Microsoft SDK есть инструменты, необходимые для работы с Net приложениями - NETFX Tools, в тч ILDASM, тем более промежуточный IL-код куда более уязвим.Нет никакого смысла переписывать кракми, если не изменится логика его работы.Даже если Вы и примените обфускацию, то она ничего особо не затруднит.
skew пишет:
Hellspawn а почему по вашему с NET проще чем с Delphi?

Потому что путем декомпиляции того же delphi мы получаем цепочку операндов вместо исходного кода, вызовы функций, переведенные в машинный код, а в случае с нет - целевой код, который можно изменять по своему усмотрению.Это уже практически не декомпиляция, а воссоздание исходного кода.

Ранг: 7.5 (гость)
Статус: Участник

Создано: 22 мая 2014 12:22 New!
Цитата · Личное сообщение · #19

unknownproject да эта затея была убрать возможность использования IDR, суть моей просьбы изначально не так развивать начали, а ее я пояснил в посте выше. А обфускатор я нашел такой ILProtector, заносит в отдельные DLL все процедуры программы и и шифрует сами DLL, гайдов по взлому новых версий я не нашел, говорят очень напряжно

Добавлено спустя 2 минуты
unknownproject пишет:
Потому что путем декомпиляции того же delphi мы получаем цепочку операндов вместо исходного кода, вызовы функций, переведенные в машинный код, а в случае с нет - целевой код, который можно изменять по своему усмотрению.Это уже практически не декомпиляция, а воссоздание исходного кода.


так если проект стоит глобальный и кода на пару десятков тысяч строчек, как по мне проще сломать активацию чем убить кучу времени на написание этой же программы даже путем копирования и вставки кода

Добавлено спустя 1 час 55 минут
не уж то все надеяться на лучшее , что сторонние проги их всегда спасут

Ранг: 95.7 (постоянный)
Статус: Участник

Создано: 22 мая 2014 15:59 New!
Цитата · Личное сообщение · #20

skew пишет:
не уж то все надеяться на лучшее , что сторонние проги их всегда спасут

Как бы это странно ни звучало, но взломать прогу без другой проги невозможно, будь это хоть банальный hex-редактор.

Ранг: 7.5 (гость)
Статус: Участник

Создано: 22 мая 2014 16:19 New!
Цитата · Личное сообщение · #21

unknownproject нее, я имею ввиду найти нужное место чисто через ольку и ничего больше

Ранг: 33.8 (посетитель)
Статус: Участник

Создано: 22 мая 2014 16:41 New!
Цитата · Личное сообщение · #22

skew, да какие нафиг ольки
ломается вообще без отладчика - http://rghost.ru/55595540

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


Ранг: 95.7 (постоянный)
Статус: Участник

Создано: 22 мая 2014 16:53 New!
Цитата · Личное сообщение · #23

Я просто не вижу смысла обсасывать этот кракми.Я уже выше привел алгоритм, а как он получен - это уже дело каждого.Все исследуют программы по-своему.Смысл взлома кракми - это подобрать верную комбинацию имени-регномера, а как задача максимум - высчитать алгоритм, что уже давно было сделано мной и до чего бы дошел любой, так как он тривиален.

Ранг: 617.3 (!)
Статус: Участник

Создано: 22 мая 2014 16:59 New!
Цитата · Личное сообщение · #24

skew
Да хоть ты тресни, а стандартный дельфовый Point-h не учел.
http://youtu.be/EADG-4xD3YM


Ранг: 1288.1 (!!!!)
Статус: Модератор

Создано: 22 мая 2014 21:06 New!
Цитата · Личное сообщение · #25

ThugboyZ пишет:
Name: unknownproject
Code: 252unknownFor14unknownproject640


раздвоение личности?

Ранг: 7.5 (гость)
Статус: Участник

Создано: 22 мая 2014 22:47 New!
Цитата · Личное сообщение · #26

Vovan666 видео личное
unknownproject а этот крекми не несет никакой информации кроме как небольшой учебный материал, который я попытался сломать, но без IDR это не получилось , так как не удалось выйти на событие нажатие клавиши вручную, вот и создал топик

Ранг: 440.8 (мудрец)
Статус: Участник

Создано: 22 мая 2014 23:27 New!
Цитата · Личное сообщение · #27

skew пишет:
так как не удалось выйти на событие нажатие клавиши вручную

ставим Conditional Breakpoint на функцию CallWindowProcA с условием [esp+C]==D
и всё находится без IDR


Ранг: 657.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 22 мая 2014 23:34 New!
Цитата · Личное сообщение · #28

skew
Да всё там можно найти и, как вы выражаетесь, вручную. Я когда-то выкладывал доку для другой программы, как это делается. Т.е. как найти обработчик в делфях без декомпиятора. И до меня это тоже уже сто раз обсуждали. Просто раз в пару месяцев приходит на форум человек, который "пишет крякми". И поверьте мне - всем уже просто лень по 10 раз это повторять.

Ранг: 7.5 (гость)
Статус: Участник

Создано: 22 мая 2014 23:39 · Поправил: skew New!
Цитата · Личное сообщение · #29

Вот такую же чушь сделал но на NET
и на ней обфускатор

{ Атач доступен только для участников форума } - Release.rar

Добавлено спустя 2 минуты
ARCHANGEL не заметил постов, поздно обновился. Ну так если все это уже обговаривалось прошу прощения за отнятое время, но можно было не парить себе мозг возясь со мной и кинуть ссылку , где это уже кому то пояснили

Ранг: 440.8 (мудрец)
Статус: Участник

Создано: 23 мая 2014 00:08 New!
Цитата · Личное сообщение · #30

skew пишет:
Вот такую же чушь сделал но на NET
и на ней обфускатор

ещё можно покрыть сверху VMProtect или StarForce и сказать "о какой я крякмис написал - ломайте теперь"

| Сообщение посчитали полезным: unknownproject, sivorog, TLN, dimka_new

. 1 . 2 . >>
 eXeL@B —› Вопросы новичков —› Взлом простенькой программы
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS