Сейчас на форуме: (+7 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Взлом простенькой программы |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 22 мая 2014 09:26 · Поправил: skew · Личное сообщение · #1 Добрый день. вот сижу пишу собственные CrackMe и ломаю их, но вот добрался до такого где пароль генерируется из динамических данных и никаких сообщений не выводит при неправильном вводе. Вопрос в том, как найти тот самый переход где идет проверка на правильность ввода. По сути код программы состоит из 4 строчек. Можете подсказать ? Желательно без использования IDR, так как с ним это слишком просто. Спасибо Программа в аттаче ![]() ![]() |
|
Создано: 22 мая 2014 09:50 · Поправил: ThugboyZ · Личное сообщение · #2 |
|
Создано: 22 мая 2014 10:08 · Личное сообщение · #3 |
|
Создано: 22 мая 2014 10:13 · Поправил: ThugboyZ · Личное сообщение · #4 skew пишет: ну я просто тестирую для себя, от лишней инфы толку мало. но вот как вы это определили, если не трудно можете пояснить ? Использовал декомпилятор IDR.Далее открыл в нем вкладку визуального отображения форм и посмотрел адрес обработчика нажатия кнопки (событие Onclick), потом поставил программный бряк в отладчике и вручную прошелся по коду и следил за изменениями стека. ![]() |
|
Создано: 22 мая 2014 10:19 · Личное сообщение · #5 |
|
Создано: 22 мая 2014 10:20 · Поправил: ThugboyZ · Личное сообщение · #6 |
|
Создано: 22 мая 2014 10:27 · Личное сообщение · #7 |
|
Создано: 22 мая 2014 10:29 · Личное сообщение · #8 У меня для таких случаев есть плагин-трэйсер для odbg2 )) помечает все выполненые инструкции до нажатия проверки серийника, помечает все после, смотрит что изменилось, выводит в лог результат-адреса и помечает hit'ами в окне дизасма для наглядности. в получившихся 235 строк где то переход на false/success. ![]() ![]() |
|
Создано: 22 мая 2014 10:37 · Поправил: ThugboyZ · Личное сообщение · #9 skew пишет: ну так функций же может быть сотни, причем Push EBP не всегда идет началом, а перебирать каждый бряк из тысячи думаю будет долго, или я в чем то ошибаюсь ? Для конкретной кнопки это 0044F1D0 По листингу кода как выше, так и далее видны вызовы функций IsWindowEnabled/IsWindowVisible Логично предположить, что они делают активным и видимым окно другой формы в случае верности всех условий регистрации. ![]() |
|
Создано: 22 мая 2014 10:38 · Личное сообщение · #10 jeep скинь трейсер, по какому принципу он работает и с каким шансом верности? все равно же сторонняя модификация, получается что ли найти вручную точку проверки нельзя? Добавлено спустя 10 минут ThugboyZ прошелся по этим функциям через Ctrl + R вылезла только на одной из них на IsWindowEnabled и то не так близко к нужному месту ![]() |
|
Создано: 22 мая 2014 10:59 · Поправил: ThugboyZ · Личное сообщение · #11 skew пишет: ThugboyZ прошелся по этим функциям через Ctrl + R вылезла только на одной из них на IsWindowEnabled и то не так близко к нужному месту Ок.Разбираем алгоритм работы Вашего кракми.Ввели имя, ввели соответствующий рег код, нажали кнопку.В случае, если рег код верный - становится видимым окно второй формы, возможно и еще доступным. Если перевести на примерный код в синтаксисе delphi, то это выглядит следующим образом: Code:
Единственными отсылками на это являются приведенные мной выше функции. ![]() |
|
Создано: 22 мая 2014 11:06 · Личное сообщение · #12 skew пишет: jeep скинь трейсер, по какому принципу он работает и с каким шансом верности? все равно же сторонняя модификация, получается что ли найти вручную точку проверки нельзя? Напиши свой трейсер ![]() Из нескольких условных переходов методом тыка обнаружен нужный, буквально в несколько кликов Code:
![]() |
|
Создано: 22 мая 2014 11:10 · Личное сообщение · #13 |
|
Создано: 22 мая 2014 11:19 · Поправил: ThugboyZ · Личное сообщение · #14 skew пишет: ThugboyZ ну это я понял, но ведь результат таким образом не был получен Естественно, вспомогательным путем.Декомпиляцией был найден нужный адрес, а результат уже в отладчике.Но ведь я близок к логике работы программы и воссоздал алгоритм генерации рег.номера.Для меня задача выполнена.Код кейгена уже не трудно будет написать, да там всего одна строка кода. ![]() |
|
Создано: 22 мая 2014 11:30 · Поправил: skew · Личное сообщение · #15 |
|
Создано: 22 мая 2014 11:51 · Личное сообщение · #16 |
|
Создано: 22 мая 2014 12:03 · Личное сообщение · #17 Hellspawn ну я про то что IDR который точно указывает на выполняемую функцию уже не поможет. Основная цель понять как найти место проверки если в программе нет прерываний - Message и отсутствует какой либо текст наводящий на пароль, а сам пасс генерируется из динамических данных, которые тоже отображаться сразу не будут Добавлено спустя 2 минуты Hellspawn а почему по вашему с NET проще чем с Delphi? ![]() |
|
Создано: 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 ![]() |
|
Создано: 22 мая 2014 12:22 · Личное сообщение · #19 unknownproject да эта затея была убрать возможность использования IDR, суть моей просьбы изначально не так развивать начали, а ее я пояснил в посте выше. А обфускатор я нашел такой ILProtector, заносит в отдельные DLL все процедуры программы и и шифрует сами DLL, гайдов по взлому новых версий я не нашел, говорят очень напряжно Добавлено спустя 2 минуты unknownproject пишет: Потому что путем декомпиляции того же delphi мы получаем цепочку операндов вместо исходного кода, вызовы функций, переведенные в машинный код, а в случае с нет - целевой код, который можно изменять по своему усмотрению.Это уже практически не декомпиляция, а воссоздание исходного кода. так если проект стоит глобальный и кода на пару десятков тысяч строчек, как по мне проще сломать активацию чем убить кучу времени на написание этой же программы даже путем копирования и вставки кода Добавлено спустя 1 час 55 минут не уж то все надеяться на лучшее , что сторонние проги их всегда спасут ![]() |
|
Создано: 22 мая 2014 15:59 · Личное сообщение · #20 |
|
Создано: 22 мая 2014 16:19 · Личное сообщение · #21 |
|
Создано: 22 мая 2014 16:41 · Личное сообщение · #22 skew, да какие нафиг ольки ломается вообще без отладчика - http://rghost.ru/55595540 ![]() |
|
Создано: 22 мая 2014 16:53 · Личное сообщение · #23 Я просто не вижу смысла обсасывать этот кракми.Я уже выше привел алгоритм, а как он получен - это уже дело каждого.Все исследуют программы по-своему.Смысл взлома кракми - это подобрать верную комбинацию имени-регномера, а как задача максимум - высчитать алгоритм, что уже давно было сделано мной и до чего бы дошел любой, так как он тривиален. ----- TEST YOUR MIGHT ![]() |
|
Создано: 22 мая 2014 16:59 · Личное сообщение · #24 |
|
Создано: 22 мая 2014 21:06 · Личное сообщение · #25 |
|
Создано: 22 мая 2014 22:47 · Личное сообщение · #26 |
|
Создано: 22 мая 2014 23:27 · Личное сообщение · #27 |
|
Создано: 22 мая 2014 23:34 · Личное сообщение · #28 skew Да всё там можно найти и, как вы выражаетесь, вручную. Я когда-то выкладывал доку для другой программы, как это делается. Т.е. как найти обработчик в делфях без декомпиятора. И до меня это тоже уже сто раз обсуждали. Просто раз в пару месяцев приходит на форум человек, который "пишет крякми". И поверьте мне - всем уже просто лень по 10 раз это повторять. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 22 мая 2014 23:39 · Поправил: skew · Личное сообщение · #29 Вот такую же чушь сделал но на NET и на ней обфускатор ![]() Добавлено спустя 2 минуты ARCHANGEL не заметил постов, поздно обновился. Ну так если все это уже обговаривалось прошу прощения за отнятое время, но можно было не парить себе мозг возясь со мной и кинуть ссылку , где это уже кому то пояснили ![]() |
|
Создано: 23 мая 2014 00:08 · Личное сообщение · #30 skew пишет: Вот такую же чушь сделал но на NET и на ней обфускатор ещё можно покрыть сверху VMProtect или StarForce и сказать "о какой я крякмис написал - ломайте теперь" ![]() |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› Взлом простенькой программы |
Эта тема закрыта. Ответы больше не принимаются. |