Сейчас на форуме: (+5 невидимых) |
eXeL@B —› Протекторы —› Анализ ASProtect |
<< 1 ... 27 . 28 . 29 . 30 . 31 . 32 . 33 . 34 . 35 . 36 . 37 ... 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, который можно скачать по ссылке |
|
Создано: 20 апреля 2010 06:31 · Личное сообщение · #2 |
|
Создано: 20 апреля 2010 09:56 · Личное сообщение · #3 |
|
Создано: 20 апреля 2010 10:07 · Личное сообщение · #4 В аттаче я выложил обновленные скрипты "Восстановление таблицы IAT и вызовов APIs.osc" и "Восстановление секции импорта (.idata) в распакованных программах.osc". В этих скриптах сделаны следующие модернизации: 1. В скрипте "Восстановление таблицы IAT и вызовов APIs.osc" убрана ручная проверка начала таблицы IAT. Теперь скрипт сам правильно определяет все параметры таблицы IAT (начало, конец и размер). 2. В скрипте "Восстановление секции импорта (.idata) в распакованных программах.osc" я убрал ручную проверку имени wsock32.dll при работе с WS2_32.dll. Теперь скрипт сам проверяет наличие имени wsock32.dll в блоке WS2_32.dll, и, если такое имя имеется, автоматически изменяет имя WS2_32.dll на wsock32.dll. f65d_20.04.2010_CRACKLAB.rU.tgz - Откорректированные скрипты от 20 апреля 2010.rar |
|
Создано: 23 апреля 2010 12:18 · Личное сообщение · #5 |
|
Создано: 23 апреля 2010 13:17 · Личное сообщение · #6 |
|
Создано: 23 апреля 2010 13:52 · Личное сообщение · #7 |
|
Создано: 23 апреля 2010 14:45 · Личное сообщение · #8 |
|
Создано: 23 апреля 2010 14:48 · Личное сообщение · #9 |
|
Создано: 23 апреля 2010 14:49 · Личное сообщение · #10 |
|
Создано: 23 апреля 2010 15:56 · Личное сообщение · #11 |
|
Создано: 24 апреля 2010 13:23 · Личное сообщение · #12 |
|
Создано: 24 апреля 2010 14:23 · Личное сообщение · #13 Isaev пишет: просто вроде писали что там что-то надо бы поправить и это сделаем позже, Сам текст туториала по распаковке Asprotect я править не собирался, поскольку я и так написал вроде-бы все, что хотел. Другое дело - это корректировка скриптов, применяемых для распаковки Asprotect. Здесь еще всплывают баги, которые не были проявлены ранее, и, видимо, еще будут всплывать. Поэтому я сейчас готовлю комплект откорректированных скриптов, с которым работаю при распаковке программ, упакованных этим протектором. Также возможно появление статей, связанных с распаковкой программ, упакованных заказными версиями протектора. Здесь бывают интересные нюансы, особенно связанные с применением APIs Asprotect. Кстати, если у кого-то имеются интересные примеры, я с благодарностю приму ссылки на эти программы, чтобы написать соответствующие статьи, или откорректировать скрипты. |
|
Создано: 27 апреля 2010 08:18 · Личное сообщение · #14 В аттаче я прикладываю обещанный обновленный комплект скриптов для распаковки программ, упакованных Asprotect. Все обновления сделаны по состоянию на 27 апреля 2010 года. Этот комплект скриптов выполняет распаковку программ, упакованных Asprotect по версии 1.56 build 03.17/2.56 SKE build 03.17, включительно. 5d99_26.04.2010_CRACKLAB.rU.tgz - Обновленные скрипты для распаковки Asprotect от 27 апреля 2010.rar |
|
Создано: 27 апреля 2010 14:50 · Поправил: Coderess · Личное сообщение · #15 vnekrilov Нет планов по созданию статьи по самой быстрой распаковке файла, для некоторых важен конечный результат - распакованный файл, а не сам процесс Просто было-б не плохо, если такая статья увидит свет, что скажете по-этому поводу? ----- Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes |
|
Создано: 27 апреля 2010 17:56 · Поправил: vnekrilov · Личное сообщение · #16 Coderess пишет: Нет планов по созданию статьи по самой быстрой распаковке файла, для некоторых важен конечный результат - распакованный файл, а не сам процесс В туториале по распаковке программ, упакованных Asprotect, имеется довольно большая часть, которая называется "Практика распаковки программ". В этой части я постарался как можно компактнее показать процесс распаковки разных программ. Можно было бы объединить все скрипты в один скрипт (как это сделал VolX), но такой скрипт получается очень громоздкий, и его сложно применять для распаковки программ, упакованных новыми версиями протектора, поскольку мной предусмотрена корректировка скриптов по необходимости. В своей работе я применяю именно предложенный комплект скриптов, который меня вполне устраивает, и позволяет за 20-30 минут распаковать любую программу (много времени занимает процесс восстановления секции импорта, поскольку скрипт работает достаточно медленно). Но, даже распаковав программу с помощью скриптов, не всегда удается ее запустить, поскольку зачастую разработчики программ встраивают и свои методы антидампирования. Поэтому наиболее трудоемкой работой именно является доработка дампа программы, с целью обеспечения его работы. А если упакованная программа имеет подпрограммы с эмулированными инструкциями, то здесь приходится дорабатывать VM для восстановления этих эмулированных инструкций, и без ручного труда здесь не обойтись. Ведь надо создать файл Asprotect.dll, его проанализировать, чтобы получить закриптованные значения первого байта инструкций, и т.д. И об этом я также писал в туториале. Поэтому написать статью по быстрой распаковке файлов мне кажется невозможным. Другое дело, если имеются какие-то изюминки при распаковке, то есть резон писать статьи об этих изюминках. Так, например, в некоторых программах, приходится, до OEP, выполнять некоторые подпрограммы, чтобы снять защиту от антидампирования. |
|
Создано: 01 мая 2010 08:04 · Личное сообщение · #17 mak в личном сообщении указал на одну ошибку в скрипте "Эмуляция APIs Asprotect, вызываемых из кода программы.osc", которая находится здесь: enter_free_space: ask "Для записи эмулированных APIs Asprotect нужно иметь 120h байтов! Введите выбранный Вами адрес свободного места." cmp $RESULT,0 jne enter_free_space ask "Вы не ввели адрес свободного места для записи эмулированных APIs Asprotect! Введите выбранный Вами адрес свободного места." mov Write_Emul_APIs_Asprotect,$RESULT Эта ошибка устранена в прилагаемой новой версии скрипта "Эмуляция APIs Asprotect, вызываемых из кода программы.osc" от 01 мая 2010 года. Большое спасибо mak за указанную ошибку. 28ce_30.04.2010_CRACKLAB.rU.tgz - Эмуляция APIs Asprotect, вызываемых из кода программы.osc |
|
Создано: 05 мая 2010 10:09 · Личное сообщение · #18 Мной доработаны скрипты "Восстановление секции импорта (.idata) в распакованных программах.osc" и "Эмуляция APIs Asprotect, вызываемых из кода программы.osc" (обновление от 05 мая 2010), в которых усовершенствован поиск APIs Asprotect в таблице IAT в программах, упакованных Asprotect SKE (с коротким ключем), а также запись эмулированных APIs Asprotect на свободное место в секции импорта программы. Эти доработанные скрипты приложены в аттаче к этому сообщению. 8314_05.05.2010_CRACKLAB.rU.tgz - Обновленные скрипты от 05.05.2010.rar |
|
Создано: 05 мая 2010 22:02 · Личное сообщение · #19 vnekrilov пишет: если имеются какие-то изюминки при распаковке, то есть резон писать статьи об этих изюминках. выбирай любой //саму прогу как-то высылал, так что извлечь из архива обнову, не сложно будет. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 06 мая 2010 15:30 · Личное сообщение · #20 |
|
Создано: 07 мая 2010 08:10 · Поправил: vnekrilov · Личное сообщение · #21 Встретился с одной программой, на которой скрипт "Эмуляция APIs Asprotect, вызываемых из кода программы.osc" записал эмулированные APIs Asprotect на месте имеющегося кода, а не на свободном месте. Причиной этой ошибки стало то, что OdbgScript не может сравнивать отрицательное значение с положительным значением. Нужно было выполнить инструкции: cmp temp_1,120 jae check_Count_APIs_Asprotect Здесь temp_1 = FFFFFFF0 - отрицательное значение (-10) Ясно, что значение (-10) меньше значения 120, и прыжок jae check_Count_APIs_Asprotect не должен быть выполняться, а он выполняется, что является причиной этой ошибки. Мне пришлось ввести в скрипт следующую проверку: cmp temp_1,temp_2 // temp_1 меньше temp_2? jb no_free_code И эта проверка позволяет корректно работать данному скрипту. В аттаче приложен скрипт "Эмуляция APIs Asprotect, вызываемых из кода программы.osc" от 07.05.2010, в котором устранена эта ошибка. 202e_06.05.2010_CRACKLAB.rU.tgz - Эмуляция APIs Asprotect, вызываемых из кода программы.osc |
|
Создано: 08 мая 2010 10:16 · Личное сообщение · #22 yanus0 прислал мне сообщение, в котором он указал на падение скрипта "Восстановление таблицы IAT и вызовов APIs.osc" при его работе на программе Activity Monitor. Причина сбоя в работе скрипта оказалась следующей. При заполнении протектором таблицы IAT, во время загрузки программы, скрипт одновременно записывает во вспомогательную таблицу, расположенную в специально созданной области памяти, значения идентификаторов закриптованных APIs в массиве данных для таблицы IAT, и соответствующие адреса таблицы IAT. Эти данные используются для восстановления вызовов эмулируемых APIs. В скрипте я заложил размер этой области памяти в 6000h байтов, которого хватало для записи вспомогательной таблицы для всех программ, которые я распаковывал. Однако в этой программе этого размера оказалось недостаточно для записи всех идентификаторов закриптованных APIs в массиве данных для таблицы IAT, и, когда достигается конец этой области памяти, то и показывается сообщение о сбое скрипта при восстановлении таблицы IAT. Поэтому на строке 543 скрипта "Восстановление таблицы IAT и вызовов APIs.osc" я изменил значение 6000 на значение 18000. После такого изменения, скрипт нормально восстанавливает таблицу IAT и вызовы APIs. Спасибо yanus0 за указанный баг. В аттаче приложен откорректированный скрипт "Восстановление таблицы IAT и вызовов APIs.osc" от 07.05.2010. 07e6_08.05.2010_CRACKLAB.rU.tgz - Восстановление таблицы IAT и вызовов APIs.osc |
|
Создано: 08 мая 2010 12:05 · Личное сообщение · #23 |
|
Создано: 10 мая 2010 06:46 · Личное сообщение · #24 mak пишет: Можно архивом залить , Да, можно. Я это сделаю немного позже. А пока прошу у ЗНАЮЩИХ совета. Вопрос следующий. При распаковке программы Activity Monitor, и восстановлении секции импорта с помощью скрипта "Восстановление секции импорта (.idata) в распакованных программах.osc" я столкнулся с тем, что при загрузке дампа распакованной программы в отладчик получил сообщение о том, что не найдена Entry Point API ??0greg_weekday@gregorian@boost@@QAE@G@Z в библиотеке boost_date_time-vc90-mt-1_40.dll. Когда я начал искать причину появления этой ошибки, то выяснил, что отладчик показывает имя этой API как: 0049E940 00C43DA0 boost_da.??0greg_weekday@gregorian@boost@@QAE@G@Z Здесь библиотека boost_date_time-vc90-mt-1_40.dll загружена по базовому адресу 00С40000. Поэтому RVA этой API будет равно 00003DA0. А по этому адресу в этой библиотеке записано имя API - ??0?$constrained_value@V?$simple_exception_policy@G$0A@$05Ubad_weekday @gregorian@boost@@@CV@boost@@@CV@boost@@QAE@G@Z , т.е. абсолютно другое имя, чем прочитал имя отладчик по этому адресу. Как известно, для получения имени используется функция GetProcAddress, и вот эта функция, в некоторых библиотеках, не правильно показывает имя API. Сможет кто-то посоветовать, как исправить эту ситуацию. Заранее благодарен за советы и подсказки. |
|
Создано: 10 мая 2010 14:18 · Личное сообщение · #25 vnekrilov пишет: Как известно, для получения имени используется функция GetProcAddress, и вот эта функция, в некоторых библиотеках, не правильно показывает имя API. Сможет кто-то посоветовать, как исправить эту ситуацию. Из плагина я делаю следующим образом, ошибок в определении АПИ функций пока не было: Code:
В скриптах есть этому аналог - gapi ----- Everything is relative... |
|
Создано: 10 мая 2010 16:49 · Личное сообщение · #26 |
|
Создано: 10 мая 2010 17:49 · Личное сообщение · #27 |
|
Создано: 16 мая 2010 16:06 · Личное сообщение · #28 Для восстановления секции импорта в распаковываемых программах мной был предложен скрипт "Восстановление секции импорта (.idata) в распакованных программах.osc". Однако, при распаковке некоторых программ выяснилось, что отладчик не всегда корректно определяет имена функций, используемых в разных библиотеках. Я попытался находить корректные имена функций с помощью Таблицы Экспорта библиотек, но это значительно увеличивает время работы скрипта. Да и на разных программах, в зависимости от размера таблицы IAT, этот скрипт работает достаточно долго. С другой стороны, утилита ImpRec работает очень быстро, но ее недостатком является то, что она секцию с Import Table и именами DLLs и APIs помещает в специально создаваемую секцию с именем mackt, располагаемую в конце файла, что не всегда является удобным, особенно, если требуется выполнить локализацию распакованной программы. Иногда, при локализации, повреждается эта секция импорта, и файл не запускается. Я решил доработать скрипт "Восстановление секции импорта (.idata) в распакованных программах.osc" таким образом, чтобы он мог переносить данные из секции mackt на родное место в секции импорта распаковываемой программы. Как выполнить перенос данных: 1. Сначала запускаем скрипт "Восстановление таблицы IAT и вызовов APIs.osc", и, после завершения его работы, запускаем скрипты "Восстановление эмулированных подпрограмм в коде программы.osc", "Устранение проверки целостности кода (CRC) программы.osc" и "Эмуляция APIs Asprotect, вызываемых из кода программы.osc". Скрипт "Восстановление секции импорта (.idata) в распакованных программах.osc" НЕ ЗАПУСКАЕМ. 2. Запускаем утилиту IMPRec, вводим требуемые данные, получаем импорт распакованной программы. 3. Исправляем файл dumped.exe (не убираем флажок с чекбокса "Add New Section") 4. Загружаем полученный файл dumped_.exe в PE Tools (или любой другой редактор PE-файлов), переходим на вкладку Directory Editor, и обнуляем значение RVA в окне Import Directory. 5. Загружаем доработанный файл dumped_.exe в отладчик OllyDbg, и запускаем скрипт "Перенес данных из секции mackt, созданной ImpRec, в родную секцию импорта файла.osc". 6. Проверяем загрузку полученного файла после работы скрипта - dumped.exe, и просматриваем таблицу IAT. 7. Отрезаем в PE Tools секцию .mackt, а также секции, созданные протектором (эту процедуру я описывал в своих туториалах). Просьба для читателей этого топика протестировать этот скрипт на своих распаковываемых программах. При наличие каких-либо ошибок, и замечаний, просьба писать в личку или e-mail vnekrilov@yandex.ru 2b5e_16.05.2010_CRACKLAB.rU.tgz - Перенес данных из секции mackt, созданной ImpRec, в родную секцию импорта файла.osc |
|
Создано: 23 мая 2010 08:16 · Личное сообщение · #29 В последнее время мне пришлось распаковать несколько программ, упакованных Asprotect, к которым был приложен регистрационный ключ. Наличие регистрационного ключа позволяет раскриптовать закриптованный код в программе, и получить распакованную программу с восстановленным кодом. Разработанный мной скрипт "Восстановление таблицы IAT и вызовов APIs.osc" не предусматривал работу с регистрационным ключом, поэтому он обнулял адрес вызова API SetRegistrationKey. Для возможности работы с регистрационным ключем, я доработал скрипт "Восстановление таблицы IAT и вызовов APIs.osc", который позволяет распаковывать программы и с регистрационным ключем: Code:
При работе обновленной версии этого скрипта от 23 мая 2010 года, он запрашивает Пользователя, работает ли он с зарегистрированной версией программы, или нет. При этом Вы должны нажать кнопку ДА или НЕТ. Если Вы работаете с зарегистрированной версией программы, то, после завершения работы этого скрипта, Вы получите дамп с полностью восстановленным закриптованным кодом. В аттаче я прикладываю обновленный скрипт "Восстановление таблицы IAT и вызовов APIs.osc" от 23 мая 2010 года. e143_22.05.2010_CRACKLAB.rU.tgz - Восстановление таблицы IAT и вызовов APIs.osc |
|
Создано: 23 мая 2010 08:57 · Личное сообщение · #30 mak пишет: Можно архивом залить , последняя версия откоректированных скриптов на сегодняшний день ? В аттаче приложены обновленные скрипты от 23 мая 2010 года. eb56_22.05.2010_CRACKLAB.rU.tgz - Скрипты от 23 мая 2010.rar |
|
Создано: 29 мая 2010 08:08 · Личное сообщение · #31 При работе скрипта "Перенос данных из секции mackt, созданной ImpRec, в родную секцию импорта файла.osc" в коде прививки для переноса адресов имен APIs в таблицу IAT был обнаружен баг, который был мной устранен в доработанной версии этого скрипта от 29 мая 2010 года. В аттаче приложен откорректированный скрипт "Перенос данных из секции mackt, созданной ImpRec, в родную секцию импорта файла.osc" от 29 мая 2010 год. e3c2_28.05.2010_CRACKLAB.rU.tgz - Перенос данных из секции mackt, созданной ImpRec, в родную секцию импорта файла.osc |
<< 1 ... 27 . 28 . 29 . 30 . 31 . 32 . 33 . 34 . 35 . 36 . 37 ... 38 . 39 . >> |
eXeL@B —› Протекторы —› Анализ ASProtect |