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

 eXeL@B —› Основной форум —› как покрывают быков - обсудим тему?!
. 1 . 2 . 3 . >>
Посл.ответ Сообщение

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

Создано: 08 апреля 2006 16:38
· Личное сообщение · #1

вот один забавный прием взлома.
1) прогоняем программу через трейсер, вводим правильный параль (не окончена дата триала)
2) прогоняем программу через трейсер, вводим _не_правильный параль (окончена дата триала)
3) получаем два лога трейсера, которые в чем-то схожи, а в чем-то различны

методика взлома сводится к поиску различий:

* решение для "богатых"
===================
берем любой coverage-инструмент
(например, плагин для ида, www.hexblog.com/2006/03/coverage_analyzer.html)
или numega coverage или другие инструменты для измерения покрытия.
сравниваем покрытие до и после оконочания триала,
делаем выводы, мотаем на ус.

* решение для "бедных"
==================
берем ollybdg, грузим программу (допустим demo-simple.exe),
говорим debug -> open or clear trace,
view -> run trace;
F10 -> log to file;
CTRL-11,
и дождавшись "enter password" вводим _не_ правильный прароль типа fuck off

теперь нажимаем Ctrl-F2 для рестарта дебагера,
говорим view -> run trace;
F10 -> clore file
F10 -> log to file;
CTRL-11,
и дождавшись "enter password" вводим правильный прароль типа nezumi
говорим view -> run trace;
F10 -> clore file

ок. мы получили два файла,
пусть это будет 1.log и 2.log.

* как сравнивать файлы
==================
берем утилиту windiff (входит в ms vc и еще хрен знает куда),
выбираем файлы, говорим [expand]
и жем F8 для поиска изменнений. вот, смотрите, что мы нашли:
(см. аттач). это и есть тот условный переход, который рулит ;)))


в отсуствии windiff (ну что за срань?! юниховый diff намного лучше)
с некоторой черезжопицей файлы можно сравнивтаь и FC.EXE.

а вообеще, но "науке" надо написать несложную программу,
которая берет EIP адреса, пройдеденные файлови ложит их в базу
(для ускорения поиска можно использовать двоичное дерево),
а затем показывает какие адреса _НЕ_ совпадают в обоих файлах.

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

критика, замечания, дополнения - только приветствуются





ff2b_08.04.2006_CRACKLAB.rU.tgz




Ранг: 260.3 (наставник), 2thx
Активность: 0.120
Статус: Участник
PPC-PROTECT author

Создано: 08 апреля 2006 16:43
· Личное сообщение · #2

топег жжот =)

-----
Пиво, сиськи, транс




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

Создано: 08 апреля 2006 16:53
· Личное сообщение · #3

а по русски? я сделал, что-то не так?!
надеюсь, это не баян...



Ранг: 60.4 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 08 апреля 2006 16:58
· Личное сообщение · #4

elraton пишет:
1) прогоняем программу через трейсер, вводим правильный параль (не окончена дата триала)


А как мы узнаем правильный пароль, если мы прогу только начали ломать?



Ранг: 79.6 (постоянный), 2thx
Активность: 0.080
Статус: Участник
алХимик

Создано: 08 апреля 2006 17:02
· Личное сообщение · #5

феназепам до добра не доведет... ты б его пивком чтоль запивал

-----
Все говорят что мы вместе. Но не многие знают в каком.





Ранг: 104.1 (ветеран)
Активность: 0.070
Статус: Участник
искатель истЕны

Создано: 08 апреля 2006 17:06
· Личное сообщение · #6

elraton такой вариант прокатит только в случае триальных прог. типа 30 дней.



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

Создано: 08 апреля 2006 17:11
· Личное сообщение · #7

Vedrus
1] я там не только про пароль говорил, но и про окончания триала ;)
2] правильный пароль можно вытащить из осла ;) а потом отломать его проверку напрочь

*** ХАКЕРАМ ************************************************
*** в основном это, конечно, на триальные защиты расчитано.
*** пароль использовался в качестве демонстрационного приммера
*** я просто хотел показать, что сравнение "трасс" и "покрытия"
*** зачастую облегчает взлом, особенно если "пароль" в скрытом
*** виде записан на каком-нибудь носителе, например CD-ROM,
*** тогда сравнивания трассы легального диска и его "копии"
*** мы можем найти с какого момента программа идет не туда ;)


#### ЗАЩИТНИКАМ ################################
### чтобы вас было сложнее ломать, проверки должны идти
### в случайное время из случайных мест, тогда этот метод лажает ;)
### только меня никто не слушает ;))


-= ALEX =-
так я не понял, нарушил ли я правила и если да, то какие?!




Ранг: 260.3 (наставник), 2thx
Активность: 0.120
Статус: Участник
PPC-PROTECT author

