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

 eXeL@B —› Основной форум —› Статья SafeDisk 4.6
. 1 . 2 . >>
Посл.ответ Сообщение


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

Создано: 26 июля 2007 11:54
· Личное сообщение · #1

Вот распаковав этот протектор решил написать свою вторую статью. Прежде всего я хотел бы услышать мнения по ней, а также неточности, ошибки. Сам прот снимал с игры Цивилизация 4
Вот ссылка: rapidshare.com/files/45119414/SD.rar.html




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

Создано: 26 июля 2007 12:21
· Личное сообщение · #2

Мощная статья. Сколько по времени занял разбор протектора и написание тутора?



Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 26 июля 2007 13:25
· Личное сообщение · #3

Отличная статья, респект автору, давно не читывал подобных туторов

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels





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

Создано: 26 июля 2007 13:28
· Личное сообщение · #4

На полный разбор ушло две недели.




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 26 июля 2007 14:06
· Личное сообщение · #5

VaZeR
Честно говоря я временами думал что мозг сейчас закипит
Статья тянет на курсовую работу по объему информации. Так что, однозначно зачет!
имхо, теперь нужно также подробно разобрать что нить еще, а потом и книгу издать (как Касперски).

-----
Nulla aetas ad discendum sera




Ранг: 221.3 (наставник), 135thx
Активность: 0.190.07
Статус: Участник

Создано: 26 июля 2007 14:13
· Личное сообщение · #6

Flint пишет:
теперь нужно также подробно разобрать что нить еще

Ога, СтарФорс нопремер
Flint пишет:
а потом и книгу издать (как Касперски)

Лучше в электронном варианте, на общий доступ

-----
xchg dword [eax], eax





Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 26 июля 2007 14:36
· Личное сообщение · #7

Кто-нибудь может переложить статью в другое место,а то эта долбанная Рапида не хочет файл отдавать.
Заценить охота

-----
the Power of Reversing team





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

Создано: 26 июля 2007 14:41
· Личное сообщение · #8

Для меня DillerInc твоё мнение, наверное, самое ценое так как ты ужё достаточно давно занимаешся SafeDisk'ом. И знаешь о нём достаточно много




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 26 июля 2007 15:01
· Личное сообщение · #9

stream.ifolder.ru/2798211



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

Создано: 26 июля 2007 15:25
· Личное сообщение · #10

VaZeR
А первую статью можно заценить?




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

Создано: 26 июля 2007 16:01 · Поправил: VaZeR
· Личное сообщение · #11

buddy А первая моя статья ужё давно здесь. Но она не имеет отношения к распаковке. Это Взлом WinRar 3.6.




Ранг: 106.6 (ветеран)
Активность: 0.10
Статус: Участник

Создано: 26 июля 2007 16:01 · Поправил: VAD87
· Личное сообщение · #12

buddy пишет:
А первую статью можно заценить?

первая статья здесь в RAR статьях находится, там про активацию электронной подписи в WinRar, мне та статья понравилась.
VaZeR, эта статья покруче первой будет ;) Имхо зач0т, пиши исчо и хоть изредка появляйся в ирк ;)
Хех, сам вазер на 5сек. опередил меня с ответом))




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

Создано: 26 июля 2007 16:03
· Личное сообщение · #13

VAD87 я совсем тиму забросил. Всё времени нет



Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 26 июля 2007 16:39
· Личное сообщение · #14

VAD87 пишет:
там про активацию электронной подписи в WinRar

А лицензионным RAR'ом открывать архивы с подписью сделанной ломанным, таким образом как в статье, RAR'ом пробовал ?
Имхо деблэклистер рулит

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels





Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 26 июля 2007 17:25
· Личное сообщение · #15

Снял прот - молоток. Но вот за статью мега респект. Такого мало. На русском языке и не в стиле "Делай как я нах". Молодец, пиши еще.

-----
Researcher





Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 26 июля 2007 19:05
· Личное сообщение · #16

VaZeR
Ну вот и я.
Спасибо HoBleen'у за ссылку.

Статья действительно получилась довольно мощная.И по охваченному материалу,и по глубине исследования.
Я бы хотел остановится на некоторых моментах.Итак по-порядку:

1. Мне понравилось,что была затронута тема ring0-антиотладки.Я сам её не так давно поборол.Только мне не очень нравится твоя реализация.Ты предлагаешь патчить условные переходы в то время,как это всё можно сделать гораздо элегантнее

Кстати,между делом,важные процедуры,которые ответственны за эту антиотладку не только сильно обфусцированы,но и шифруются/дешифруются каждый раз при входе/выходе.Но прикол состоит в том,что,если пропатчить такую процедуру,то патч после зашифровки/дешифровки всё равно остаётся.

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

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

2. Наконец-то кто-то преподнёс альтернативный способ восстановления наномитов,надо будет обязательно проверить.Потому как способ,описываемый mr_magico в его статье про третий SafeDisc,имеет явные недостатки.Так что если что,то я как-нибудь с тобой проконсультируюсь ещё на эту тему,если ты не против

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

