Сейчас на форуме: (+5 невидимых) |
eXeL@B —› Протекторы —› Анализ ASProtect |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 38 . 39 . >> |
Посл.ответ | Сообщение |
|
Создано: 28 марта 2008 15:30 · Поправил: vnekrilov · Личное сообщение · #1 Я выложил свой первый туториал по анализу ASProtect v2.4 build 12.20 (Анализ подпрограммы эмуляции инструкций.rar http://dump.ru/files/o/o489862518/ ). В этом туториале я подробно описал процесс восстановления эмулированных инструкций типа: Code:
Полный цикл статей по распаковке ASProtect (Актуальная версия 25 декабря 2009): ASProtect_Unpacking_Tutorial_2009-12-25.rar http://rapidshare.com/files/325720799/ASProtect_Unpacking_Tutorial_2009-12-25.rar 7,9 МБ Программы, рассматриваемые в статьях: ASProtect_Unpacking_Apps_2009-12-25.rar http://rapidshare.com/files/325718084/ASProtect_Unpacking_Apps_2009-12-25.rar 22,2 МБ Буду благодарен за критику, замечания, пожелания и отзывы. Скрипты: Текущая рекомендуемая версия ODBGScript [1.78.3]: ecf1_03.06.2010_CRACKLAB.rU.tgz - ODbgScript.dll Последний текущий комплект скриптов [от 19 февраля 2011]: 69ca_18.02.2011_CRACKLAB.rU.tgz - Скрипты для распаковки Asprotect от 19 февраля 2011.rar Статьи по частям: Актуальная версия статей [Последняя - 25.11.2010]: Выпуск 2 0754_29.11.2009_CRACKLAB.rU.tgz - Распаковка ASProtect - Часть 1 2844_29.11.2009_CRACKLAB.rU.tgz - Распаковка ASProtect - Часть 2 8e06_30.11.2009_CRACKLAB.rU.tgz - Распаковка ASProtect - Часть 3 50a0_03.12.2009_CRACKLAB.rU.tgz - Распаковка ASProtect - Часть 4 1b51_05.12.2009_CRACKLAB.rU.tgz - Распаковка ASProtect - Часть 5 0ff8_05.12.2009_CRACKLAB.rU.tgz - Распаковка ASProtect - Часть 5 (продолжение) a182_06.12.2009_CRACKLAB.rU.tgz - Распаковка ASProtect - Часть 6 82b8_15.12.2009_CRACKLAB.rU.tgz - Распаковка ASProtect - Часть 7 74e4_16.12.2009_CRACKLAB.rU.tgz - Распаковка ASProtect - Часть 8 b2e1_17.12.2009_CRACKLAB.rU.tgz - Распаковка ASProtect - Часть 9 532c_18.12.2009_CRACKLAB.rU.tgz - Распаковка ASProtect - Часть 10 76af_20.12.2009_CRACKLAB.rU.tgz - Распаковка ASProtect - Часть 11 fe67_22.12.2009_CRACKLAB.rU.tgz - Распаковка ASProtect - Часть 12 079c_20.01.2010_CRACKLAB.rU.tgz - Распаковка ASProtect - Часть 13 8415_03.06.2010_CRACKLAB.rU.tgz - Распаковка Asprotect - Часть 14 0a66_18.02.2011_CRACKLAB.rU.tgz - Распаковка Asprotect - Части 15 и 16 DriEm конвертировал мой цикл статей в формате PDF, который можно скачать по ссылке |
|
Создано: 07 марта 2009 12:38 · Личное сообщение · #2 |
|
Создано: 07 марта 2009 12:48 · Поправил: Ultras · Личное сообщение · #3 У меня небольшое замечание по скрипту с эмуляцией API. Исходя из логики скрипта если попадаем на строчку msg "Эта API Asprotect не эмулируется", то следом осуществляется переход на эмуляцию GetRegistrationInformation. Таким образом бывает что GetRegistrationInformation эмулируется более одного раза, что не есть правильно. Мне кажется что нужно поправить скрипт, чтобы осуществлялся вывод сообщения о том что эмуляция данной апи (а это может быть SetUserKey или InstallActivationKey) не поддерживается и данная апи бы пропускалась от эмуляции. Код приблизительно должен выглядеть так: Code:
Жду комментарий автора. Пытался оставить только эмуляцию HardwareID в скрипте, но почему-то в программе все-равно прежний HardwareID (запускаю со скриптом, а потом отпускаю по Run) P.S. Что касается последних скриптов, то один работает на 1.48(который сбрасывает IAT в файл), второй на 1.66.3(который использует IAT из файла). По крайней мере у меня отрабатывают так. ----- .[ rE! p0w4 ]. |
|
Создано: 07 марта 2009 14:06 · Личное сообщение · #4 d0wn пишет: может опять версия не 1.48 у ODbgScript ? Получается странная вещь! У меня, и судя по отзывам других читателей данного топика, ODbgScript v1.48 нормально работает. Почему этот плагин неработает у newborn, для меня остается загадкой. Ultras пишет: Жду комментарий автора. Ты абсолютно прав. Когда я писал скрипт, то думал, что разработчики придумают еще какую-то API Asprotect, которая не будет вкладываться в уже имеющуюся раскладку. Поэтому и вбил эту строку в скрипт. Ее или нужно убрать из скрипта, или добавить в трех местах, после строки msg "Эта API Asprotect не эмулируется" следующие записи: jmp emulate_0Bh jmp emulate_0Ch jmp emulate_0Ch Спасибо за уточнение. Ultras пишет: Пытался оставить только эмуляцию HardwareID в скрипте, но почему-то в программе все-равно прежний HardwareID Если ты запускаешь упакованную программу по F9, то имеется еще одно место, где читаются данные HWiD из Asprotect.dll, и они показываются в окне протектора. Если же использовать дамп распакованной программы, то в этом дампе нет Asprotect.dll, и будет показан эмулированный HWiD. |
|
Создано: 07 марта 2009 14:31 · Поправил: Ultras · Личное сообщение · #5 vnekrilov пишет: Если ты запускаешь упакованную программу по F9, то имеется еще одно место, где читаются данные HWiD из Asprotect.dll, и они показываются в окне протектора. Если же использовать дамп распакованной программы, то в этом дампе нет Asprotect.dll, и будет показан эмулированный HWiD. Получается что вызов АПИ из приложения идет так: CALL_ASPR_GetHardwareID(обфусцированная) -> GetHardwareID, в то же время сам аспротект в своей DLL вызывает GetHardwareID напрямую. И получается что инъекция, сделанная в CALL_ASPR_GetHardwareID не срабатывает в тех случаях, когда вызовы GetHardwareID идут напрямую, так? ----- .[ rE! p0w4 ]. |
|
Создано: 07 марта 2009 16:33 · Личное сообщение · #6 vnekrilov пишет: Получается странная вещь! У меня, и судя по отзывам других читателей данного топика, ODbgScript v1.48 нормально работает. Почему этот плагин неработает у newborn, для меня остается загадкой. Прикрепи пожалуйста свой ODbgScript к посту или выложи куданить, проверить... ----- ~ the Power Of Reversing team ~ |
|
Создано: 07 марта 2009 16:42 · Личное сообщение · #7 newborn уже выкладывали в этой теме - http://exelab.ru/f/action=vthread&topic=11596&forum=1&page =8#28 |
|
Создано: 07 марта 2009 16:43 · Личное сообщение · #8 |
|
Создано: 07 марта 2009 17:40 · Личное сообщение · #9 |
|
Создано: 07 марта 2009 17:52 · Личное сообщение · #10 Ultras пишет: Получается что вызов АПИ из приложения идет так: CALL_ASPR_GetHardwareID(обфусцированная) -> GetHardwareID, в то же время сам аспротект в своей DLL вызывает GetHardwareID напрямую. Что-то я совсем запутался, и не понял вопроса. Давай вернемся к предыдущему вопросу. Загружаем программу в отладчик, запускаем скрипт "Эмуляция API Asprotect.osc", и после завершения его работы, запускаем программу по F9. Появляется окно программы. Проходим в меню Help --> Activation, и появляется окно Asprotect Registration, в котором записан HWiD, заложенный в моем скрипте (F1DE7D93-767A). Однако, при регистрации программы, когда вводится регистрационный код, проверка кода и его обработка производится в Asprotect.dll, которая вызывает API DeviceIoControl, считывает серийный номер жесткого диска, и по специальной программе обрабатывает его, и получается HWiD конкретной машины. Поэтому, инъекция, сделанная в CALL_ASPR_GetHardwareID из главного кода программы, не влияет на обработку серийного номера в Asprotect.dll. Я правильно понял вопрос? |
|
Создано: 07 марта 2009 17:58 · Личное сообщение · #11 newborn пишет: Спасибо, скачал от туда, файлы идентичные, байт в байт, и снова ошибка, пробовал на разных версиях аспра, в том же месте ошибка... Я на своей машине не могу получить эту ошибку, поскольку у меня плагин нормально отрабатываем все команды. Попробуй запустить плагин под отладчиком, и протрассировать отработку всех команд. Ведь где-то зарыта собака? Или может быть кто-то поможет из тех читателей, которые, как я где-то встречал, искали причину ошибки в работе плагина версии 1.66.3. |
|
Создано: 07 марта 2009 18:31 · Личное сообщение · #12 |
|
Создано: 07 марта 2009 19:32 · Личное сообщение · #13 vnekrilov пишет: Я на своей машине не могу получить эту ошибку, поскольку у меня плагин нормально отрабатываем все команды. Попробуй запустить плагин под отладчиком, и протрассировать отработку всех команд. Ведь где-то зарыта собака? Или может быть кто-то поможет из тех читателей, которые, как я где-то встречал, искали причину ошибки в работе плагина версии 1.66.3. Спасибо, разобрался, была проблема в стороннем плагине ----- ~ the Power Of Reversing team ~ |
|
Создано: 08 марта 2009 09:33 · Личное сообщение · #14 newborn пишет: Спасибо, разобрался, была проблема в стороннем плагине Подскажи, пожалуйста, в каком плагине? У меня на ассемблировании команд не пашет плагин ODbgScript v1.66.3. Может быть, тоже одна и таже причина? Ultras пишет: Ведь бывают ситуации когда есть HWID удаленной машины и ключ, а надо снять протектор с EXE, в котором есть пошифрованные фрагменты у себя на компьютере. Какие будут рекомендации таком случае? Когда закончу последнюю часть туториала по снятию анти-дампинга второго типа, видимо, напишу статью и по твоему вопросу. Мне приходилось, имея валидный ключ для другой машины, подменять HWiD, зашитый в ключе, HWiD'ом моей машины, и раскриптовывать закриптованные участки кода. Однако, подпрограмма проверки валидности регистрационного ключа, имеет эмулированные инструкции, о которых я и пишу в последней части туториала. Однако у меня здесь имеются сложности. Подбор нужных адресов в массиве данных для эмулированных подпрограмм пока является своего рода искусством, а я хочу подобрать механизм, который позволит, без этих заморочек, корректировать код подпрограммы извлечения информации из массива данных, применительно к конкретной версии Asprotect.dll. Кое-что я нашел, но надо все тщательно проверить. |
|
Создано: 08 марта 2009 10:12 · Личное сообщение · #15 |
|
Создано: 08 марта 2009 11:30 · Личное сообщение · #16 |
|
Создано: 08 марта 2009 11:45 · Поправил: hypeartist · Личное сообщение · #17 newborn пишет: vnekrilov пишет: Я на своей машине не могу получить эту ошибку, поскольку у меня плагин нормально отрабатываем все команды. Попробуй запустить плагин под отладчиком, и протрассировать отработку всех команд. Ведь где-то зарыта собака? Или может быть кто-то поможет из тех читателей, которые, как я где-то встречал, искали причину ошибки в работе плагина версии 1.66.3. Спасибо, разобрался, была проблема в стороннем плагине А вот у меня все по прежнему: Error on line 484 Text: asm temp_1, $RESULT Label expected |
|
Создано: 08 марта 2009 13:23 · Личное сообщение · #18 |
|
Создано: 09 марта 2009 14:47 · Личное сообщение · #19 |
|
Создано: 09 марта 2009 19:33 · Личное сообщение · #20 Пробовал распаковать Advanced Office Password Recovery последний Скрипт Эмуляция API Asprotect не работает там нет сигнатуры BA01000000B9????????8B хотя апи протектора используются Aspr info: [AOPR], [4.12], [1.4 build 11.20 OЊПIM‰Ш›Д скрипт от Volx работает на ура кстати этот скрипт так же неплохо вычищает мусор в импорте неплохо бы доработать скрипт по восстановлению импорта |
|
Создано: 10 марта 2009 02:17 · Личное сообщение · #21 Nightshade пишет: там нет сигнатуры BA01000000B9????????8B У меня нет, к сожалению, дистрибутива 1.4 build 11.20, но есть дистрибутив 2.4 build 11.20, у которых используется одна и таже Asprotect.dll. Так вот в этом протекторе имеется сигнатура #BA01000000B9????????8B#. Но интересно, что произошло. Сбрось мне ссылку на Advanced Office Password Recovery, посмотрю. Просто самому интересно. |
|
Создано: 10 марта 2009 02:19 · Личное сообщение · #22 |
|
Создано: 10 марта 2009 05:04 · Личное сообщение · #23 Nightshade пишет: Скрипт Эмуляция API Asprotect не работает Только что распаковывал программу, которая имеет API Asprotect, а скрипт не сработал. Причина оказалась довольно простой. В работе моего скрипта заложен поиск вызовов API Asprotect из таблицы IAT. Как правило, вызов API Asprotect находится где-то в середине или ближе к концу таблицы IAT. Но в программе, которую я распаковывал, оказалось, что вызов API Asprotect находится за концом таблицы IAT, и, поэтому скрипт не нашел этих вызовов. Решил я эту задачу очень просто. Поскольку у меня скрипт Восстановление таблицы IAT и вызовов APIs.osc создает дамп таблицы IAT, то я в конец этого дампа добавил вызов 5-ти API Asprotect, и запустил скрипт Эмуляция API Asprotect.osc, который сделал эмуляцию API Asprotect. Может быть и в твоей программе получилось такое? |
|
Создано: 10 марта 2009 07:34 · Поправил: hypeartist · Личное сообщение · #24 |
|
Создано: 10 марта 2009 08:34 · Личное сообщение · #25 |
|
Создано: 10 марта 2009 09:15 · Личное сообщение · #26 hypeartist пишет: а то, что ни один скрипт не находит эмуляции GetProcAddress (и соответственно не добавляет его в таблицу IAT) это нормально? Я не стал перегружать скрипт для восстановления таблицы IAT поиском API GetProcAddress, поскольку это можно сделать вручную, о чем я писал в туториале. Ведь это - не автоматический распаковщик (хотя, может быть, я позже рассмотрю этот вопрос). Nightshade пишет: Апи аспра там тоже ниже таблице импорта но указателя на них нет Спасибо за ссылку, скачаю и посмотрю. Видимо, придется немного изменить скрипт, и расширить поиск API Asprotect. |
|
Создано: 10 марта 2009 12:30 · Личное сообщение · #27 |
|
Создано: 10 марта 2009 14:34 · Поправил: hypeartist · Личное сообщение · #28 vnekrilov пишет: Я не стал перегружать скрипт для восстановления таблицы IAT поиском API GetProcAddress, поскольку это можно сделать вручную, о чем я писал в туториале. Ведь это - не автоматический распаковщик (хотя, может быть, я позже рассмотрю этот вопрос). все понял - прошу прощения у меня еще вот вопрос: в той dll, что я здесь на форуме выкладывал, обнаружил еще один непонятный мне момент: распоковал я ее (спасибо Konstantin за помощь), она нормально загружается в хостовую программу (dll является плагином), но при попытке выполнить из плагина загрузку файла я получаю Access Violation! Найдя точку непосредственно перед той, что вызывает exception, и "брякнувшись" на ней я обнаружил что далее идет CALL в какую-то "левую" область памяти. Посмотрел что происходит при работе упакованной dll и установил, что адрес перехода этого CALL'а при первом(!) срабатывании ведет (через-тернии-к-звездам) в то место где при распаковке Asprotect заморачивается с IAT (ну, там где адрес API функции отлавливается в EAX). В последствии адрес перехода этого CALL'а уже не меняется! Как бороться с этой runtime подстановкой? PS: извините за путанность |
|
Создано: 10 марта 2009 14:57 · Личное сообщение · #29 |
|
Создано: 10 марта 2009 15:05 · Личное сообщение · #30 vnekrilov пишет: А объединенный туториал по распаковке Аспра не является подарком? Несомненно любой твой тутор подарок (плюс ещё выложил фичу по ключам), но тогда надо на юбилей выкладывать Всё равно 28 числа должно что-то случиться Молодец, класные туторы пишешь, лично я читаю с удовольствием, а не просто чтобы прочитать. |
|
Создано: 13 марта 2009 15:09 · Личное сообщение · #31 Приступил к написанию очередной части туториала по распаковке Asprotect, в котором будет рассмотрена практика доработки скрипта для восстановления эмулированных подпрограмм, выполняемых в виртуальной машине. Сначала я думал, что можно создать для каждой версии Аспра отдельный скрипт, который и будет распаковывать все программы, защищенные этим протектором. Однако, как говорится, обломался. Меня попросили распаковать программу, которая защищена Аспром v2.41 build 02.26. И в ней оказались подпрограммы, защищенные виртуальной машиной. Я думал, что быстро распакую эту программу, и обломился на восстановлении эмулированных инструкций. До этой программы, я видел защиту только в дистрибутивах Аспра, поскольку другие разработчики программ не применяют такую защиту (я думаю, просто не умеют этого делать), и у меня имеется такой скрипт для восстановления эмулированных подпрограмм в самом Аспре v2.41 build 02.26. И тут я обломался. Скрипт не взял эту программу. Когда я начал разбираться, в чем же причина, то оказалось, что протектор изменяет размещение данных в массивах данных, константы, и, самое страшное, он меняет закриптовку первого байта опкода инструкций для каждой защищаемой программы. Очень сильный ход разработчиков этого пакера, и им можно только поаплодировать. Придется писать туториал по доработке скрипта применительно к каждой конкретной программе, и для этого Пользователям придется не вслепую тыкать кнопки, а сознательно подходить к корректировке скрипта. Так что скоро я выложу очередную часть туториала, в котором и будут освещены все эти методы. |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 38 . 39 . >> |
eXeL@B —› Протекторы —› Анализ ASProtect |