Создано: 08 апреля 2006 17:14
· Личное сообщение · #8

elraton да че ты сразу то нарушил ) просто название топика прикольное)) и чето никак с темой не связано врооде ...

-----
Пиво, сиськи, транс




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

Создано: 08 апреля 2006 17:14
· Личное сообщение · #9

SeDoYHg
галопередидол еще хуже, но что делать, если я ему умом ;(
глюки конкретные. звуки, звучающие из ниоткуда, птицы, улеюащие в никуда...



Ранг: 60.4 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 08 апреля 2006 17:16
· Личное сообщение · #10

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



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

Создано: 08 апреля 2006 17:17
· Личное сообщение · #11

-= ALEX =-
coverage - _МОЩНЫЙ_ инструмент взлома,
если у нас есть два прогона программы,
в одном из которых она еще работает
(не кончился триал, вставлен ключевой диск...),
а в другом уже нет....

coverage - переводится как "покрытие",
ну а под пирацетам (который строит новые ассоциации ;_)
у меня покрытие ассоцируется с быками ;_)
точнее с телками ;_)



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 08 апреля 2006 17:19
· Личное сообщение · #12

elraton
ноотропил(пирацетам) постоянно принимать вредно ;)



Ранг: 79.6 (постоянный), 2thx
Активность: 0.080
Статус: Участник
алХимик

Создано: 08 апреля 2006 17:19 · Поправил: SeDoYHg
· Личное сообщение · #13

elraton

Я одного понять не могу, если у нас есть правильный ключик, зачем нам патчить? Да и если трейсить прожку в 500 мб, быстрее забрутить )

/правка/
Гы Vedrus опередил меня =)

-----
Все говорят что мы вместе. Но не многие знают в каком.




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

Создано: 08 апреля 2006 17:20
· Личное сообщение · #14

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

*** очень многие программы проверяют пароль из нескольких мест,
*** и потому стандартные приемы взлома не срабатывают, а покрытие
*** в этом случае _самое_то__



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

Создано: 08 апреля 2006 17:25
· Личное сообщение · #15

Asterix
я в курсе, но я ж не просто так на него подсел.
иначе воооще работать не могу...

SeDoYHg
еще раз "ключик" был дан для примера, ну что вы на нем зациклились.
пароль необязательно вводится с клавы (это лишь для упрощения),
он может быть считан с носителя "хитрым методом" или путем привязки
к оборудованию...

блин... это просто я свои мысли выяснить не могу,
потому что сейчас под препаратом, голова как у винни-пуха.
лучше давайте обсудим сам метод ;)




Ранг: 251.8 (наставник), 17thx
Активность: 0.120
Статус: Участник
Seeker

Создано: 08 апреля 2006 17:41
· Личное сообщение · #16

elraton
Хм.. А этот плаг под 4.9 IDA рекомпилить? благо сырцы есть?

-----
DREAMS CALL US




Ранг: 79.6 (постоянный), 2thx
Активность: 0.080
Статус: Участник
алХимик

Создано: 08 апреля 2006 17:50 · Поправил: SeDoYHg
· Личное сообщение · #17

elraton

Ну как свои мысли прояснишь, так приходи ...


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

Хотя прога может сделать еще одну пометку чтоб вообще не запускаться по окончанию триала, и тогда измениться её работа. Вариантов много, так что, по старинке верней.

-----
Все говорят что мы вместе. Но не многие знают в каком.





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

Создано: 08 апреля 2006 17:52
· Личное сообщение · #18

elraton пишет:
мыщъх пользуется им уже давно,
но не видел, чтобы он был где-то описан, вот и решил описать.

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



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 08 апреля 2006 17:59
· Личное сообщение · #19

Как подопытного кролика можно использовать реальную прогу,
например IDA Pro DEMO, там на старте как раз проверка триала ;)




Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 08 апреля 2006 19:03
· Личное сообщение · #20

elraton

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

-----
have a nice day





Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 08 апреля 2006 19:12
· Личное сообщение · #21

Есть еще один способ локализовать место проверки, введя два неправильных ключа разной длинны. В логах будет различие только в том месте где происходят определенные манипуляции с ним.
 

-----
have a nice day




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

Создано: 08 апреля 2006 19:20
· Личное сообщение · #22

SeDoYHg
> Хотя прога может сделать еще одну пометку чтоб вообще не запускаться по окончанию триала,
> и тогда измениться её работа. Вариантов много, так что, по старинке верней.
^^^^^^^^^^^^^^^^^^^^^
вот на это я и налегаю ;)
вот на это я и упирраю ;)

_найти_РАЗНИЦУ_в_трассах_прогонов_программы_
вот очень грубое объяснение:

1:if (check_user_valid())
2:{
3:go_to_work();
4:}
5:else
6:{
7:fuck_off_and_exit();
8}