Сколько я ни встречал т.н. LongJumps в различных играх,защищённых SD, -- все шли с шестым мусорным байтом и преобразовывались в команду CALL [dword], т.е. вызов какого-нибудь импорта.

mr_magico как-то в статье про второй SD описывал код восстановления импорта,который вызывается через регистры.Я скажу честно: я никогда не пытался восстанавливать этот момент,и никогда из-за этого не возникало проблем.

Моё мнение что т.н. эмулируемые команды -- это есть ни что иное как SDAPI 1.
Только встречаются они обычно в очень простой форме,т.е. восстанавливают сами себя.Этих самых команд JMP EAX обычно две.Одна действительно используется,а вторая это как рудимент от сильной вариации SDAPI 1.
Вы где-нибудь видели NoCD к игре The Sims 2(кроме того выкидыша от команды Money,где они просто как-то пропатчили протектор,не снимая его)??Так вот в этой игре используется механизм SDAPI 1 во всей красе.Однако мне всё же удалось его побороть и у меня есть распакованный файл Sims2.

4. Сразу хочется задать немного несуразный вопрос: ты читал до написания своей статьи какие-то другие материаты по SDAPI 2??Фразы у тебя некоторые уж больно похожи на мои -- если что,то я ни в коем случае не против подобного

Массивы,которые использует протектор и которые находятся в секции данных,восстанавливаются значительно проще.Но с другой стороны,это по-любому тебе на пользу,что ты копнул протектор в этом направлении.Если хочешь знать,как они восстанавливаются проще,то смотри мою статью про SDAPI 2 тут в RAR-статьях и смотри исходник прилагающийся к ней.Там даже есть два варианта этих массивов -- зависит от версии протектора.

Далее в версии 4.60 отладочные обработчики присутствуют всегда.Их нет в версиях 4.50, 4.01 и наверно каких-то ещё,которых я не встречал.Отсутствие обработчиков усложняет снятие протектора в разы,но тем не менее это реально сделать.Я снимал протектор с The Godfather (4.50), а также с некоторых игр линейки вторых Симов (4.01).Это местами довольно муторно,но возможно.
Кстати,в версии протектора 4.70 обработчики есть,просто они немного изменены,но это уже не играет особого значения,раз они есть.

Фух,вроде всё.
И напоследок -- нет такого слова ложим -- есть слово кладём.


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

-----
the Power of Reversing team





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

Создано: 26 июля 2007 19:53
· Личное сообщение · #17

Большое спасибо DillerInc за ответ.
1. Настёт антиотладки возможно твой вариант легче надо будёт поиследовать, но это ужё наверное как то в другой статье опишу
2. Мой способ востановления наномитов намного легче чем у МАГИКА, он если не ошибаюсь ишёт наномиты в секции кода программы и таким образом восстанавливает, а это нудное занятие. Если нужна помошь то готов помочь всегда.
3. Насчёт эмулированых опкодов, то что они это SDAPI v1, возможно так оно и есть. Второй JMP EAX у меня тоже есть, только нерабочий. Насчёт сильной версии SDAPI v1 надо будет посмотреть. Только у меня на Sims 2 Старфорс.
4. Твою статью про SDAPI v2 читал поэтому и похожи Можно конечно восстановить массивы и по твойму, но мне проше написать скрипт.
Насчёт слова ложим - исправлю



Ранг: 221.3 (наставник), 135thx
Активность: 0.190.07
Статус: Участник

Создано: 26 июля 2007 20:09
· Личное сообщение · #18

VaZeR
скоро новую статью ждать?

-----
xchg dword [eax], eax





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

Создано: 26 июля 2007 20:17
· Личное сообщение · #19

v0id2k если найду достойную игру то да.
DillerInc можешь написать в общих чертах как работает этот SDAPI v1 в Sims 2. Cюда на форум или на e-mail




Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 26 июля 2007 20:30
· Личное сообщение · #20

DillerInc,VaZeR, ребят поделитесь плиз доками, статьями по теме SafeDisk, Securoma

-----
Researcher





Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 26 июля 2007 21:04
· Личное сообщение · #21

overwriter
Честно говоря,всё находится либо в голове,либо на бумаге.Но на бумаге не статьи,а лишь заметки.Так что пользуйтесь пока тем,что есть.Потом посмотрим.

VaZeR пишет:
Настёт антиотладки возможно твой вариант легче надо будёт поиследовать, но это ужё наверное как то в другой статье опишу

...он не то чтобы легче.Он более практичный что-ли.Если хочешь я могу тебе более подробно рассказать что там и как.

VaZeR пишет:
можешь написать в общих чертах как работает этот SDAPI v1 в Sims 2

...принцип работы SDAPI 1 основан на шифровании отдельных функций,например такой код:

call 0056EE59 ; вызов процедуры SDAPI1
мусор
...


Так вот этот вариант вызова при определённых ухищрениях восстанавливается сам.На месте вызова и мусора появляется следующее:

push ebp
mov ebp, esp
mov eax, [ebp+08]
call 0056EF39 ; Это уже другой тип вызова
int 3
call 0056EF39
int 3


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


push ebp
mov ebp, esp
mov eax, [ebp+08]
and eax, _определённое_hex_значение
xor eax, _определённое_hex_значение
...


-----
the Power of Reversing team





Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 26 июля 2007 22:56
· Личное сообщение · #22

VaZeR
Вот.Совсем забыл: а как же так называемые Trigger Tables??
Неужели их нет защищённом приложении??Потому как походу во всех Advanced версиях протектора,которые я встречал,использовался этот механизм.
Как их искать,читай в моей статье.

-----
the Power of Reversing team





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

Создано: 27 июля 2007 03:29
· Личное сообщение · #23

DillerInc насчёт антиотладки расскажи более подробно. Потому что поиск условных переходов, как я делал в статье, не совсем легкое занятие.
Насчёт Trigger Tables я не смог найти их. У меня есть команды mov dword ptr [esp+XX], data и по адресу data нули. Но рядом с такими командами нет вызова SDAPI, а он насколько я думаю должен быть. Во-вторых, нет "известного байта", там одни сплошные нули. Сама игра работает нормально. Хотя может эти Trigger Tables отвечают за какие-нибудь элементы в гемплее. Например, если не будет несколько персонажей или чего то другого, то заметить это не возможно. Или они необходимы приложению?




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

Создано: 27 июля 2007 03:33
· Личное сообщение · #24

Кстати ещё один вопрос "известный байт" он всегда 0С или он может быть любым?




Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 27 июля 2007 10:15
· Личное сообщение · #25

VaZeR
Ну,если в секции данных только нули по нужным смещениям и нет "известного" байта,то тогда они действительно могут не использоваться в этой конкретной реализации защиты.Если не восстановить Trigger Tables, то в игре должны наблюдатся серьёзные глюки(так было в NFSMW, в других случаях я не экспериментировал).

VaZeR пишет:
Кстати ещё один вопрос "известный байт" он всегда 0С или он может быть любым?

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

VaZeR пишет:
DillerInc насчёт антиотладки расскажи более подробно

...функция DeviceIoControl имеет среди остальных параметров входной и выходной буферы.Когда мы перехватываем функцию,мы должны сохранить необходимые нам параметры функции.После того как функция отработает и мы получим управление снова в наши руки,мы проверяем сохранённые параметры.Нас прежде всего интересует IOCTL-код,передаваемый драйверу.Существуют два подобных кода,которые означают запрос антиотладки у драйвера.Далее мы проверяем входной буфер.На основе содержимого входного буфера мы уже будем знать,что искать в выходном.Существуют в основном два варианта:

* это либо проверка регистра dr7 -- тогда в выходном буфере по определённому смещению будет лежать значение этого регистра
* либо всякие другие проверки,названия которых ты приводил у себя в статье -- тогда в выходном буфере будет лежать сигнатура,которая фигурировала в одном из твоих листингов в статье

И мы просто правим необходимое значение в выходном буфере и всё.

В итоге,этот вариант как бы проще и логичнее,просто найти все эти моменты в том метаморфе было не так-то легко.

-----
the Power of Reversing team





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

Создано: 27 июля 2007 10:39
· Личное сообщение · #26

DillerInc Твой способ я понял. У меня находятся наверное сигнатуры в буфере. У меня это 587С1284 - нет отладчика. И 587С1194 - когда он есть.
Сегодня я посмотрел этот способ и нашёл ещё более легкий. Нужно пропатчить сам драйвер SecDrv.sys. Благо константа находится в открытом виде в памяти и нужно только изменить условный переход, как на рисунке.

5a2b_27.07.2007_CRACKLAB.rU.tgz - Патч.bmp




Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 27 июля 2007 10:55
· Личное сообщение · #27

Ну,можно в принципе и так.
Просто мой способ более "программерский"

В ближайшем будущем надо будет мне как-нибудь за наномиты сесть.
Вообще,я этот SD уже давным давно не копал

-----
the Power of Reversing team





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

Создано: 27 июля 2007 11:04
· Личное сообщение · #28

Лучше всего патчить дрова, там кода не много можно и СофтАйсом всё исследовать. Да и в моём случае только один байт нужно изменить, чтобы все проверки из ring 0 обойти.




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

Создано: 27 июля 2007 11:05
· Личное сообщение · #29

Наверное статью перепешу на использование пропатчиного драйвера.



Ранг: 213.5 (наставник)
Активность: 0.120
Статус: Участник
забанен

Создано: 27 июля 2007 14:22
· Личное сообщение · #30

DillerInc пишет:
Просто мой способ более "программерский"

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

-----
ЗЫ: истЕна где-то рядом, Welcome@Google.com



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