Сейчас на форуме: (+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 19:59 · Личное сообщение · #2 |
Ранг: 281.8 (наставник), 272thx Активность: 0.25↘0.01 Статус: Участник Destroyer of protectors |
Создано: 20 ноября 2010 23:33 · Личное сообщение · #3 |
|
Создано: 21 ноября 2010 05:26 · Поправил: [0utC4St] · Личное сообщение · #4 При распаковке Code:
При этом dumped_control.exe становится размером 1.19 Мб против 4.06 Мб до создания бинарного дампа секции ресурсов. Дамп при этом не создаётся. Code:
Вопрос: что не так? куда копать? ----- z+7v+/Lq4CAtIO/l8OL76SD44OMg6iDv8O7i4OvzLiCpIMPu7OXwINHo7O/x7u0= |
Ранг: 281.8 (наставник), 272thx Активность: 0.25↘0.01 Статус: Участник Destroyer of protectors |
Создано: 21 ноября 2010 05:52 · Личное сообщение · #5 |
|
Создано: 21 ноября 2010 15:39 · Личное сообщение · #6 |
|
Создано: 21 ноября 2010 15:46 · Поправил: [0utC4St] · Личное сообщение · #7 vnekrilov, что скажите касаемо (мой пост выше) ----- z+7v+/Lq4CAtIO/l8OL76SD44OMg6iDv8O7i4OvzLiCpIMPu7OXwINHo7O/x7u0= |
|
Создано: 21 ноября 2010 15:52 · Личное сообщение · #8 |
|
Создано: 21 ноября 2010 21:36 · Личное сообщение · #9 [0utC4St] пишет: что скажите касаемо этого? Действительно, Resource Binder v3.1 дает сбой на этой программе. Почему - это, видимо, надо задать вопрос SetiSoft, разработчику этой утилиты. В то же время, более старая версия этой утилиты - Resource Binder v2.6, не страдает этой болезнью, и нормально создает бинарный дамп секции ресурсов. На всякий случай, прикладываю в аттаче эту версию Resource Binder. ae18_21.11.2010_CRACKLAB.rU.tgz - Resource Binder v2.6.rar | Сообщение посчитали полезным: [0utC4St] |
|
Создано: 21 ноября 2010 23:39 · Личное сообщение · #10 |
|
Создано: 22 ноября 2010 06:17 · Поправил: [0utC4St] · Личное сообщение · #11 |
|
Создано: 25 ноября 2010 09:53 · Личное сообщение · #12 Недавно мне попалась программа, в которой скрип "Восстановление таблицы INIT.osc" дал сбой. Причина этого сбоя была обусловлена тем, что мной, под запись таблиц А и В, и запись раскриптованных адресов таблицы INIT был выделен небольшой объем памяти в 4000h байтов. Из этого объема памяти 50% было выделено под запись хэшей таблиц А и В, и 50% памяти было выделено по запись раскриптованных адресов таблицы INIT. В этой же программе запись хэшей таблиц А и В заняла объем около 3000h байтов, что и привело к сбою работы скрипта. Поэтому я доработал этот скрипт, и увеличил объем выделенной памяти в 10000h байтов. После чего, скрипт нормально отработал, и корректно восстановил таблицу INIT в этой программе. Поэтому замените скрипт "Восстановление таблицы INIT.osc" от 03 июня 2010 года скриптом от 24 ноября 2010 года, который приложен в аттаче к этому сообщению. Благодарю Antoskast3 за присланную им программу, которая позволила найти ошибку в этом скрипте. 537a_24.11.2010_CRACKLAB.rU.tgz - Восстановление таблицы INIT.osc |
|
Создано: 25 ноября 2010 14:55 · Личное сообщение · #13 Не знаю как у тебя скрипты вкупе работают, но под инит таблицу можно и не выделять память, все инициализаторы писать сразу в таблицу, пропуская по 4 байта (для финализаторов) и потом писать финализаторы в те самые пропущеные байты. Ну а число элементов таблицы это наибольшее числу между инициализаторами и финализаторами. ----- Yann Tiersen best and do not fuck |
|
Создано: 25 ноября 2010 17:48 · Поправил: vnekrilov · Личное сообщение · #14 PE_Kill пишет: Не знаю как у тебя скрипты вкупе работают, но под инит таблицу можно и не выделять память Можно было бы, конечно, все скрипты объединить в один скрипт, как это слелал VolX, но когда возникают какие-то проблемы с работой того или иного скрипта, искать это место сбоя - весьма сложно. Скрипт "Восстановление таблицы INIT.osc" восстанавливает таблицу INIT, и делает дамп этой таблицы с именем "table_INIT.bin". Этот дамп используется при работе скрипта "Восстановление таблицы IAT и вызовов APIs.osc", который вставляется на место нахождения таблицы INIT в памяти распакованной программы. Затем скрипт "Восстановление таблицы IAT и вызовов APIs.osc" выполняет дампирование памяти распакованной программы, и мы получаем дамп, в котором отрезаем лишние секции и прикручиваем секцию дампа со спертыми байтами. Я получаю достаточно много писем с разными вопросами, в том числе и с сообщениями о сбоях скриптов. Наличие нескольких отдельных скриптов позволяет достаточно быстро вносить нужные изменения и доработки, что облегчает мою работу. |
|
Создано: 25 ноября 2010 19:12 · Личное сообщение · #15 Сегодня я выкладываю 16 часть туториала по распаковке Asprotect, в котором приведено решение по поиску проверок целостности кода (CRC) второго типа. Такую проверку, я правда встречал только в программах Asprotect, в которых разработчики этого протектора используют в качестве защиты от восстановления подпрограмм с эмулированными инструкциями. Возможно, что такой метод защиты может встретиться и в других программах, где авторы этих программ применяют в качестве одной из опций эмуляцию инструкций в подпрограммах. Как всегда, буду благодарен за отзывы, замечания и критику. e713_25.11.2010_CRACKLAB.rU.tgz - Устранение проверок CRC второго типа.rar | Сообщение посчитали полезным: _ruzmaz_ |
|
Создано: 25 ноября 2010 19:37 · Личное сообщение · #16 |
|
Создано: 25 ноября 2010 19:56 · Личное сообщение · #17 |
|
Создано: 25 ноября 2010 20:58 · Поправил: PE_Kill · Личное сообщение · #18 vnekrilov моё резюме, если конечно интересно. Я то же занимался вопросом этих странных проверок и пришел к выводу, что это макросы исключительно самого ASProtect. 1) В ASProtect SDK нет ни одного макроса такого маленького размера, значит пользователи банально не знают как вставить такой макрос в код. 2) ASProtect не навешивает эту сложную виртуальную машину на маркеры UserPolyBuffer, но в нем самом все маркеры UserPolyBuffer ведут в VM, а код вырезанных процедур забит мусором. Именно с этим мусором и сверяются новые макросы при проверке. Т.е. такой макрос невозможен, если UserPolyBuffer не уходит в VM, а для обычных пользователей он туда не уходит. 3) Новые макросы портят именно тот регистр, который используется ниже, причем не просто используется, а является базой для каких либо структур. Анализатор в ASProtect очень слабый, я сильно сомневаюсь, что он может так точно предсказывать базовые регистры процедуры. Причем в некоторых процедурах этот регистр используется исключительно в вызываемых процедурах. ----- По мне так это уже крик отчаяния, использовать для своего протектора кастомную версию протектора и не давать ее лицензионным пользователям, которые должны и дальше защищать свои творения старым гавном, которое еще 5 лет назад полностью снималось на автомате. ----- Yann Tiersen best and do not fuck |
|
Создано: 25 ноября 2010 22:07 · Личное сообщение · #19 Gideon Vi пишет: может быть зальешь актуальные версии скриптов одним архивом? Да, наверное так и сделаю PE_Kill пишет: моё резюме, если конечно интересно. Конечно, твое резюме интересно. Я полностью согласен с твоим выводом о том, что эти макросы используются исключительно для Asprotect. Кстати, в последнее время пользователи начали потихоньку использовать макросы для получения подпрограмм с эмулированными инструкциями. Но пока этот чрезвычайно сильный метод защиты применяется довольно редко. PE_Kill пишет: По мне так это уже крик отчаяния, использовать для своего протектора кастомную версию протектора и не давать ее лицензионным пользователям, которые должны и дальше защищать свои творения старым гавном, которое еще 5 лет назад полностью снималось на автомате. + 1 |
|
Создано: 26 ноября 2010 01:40 · Личное сообщение · #20 |
|
Создано: 26 ноября 2010 01:45 · Личное сообщение · #21 |
|
Создано: 26 ноября 2010 02:07 · Поправил: ClockMan · Личное сообщение · #22 |
|
Создано: 26 ноября 2010 10:48 · Личное сообщение · #23 Ну как я и говорил ты путаешь. Это макрос EnvelopeCheck. Один из его вариантов проверяет чтобы в коде были украдены вызовы api (я называю эту вариацию ApiChecker). Когда аспр протектит файл он заменяет jmp dword ptr [iat] (FF25 XXXXXX) на call AsprDll_GetApi (E8 XXXXXX) Этот макрос как раз и проверяет восстановлены переходники или нет, если вместо E8 стоит FF25/FF15 то портятся регистры или стек. Это стандартный макрос SDK, ему уже лет 5-6. ----- Yann Tiersen best and do not fuck |
|
Создано: 26 ноября 2010 11:17 · Поправил: vnekrilov · Личное сообщение · #24 |
|
Создано: 26 ноября 2010 11:31 · Личное сообщение · #25 Да я знаю, посмотри папку SDK в ASProtect там эти маркеры есть, сколько они там размером такой и получится в защищаемой программе. vnekrilov пишет: Кстати, это стандартная проверка CRC Это не проверка CRC а проверка Envelope. Отличие в том, что в первом случае проверяется контрольная сумма кода, а во втором проверяется навешан ASProtect или его сняли. Вот оригинал маркера: Code:
----- Yann Tiersen best and do not fuck |
|
Создано: 26 ноября 2010 12:10 · Личное сообщение · #26 PE_Kill пишет: Этот макрос как раз и проверяет восстановлены переходники или нет, если вместо E8 стоит FF25/FF15 то портятся регистры или стек. Это стандартный макрос SDK, ему уже лет 5-6. Ну тогда понятно спс за подсказку. ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
|
Создано: 26 ноября 2010 13:23 · Личное сообщение · #27 |
|
Создано: 11 декабря 2010 03:34 · Поправил: [0utC4St] · Личное сообщение · #28 После выполнения скрипта "Перенаправление прыжков из кода программы в новую секцию файла" возникает необходимость выделить в отладчике область кода программы чтобы сохранить сделанные изменения. Как быть когда изменения были внесены в несколько секций программы? Уточню: как оптимально выйти из этого положения? з.ы. На деле, как правило, основная часть изменений приходится на одну секцию. Из Положения выходил следующим образом: выделял код той секции в которой было больше перенаправлений и сохранял изменения. Затем отдельно сохранял для другой, бинарно сравнивал 2 дампа и вносил изменений в хекс-редакторе в тот дамп, в который меньше писать. ----- z+7v+/Lq4CAtIO/l8OL76SD44OMg6iDv8O7i4OvzLiCpIMPu7OXwINHo7O/x7u0= |
|
Создано: 11 декабря 2010 03:51 · Личное сообщение · #29 [0utC4St] пишет: бинарно сравнивал 2 дампа и вносил изменений в хекс-редакторе в тот дамп, в который меньше писать мазохист второй раза скрипт запусти, уже на измененном файле | Сообщение посчитали полезным: [0utC4St] |
|
Создано: 11 декабря 2010 07:04 · Личное сообщение · #30 |
|
Создано: 11 декабря 2010 16:53 · Поправил: [0utC4St] · Личное сообщение · #31 vnekrilov, прочтя "Распаковка Asprotect (часть 15, выпуск 2)" решил покрутить Resource Builder скаченный Увидел это когда плаг ODbgScript (1.78.3.0) приказал долго жить, попутно накрыв мохнатым сейфом и саму ольку. Кто сталкивался с этим и кто что имеет сказать по этому поводу? ----- z+7v+/Lq4CAtIO/l8OL76SD44OMg6iDv8O7i4OvzLiCpIMPu7OXwINHo7O/x7u0= |
<< 1 ... 27 . 28 . 29 . 30 . 31 . 32 . 33 . 34 . 35 . 36 . 37 ... 38 . 39 . >> |
eXeL@B —› Протекторы —› Анализ ASProtect |