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

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

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

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

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

6cf5_22.05.2014_EXELAB.rU.tgz - Project2.exe



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

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

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

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

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

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



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

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

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



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

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

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

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



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

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

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



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

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

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

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



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

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

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



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

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

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

faf9_22.05.2014_EXELAB.rU.tgz - log.txt



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

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

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

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

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



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

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

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

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



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 22 мая 2014 10:59 · Поправил: ThugboyZ
· Личное сообщение · #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 (гость), 2thx
Активность: 0.010
Статус: Участник

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

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

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




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

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

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



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

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

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

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



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

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

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




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

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

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

-----
[nice coder and reverser]




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

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

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

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



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

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

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

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

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

-----
TEST YOUR MIGHT




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

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

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

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


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

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



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

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

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

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

-----
TEST YOUR MIGHT




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

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

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



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

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

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

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

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

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

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

-----
TEST YOUR MIGHT




Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

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

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




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

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

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


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



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

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

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



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

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

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

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




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

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

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

-----
Stuck to the plan, always think that we would stand up, never ran.




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

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

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

632f_22.05.2014_EXELAB.rU.tgz - Release.rar

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



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

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

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

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

| Сообщение посчитали полезным: unknownproject, sivorog, TLN, dimka_new
. 1 . 2 . >>
 eXeL@B —› Вопросы новичков —› Взлом простенькой программы
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати