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

 eXeL@B —› Вопросы новичков —› ASProtect 2.3 SKE
Посл.ответ Сообщение

Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 ноября 2007 00:40
· Личное сообщение · #1

Привет всем!
Имеется прога.
http://rapidshare.com/files/70411938/Proga.rar.html http://rapidshare.com/files/70411938/Proga.rar.html
Защита: ASProtect 2.3 SKE build 04.26 Beta [3].
Пытался следовать статье "Распаковка ASProtect v 2.xx by PE_Kill" но прога генерит огромное количество (скорее всего даже случайное) исключений обращения по адрессу [00000000] (aka null pointer exception). Но их я все фильтрую и у меня остается тогда до запуска программы 4 исключения int 3 (2 до EntryPoint и 2 после). Но OEP я все же найти не смог. Зато определил, что во фрейме 01720000 находится сам код зашиты, но ее OEP определить тоже не смог. К сожалению, больше из статьи ничего не смог использовать - большие различия.
Похоже, что защиту поставили не совсем хорошо. Присутствуют два сегмента кода, один за другим - первый скорее всего как раз отвечает за инициализацию и форму регистрации, второй за саму логику программы. Я так думаю, потому что когда ставил точку останова на втором сегменте, то ни разу не брякался. Код в первом сегменте не выглядит замусоренем хотя конечно есть много вызовов в "дальний" сегмент в 01720000. Кроме того есть много функций-крючков, которые сидят далеко и в разных фреймах. Так что сдампить просто сегменты кода и виртуальную машину не получится.
Китайский скрипт Aspr2.XX_unpacker что-то разпаковал и вот его лог:
Address Message
174D6BA AsprAPIloc: 0175F4D4
174D6BA Aspr1stthunk: 0047202C
1749818 SDK stolen code sections = 00000001
175CC31 Total API in this Asprotect = 0000000D
175CC31 GetRegistrationInformation 0046E290
175CC31 CheckKeyAndDecrypt 0046E2D0
175CC31 CheckKey 0046E2E0
457078 SDK stolen code section address = 02790000
457078 Address of IAT = 00472000
457078 RVA of IAT = 00072000
457078 Size of IAT = 00000640
457078 Address of OEP = 00457078
457078 RVA of OEP = 00057078
Я исправил таблицу импорта, но три функции так и не нашел. Хотя до них дело, похоже, и не дошло - дамп валится с ошибкой при обрашении как раз куда-то в 02790000 (02790258).
А теперь вопросы по следующим пунктам:
1. Как же все таки самому выйти на OEP и VOEP? Так уж ли это надо? Дамп ведь в принципе можно делать и тогда, когда просто знаешь, что весь код разпакован и загружен.
2. Как пофиксить 3 функции из импорта? Вот данные из ImpRec-а
FThunk: 0007202C NbFunc: 00000003
0 0007202C ? 0000 0170BFC0
0 00072030 ? 0000 0170C050
0 00072034 ? 0000 0170C0F0
3. Как пофиксить созданый дамп.
4. Если предположить, что алгоритм валидации ключа не находится в виртульной машине и поддается реверсингу, как эффективней всего его найти? Мне удалось выйти на вызовы GetWindowTextA и код там вполне читабелен. Как можно его загрузить в IDA?
Кстати, я так и не нашел кода, про который сказал скрипт разпаковки
CheckKeyAndDecrypt 0046E2D0
CheckKey 0046E2E0
там пусто.



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

Создано: 18 ноября 2007 03:51
· Личное сообщение · #2

по аспр 2.3 есть статья Внекрылова
не мог бы прогу перезалить на ifolder.ru или dump.ru




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 18 ноября 2007 10:31
· Личное сообщение · #3

logogin http://www.exelab.ru/f/action=vthread&forum=1&topic=6315

-----
StarForce и Themida ацтой!




Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 ноября 2007 11:52
· Личное сообщение · #4

Satyr
http://dump.ru/files/n/n154767589/ http://dump.ru/files/n/n154767589/
Спасибо за ссылки - буду ковырять дальше



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

Создано: 19 ноября 2007 05:00
· Личное сообщение · #5

logogin
OEP в данном случае можно найти методом исключений, он находится по адресу 4635D4, причем протектор навешан без опции "Protect original entry point", т.е. украденных байтов нет, нужно только декомпильнуть ВМ.



Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 ноября 2007 12:14
· Личное сообщение · #6

Satyr
странно, китайский скрипт коворит про 0х00457078. Она может быть и не украдена, но есть украденый API. Так что дамп все равно надо будет исправлять. Я пробовал следовать статье, которую ты посоветовал, но пока прога почему-то вылетает при попытке поставить бряк на секцию кода - Protection error. Если можно, то разскажи подробней, как ты нашел OEP, т.е. куда ставить бряк перед последним int 3 и куда смотреть в стеке?



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

Создано: 19 ноября 2007 16:18
· Личное сообщение · #7

logogin
я тут заснял свои действия на видео, в-общем-то там все понятно.
dump.ru/files/n/n73760866/



Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 ноября 2007 17:52
· Личное сообщение · #8

Satyr
Теперь догнал! Спасибо. Просто не мог понять что первый push поместили в call и это и есть настоящая OEP. Только у меня почему-то, access violation exception генерится безконечно и я их сразу поставил на фильтрацию в опциях.
Теперь вопрос что делать дальше? Есть два варианта: реверсить алгоритм валидации ключа или пытатся сделать рабочий дамп. Даже не знаю что будет легче.




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 19 ноября 2007 18:25 · Поправил: Maximus
· Личное сообщение · #9

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

По существу: В проге есть пошифрованные куски, расшифровать которые можно лишь имея хотя бы забаненый ключ. Реверсить алгоритм можно, но задача будет ОООЧЕНЬ не простая, просто поверь мне))
3 функции что ты не нашет, это всего вероятней аспрапи, и я бы на твоем месте узнал бы перед взломом как минимум зачем они нужны, тебе бы сэкономило бы это кучу времени

00435993 > E9 3B050000 JMP laim_u.00435ED3
Вот тут натыкаемся сразу на пошифрованный кусок, можешь сам посмотреть...
А это тебе распакованный прог, что бы не мучался уже:
rapidshare.com/files/70809935/1212.rar_.html

-----
StarForce и Themida ацтой!




Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 ноября 2007 19:41
· Личное сообщение · #10

Maximus
Да я почитал немного. Но решил, что пока не получу дамп или не определю где алгоритм ключа, то пока можно отложить. Но насколько я понял, если найти функции CheckKey или CheckKeyAndDecrypt, то используя тот же асповский SDK можна сделать keygen.
Я ходил по твоей ссылке, но там так и написано - если не можете сами пропатчить апи, то дамп вам не поможет. Так что все равно самому разбираться придется. Я думаю это возможно, главное, что бы кто-то только советом помогал.
За распаковку спасибо, буду пытаться дальше.




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 19 ноября 2007 19:51 · Поправил: Maximus
· Личное сообщение · #11

logogin дык
1. Алгоритм обернутв VM
2. Алгоритм асиметричный, все проверки идут по хешу (блин этож комерческая защита если бы было все просто кто бы ее купил)
3. Найти можно только если дыру в реализации, но для этого как минимум надо на тестовом примере посмотреть что куда суется, с известным тебе ключиком.
4. Вряд ли кто тебе поможет, на форуме очень мало людей кто кигенил аспр, и то кигенели с одним заведомо известным ключем.
5:
>Но насколько я понял, если найти функции CheckKey или CheckKeyAndDecrypt, то используя тот же асповский SDK можна сделать keygen
Нет! Киген сделать низя,плохо читал, нужна енкрипшн константа, которая есть только у разработчика.

-----
StarForce и Themida ацтой!




Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 ноября 2007 00:54
· Личное сообщение · #12

Maximus
Почитал получше. Получается что регистрация идет следующим образом
1. Разработчик получает текст - в данном случае MD5 хеш логина. Подписывает его своим Private Key используя RSA. Кстати, разве можно по закону использовать длину ключа более 128 битов?
2. Подпись идет клиенту. В проге зашит тогда по идее Public Key которым валидируется подпись.
3. Зовется CheckKeyAndDecrypt и разкриптовывается участки кода.
Прога может знать только Public Keys, но использовать их по разному. Алгоритм проверки подписи RSA может и стандартный, а вот алгоритм разкриптовки наверное другой. Он может просто использовать константы из своего ключа.
Какой же тогда выход?
Вроде бы есть метод "Attack on Asprotect SKE Activation Key" - замены публичного ключа и атаки на константы. А для чего нужен заведомо известный ключ тогда?

P.S. дамп почему-то не запускается, еще не смотрел почему - читал




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 20 ноября 2007 01:04
· Личное сообщение · #13

logogin пишет:
Кстати, разве можно по закону использовать длину ключа более 128 битов?


для сертификации в соотв. органах? можно ;)
это тебе не экспортные ограничения в США, да и те времена прошли - сейчас 128 битный ключ - не проблема.


logogin пишет:
А для чего нужен заведомо известный ключ тогда?

а как ты расшифруешь то, что хочешь потом зашифровать своим ключом (подменив его), брутфорсом?

-----
EnJoy!





Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 20 ноября 2007 07:57 · Поправил: Maximus
· Личное сообщение · #14

logogin пишет:
дамп почему-то не запускается, еще не смотрел почему - читал

надо раскриптовывать покриптованое, тогда запустится.

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

-----
StarForce и Themida ацтой!




Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 ноября 2007 12:09
· Личное сообщение · #15

Maximus
Ну а если достать хотя бы один валидный ключ? Тогда же вроде как пройзойдет разкриптовка, затем можно пропатчить CheckKeyAndDecrypt, что бы всегда возвращала true и ничего не разшифровывала.




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 21 ноября 2007 12:50
· Личное сообщение · #16

logogin все правильно, так аспр и ломают

-----
StarForce и Themida ацтой!



 eXeL@B —› Вопросы новичков —› ASProtect 2.3 SKE
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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