Сейчас на форуме: (+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, который можно скачать по ссылке |
|
Создано: 01 октября 2010 15:49 · Личное сообщение · #2 |
|
Создано: 06 октября 2010 20:58 · Личное сообщение · #3 vnekrilov решил дописать свой декомпиль DelayVM2 я смотрю ты сильно продвинулся в этом вопросе. Поэтому есть несколько вопросов к тебе. 1) Для декомпиля я использовал версию 2.41 02.26. У меня константы следующие: Code:
Как видишь они отличаются, хотя вроде как разбирали мы одну и ту же версию. 2) Не только эти константы шифруются, но и те, что внутри обработчиков DecodeX0 Вот пример Decode70 (JCC) Code:
Вот эти константы 02Ch, 042h,... тоже другие в новых вырсиях? ----- Yann Tiersen best and do not fuck |
|
Создано: 06 октября 2010 21:06 · Поправил: PE_Kill · Личное сообщение · #4 PS. А ты случайно Asprotect_241_0226.dll не из замого аспра выдернул? Потому что сам аспр никогда не защищают собой же, по крайней мере раньше. PPS Может кому будет интересно, особенно шароварщикам. Сколько багов я нашел в VM, разобрав ее только на половину: Code:
Code:
Code:
Code:
Code:
Code:
----- Yann Tiersen best and do not fuck |
|
Создано: 07 октября 2010 10:30 · Поправил: vnekrilov · Личное сообщение · #5 PE_Kill пишет: У меня константы следующие При упаковке программы с использованием эмулированных подпрограмм, для закриптовки первого байта опкода инструкций, протектор использует генератор случайных чисел, используя текущее время. Если взять одну и ту же программу, и защитить ее, например, сейчас и через 5 минут, то константы для раскриптовки первого байта опкода инструкций будут разными, несмотря на то что используется та же самая версия протектора. Поэтому мне и не удалось создать универсальный скрипт для восстановления эмулированных подпрограмм, и приходится "выполнять танцы с бубном" для поиска соответствий констант и корректировки кода скрипта, о чем я писал в туториале по снятию аспротекта. Одно счастье, что программисты почему-то не используют эту фичу для защиты своих программ, что значительно упрощает их распаковку. |
|
Создано: 07 октября 2010 11:20 · Личное сообщение · #6 vnekrilov видимо мы о разном говорим. Константы в case блоке, который определяет какой опкод эмулируется не меняются в билде. Сейчас вот упаковал заново жертву и посмотрел - спустя 2 года константы не изменились. Меняются данные в таблицах, но на выходе всегда одно и то же. Вот тут: mov eax, dword ptr [esi+3Fh] mov al, byte ptr [eax] add al, byte ptr [edi+4h] в AL всегда одна и та же константа в пределах одного билда ASProtect. ----- Yann Tiersen best and do not fuck |
|
Создано: 07 октября 2010 21:22 · Личное сообщение · #7 vnekrilov пишет: При упаковке программы с использованием эмулированных подпрограмм, для закриптовки первого байта опкода инструкций, протектор использует генератор случайных чисел, используя текущее время В пределах одной версии защиты ([2.56 build 03.17]), на 20 билдах одного и тоо же проекта проекта константы не изменились. |
|
Создано: 07 октября 2010 22:18 · Личное сообщение · #8 Вот я про это и говорю. Меняются данные в таблицах, а сами константы соответствия опкодов не меняются. Вот у тебя в статье: Зашифрованные значения Asprotect_241_0226.dll 0h D4h 1h E0h 2h 4Eh 3h 8Dh 4h 07h 5h 5Bh 6h 5Eh 7h 99h 8h C7h 9h FCh У меня для этой же версии ASProtect и этот же билд значения: 0h 2Ch 1h 42h 2h B6h 3h DDh 4h 7Eh 5h E7h 6h 96h 7h CAh 8h A8h 9h 1Dh vnekrilov не мог бы ты скинуть ASProtect который ты разбирал и с которого сдампил (Asprotect_241_0226.dll)? ----- Yann Tiersen best and do not fuck |
|
Создано: 07 октября 2010 22:43 · Личное сообщение · #9 |
|
Создано: 08 октября 2010 03:20 · Поправил: PE_Kill · Личное сообщение · #10 |
|
Создано: 08 октября 2010 09:42 · Личное сообщение · #11 |
|
Создано: 09 октября 2010 06:33 · Поправил: PE_Kill · Личное сообщение · #12 vnekrilov хотел спросить. Ты команды, выдранные из дополнительной VM сам собираешь, в смысле ассемблируешь? Там же вроде размер опкодов нигде не указан. Если в программе будет вот такой код (обрати внимание на опкоды): Code:
Твой декомпиль правильно восстановит команды? Иначе код корректно на место не встанет. ----- Yann Tiersen best and do not fuck |
|
Создано: 09 октября 2010 12:12 · Личное сообщение · #13 PE_Kill пишет: Ты команды, выдранные из дополнительной VM сам собираешь, в смысле ассемблируешь? Там же вроде размер опкодов нигде не указан Посмотри код "VM_recovery_main_code.exe", который приложен к комплекту скриптов. Этот очищенный от мусора код виртуальной машины для восстановления эмулированных подпрограмм. Этот код VM содержит Fh веток, в зависимости от значения первого байта опкода инструкции (от 0 до F). Для некоторых веток массив данных содержит и размер опкодов (структуру массива данных я подробно описывал в туториале). PE_Kill пишет: Твой декомпиль правильно восстановит команды? Иначе код корректно на место не встанет. VM правильно восстанавливает все команды на их родное место, используя для этого адрес расположения инструкций и размер опкода инструкций. Поэтому код корректно становится на свое место. Посмотри, к примеру, восстановленный код в файле UnASProtect_241_0226.exe (к комплекту я приложил список адресов, где находятся эмулированные подпрограммы). |
|
Создано: 09 октября 2010 15:04 · Личное сообщение · #14 Да нет я не про это, я про дополнительную VM в которой исполняются только инструкции mov,sub и add Ты писал, что там воруются только: Code:
Вот их то ты сам собираешь по опкодам? Кстати не знаю с тех пор ты исправил свою ошибку или нет. Там больше инструкций исполняется. Или ты просто не стал писать про все? Т.е. ADD REG_1, DWORD PTR [REG_2+CONST] тоже исполняется в этой VM Если кому интересно, приатачиваю листинг, созданый в HexRays с разобранной дополнительной VM 4cfb_09.10.2010_CRACKLAB.rU.tgz - VM_Ext.txt ----- Yann Tiersen best and do not fuck |
|
Создано: 09 октября 2010 16:34 · Личное сообщение · #15 PS Ну в общем посмотрел я твой код. add reg32, const ты восстанавливаешь так: Code:
так то в принципе правильно, компилятор обычно оптимизирует именно так. Но нельзя исключать, что команда может быть записана и так: Code:
и тогда неправильно восстановится. Я наверное сделаю брутфорс оптимизации, размер всех инструкций то известен. Сначала скомпилить наиболее частые опкоды, если размер не совпадет то брутфорсить оптимизацию каждой инструкции пока размер всего кода не совпадет с заявленным. Хотя возможно это и лишнее. ----- Yann Tiersen best and do not fuck |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 21 октября 2010 12:37 · Поправил: ELF_7719116 · Личное сообщение · #16 AsProtect 2.xx копирует частично SecuRom v7.4.xx . В последнем при трех способах эмуляции: внутренний вызов функции эмулируемой программы, вызов WinAPI и второй спец вызов для аллоков, в анти-дампинговый пихается два адреса, по первому читается двойное слово №1, затем по двойному слову №1 читается двойное слово №2, которое опредяляет через сколько двойных слов по старшим адресам вверх от DWORD №1 лежат ключи(XOR) для расшифровки адреса запрашиваемой функции. Второй адрес нужен для последнего способа эмуляции(аллоки задействованы). Вот кусок из карты работы SecuRom v7.40.03: b38f_21.10.2010_CRACKLAB.rU.tgz - algoritm.zip |
|
Создано: 21 октября 2010 15:03 · Личное сообщение · #17 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 21 октября 2010 19:03 · Личное сообщение · #18 |
|
Создано: 02 ноября 2010 21:50 · Поправил: [0utC4St] · Личное сообщение · #19 В учебных целях решил разобрать При прохождении скрипта "Восстановление таблицы IAT и вызовов APIs" скрипт выкидывает ошибку: Code:
Собсна такое замечено на версиях [1.51 build 09.22 Beta]* и [1.56 build 03.17]. Другие не попадались. ____ *- исправлено после поста int. ----- z+7v+/Lq4CAtIO/l8OL76SD44OMg6iDv8O7i4OvzLiCpIMPu7OXwINHo7O/x7u0= |
|
Создано: 02 ноября 2010 22:21 · Личное сообщение · #20 |
|
Создано: 02 ноября 2010 22:34 · Поправил: [0utC4St] · Личное сообщение · #21 int, пардонте. Хотел сказать ----- z+7v+/Lq4CAtIO/l8OL76SD44OMg6iDv8O7i4OvzLiCpIMPu7OXwINHo7O/x7u0= |
|
Создано: 03 ноября 2010 02:33 · Личное сообщение · #22 [0utC4St] пишет: При прохождении скрипта "Восстановление таблицы IAT и вызовов APIs" скрипт выкидывает ошибку: Проверил работу скриптов на этой программе. Все работает без сбоев. Мне трудно гадать, что здесь произошло, но, зачастую, ошибка возникает потому, что у отладчика не отключена опция "Show name of local module" на вкладке "Addresses". Скрипт сначала оценивает команду, например CALL 00444444, и затем ассемблирует эту команду в код прививки. Если адрес CALL будет сопровождаться именем модуля, например CALL Sam_00444444, то наличие имени не позволит ассемблировать эту команду, и покажет указанную ошибку. Поэтому, в туториалах по распаковке Asprotect я специально обращал внимание на отключение опции "Show name of local module". |
|
Создано: 03 ноября 2010 02:54 · Поправил: [0utC4St] · Личное сообщение · #23 vnekrilov, вкладка "Adresses" PhantOm Восстановление таблицы IAT и вызовов APIs.osc MD5: 5861da3b16848c1f8b2853f9040218f6 SHA-1: a2f1fa7e3fd9b0a5dfe46434a5fce0a89c64d10e Дело не в этом. з.ы. Только что пробывал на виртуальной машине с чистой олькой, фантомом и выставленными настройками => результат тот же. з.з.ы. Возможно просто версии скриптов у нас разные. Не могли бы вы отдельно кинуть те скрипты на которых у вас: Все работает без сбоев. ----- z+7v+/Lq4CAtIO/l8OL76SD44OMg6iDv8O7i4OvzLiCpIMPu7OXwINHo7O/x7u0= |
|
Создано: 03 ноября 2010 06:00 · Личное сообщение · #24 |
|
Создано: 03 ноября 2010 07:53 · Личное сообщение · #25 |
|
Создано: 03 ноября 2010 13:46 · Личное сообщение · #26 |
|
Создано: 04 ноября 2010 08:50 · Личное сообщение · #27 |
|
Создано: 20 ноября 2010 17:12 · Личное сообщение · #28 |
|
Создано: 20 ноября 2010 18:15 · Поправил: BAHEK · Личное сообщение · #29 vnekrilov Вот: ASprotect 2.58 SKE ASPack 2.25 |
|
Создано: 20 ноября 2010 18:32 · Личное сообщение · #30 |
|
Создано: 20 ноября 2010 19:50 · Личное сообщение · #31 |
<< 1 ... 27 . 28 . 29 . 30 . 31 . 32 . 33 . 34 . 35 . 36 . 37 ... 38 . 39 . >> |
eXeL@B —› Протекторы —› Анализ ASProtect |