инструмент для изменения покрытия (неважно какой)
покажет, что в случае "защита ок" покрытыми будут строки 1-4,
а строки 5-8 останутся _НЕПОКРЫТЫМИ_

в случае, когда "защита не ок", строки 2-4 _НЕ_БУДУТ_ покрыты,
а покрытыми будут строки 5-8!!!

то есть инструмент для измерения покрытия покажает _изменения_
в двух прогонах. и чем сложее и навореченнее алгорити защиты,
(сто проверок в десяти местах), тем полезнее покрытие!!!

методы "по старинке" испытывают большие трудности с поиском
_всех_ проверок. кстати, когда-то давным-давно, когда я еще
не знал кто такой ильфак, а ида работа только под дос,
у меня были две версии старая (с ключом) и новая (без ключа),
именно покрытие позволило установить общий принцип
как ида реалигрирует на приуствиие/отсуствие ключа
и его валидность...
после чего новую верисю было ломать намного проще....

именно покрытие позволяет обнаружить защитный код!!!


all
всем, кто говорит "если у нас есть ключ...."
если у нас есть ключ, то предложенная методика позволяет
быстро локализовать процедуру проверки и либо написать
свой кей-ген либо выломать ее к чертовой матери...


особое внимание обращают на то, что я не упираю на универсальность.
просто _еще_один_ метод взлома в копилку (для тех кто его не знал),
иногда он оказывается эффективние всех остальных...

кстати, не помешало бы создать что-то вроде faq
"классические методы взлома в примерах" ;)



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

Создано: 08 апреля 2006 19:25
· Личное сообщение · #23

Nimnul
# Есть еще один способ локализовать место проверки, введя два неправильных ключа
# разной длинны. В логах будет различие только в том месте где происходят определенные
# манипуляции с ним.
не согласен. то есть согласен, но....
если ключи предварительно копируются в лок. переменные,
в логах _уже_ будут изменения, которые к защите никак не относятся.
я пробовал эту методу.... в демонстрационных "краяк-ми" она работает на ура,
но вот в современных программах...

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




Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 08 апреля 2006 19:28
· Личное сообщение · #24

elraton пишет:

просто _еще_один_ метод взлома в копилку


Зачем ты оправдываешься? Кто не оценил твое предложение это их проблемы, лично для меня это полезный топик из многих неполезных.
 

-----
have a nice day




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

Создано: 08 апреля 2006 19:30
· Личное сообщение · #25

Nimnul
да у меня это.... комплекс неполноценности...




Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 08 апреля 2006 19:41
· Личное сообщение · #26

elraton пишет:

если ключи предварительно копируются в лок. переменные,
в логах _уже_ будут изменения, которые к защите никак не относятся.


Почему это? Они будут копирываться в локальные переменные в обоих случаях, различие будет лишь в циклах обработки, принцип ArtMoney рулит

сейчас сяду писать фак

Лучше напиши плагин к ольке
 

-----
have a nice day





Ранг: 536.4 (!), 171thx
Активность: 0.660.13
Статус: Администратор
Создатель CRACKL@B

Создано: 08 апреля 2006 19:41
· Личное сообщение · #27

Я когда ещё только начинал заниматься крэкерством разработал такой мега-метод, вот так я рассуждал тогда:
Так как вся регистрация в итоге причется в jz/jnz, почему бы не просканить весь exe на поиск 74h и пропатчить каждое найденное место на 75h...ну получится там штук 100 экзешников разных на выходе и надо просто их будет все по очереди запустить и проверить какой сломался правильно.

-----
Всем не угодишь





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

Создано: 08 апреля 2006 19:50 · Поправил: Hellspawn
· Личное сообщение · #28

Bad_guy
у меня пару лет назад были подобные мысли
может не много не в тему, писал я как то скриптик для олли (дабы изучить ODbgScript)
понадобилось мне отследить все обращения к одной комманде...
(find reference не помогало...) ну вот и написал для своего использования...
+там есть неск. полезных фич... может кому будет полезно...

надо поставить бряк и не много помучить прогу, в папке появится лог...

46a9_08.04.2006_CRACKLAB.rU.tgz

-----
[nice coder and reverser]





Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 08 апреля 2006 19:57 · Поправил: Nimnul
· Личное сообщение · #29

Bad_guy

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

-----
have a nice day




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

Создано: 08 апреля 2006 21:54
· Личное сообщение · #30

Nimnul
не, мыщъх хочет скрипт к иде.

план такой:
насущим травы,
надербаним грибов
и будем кааайфовать....

немного более конкретно:
soft-ice или olly выдает трассу программы,
затем другая программа запоминает все адреса, которые были "покрыты"
и передает их скрипту на ида-си, который показывает трассу выполнения
в том и в другом случае.


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


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