Всем привет! Запустил небольшой курс, как можно ревёрсить программы, в конце курса дойдём до самых сложных примеров, которые накрыты VMP и множеством других протекторов. Весь курс предназначен на нативные приложения, курс будет для "чайников" в плане ревёрс-инженерии, без знаний C/C++ будет очень тяжело для понимания Ну что же, начнём! PyArmor Что это? PyArmor - софтина для запутывания фрагментов кода в реальном времени и обфускация кода в статике Либа: pytransform Уязвимость: интерпретация языка Что такое интерпретация? Простыми словами: Байткод Python попадает в виртуальную машину языка и обрабатывается в основе машинного кода В чём уязвимость? После деобфускации каждый метод(!) попадает в виртуалку, откуда уже можно и вытащить участок этого байткода ! - Попадает не весь байткод, а выполняемые участки Как победить PyArmor? 1.Скачиваем исходники Python той же версии, что и обфусцированная цель 2.Находим функцию _PyEval_EvalFrameDefault 3.Добавляем это: if (Py_EnterRecursiveCall("")) return NULL; tstate->frame = f; FILE *dump_file = NULL; dump_file = fopen("./Grizzly.txt", "ab"); PyMarshal_WriteObjectToFile((PyObject *) f, dump_file, 2); fclose(dump_file); Код if (Py_EnterRecursiveCall("")) return NULL; tstate->frame = f; FILE *dump_file = NULL; dump_file = fopen("./Grizzly.txt", "ab"); PyMarshal_WriteObjectToFile((PyObject *) f, dump_file, 2); fclose(dump_file); 4.Компилируем Python 5.Заменяем библиотеку 6.Запускаем жертву Инициализированные участки будут дампиться в Grizzly.txt Далее их просто декомпилируем через uncompyle6 Credits CodeCrackers Grizzly 0x72 Всем удачи в начинаниях! Всем пока! Предыдущие уроки: https://zelenka.guru/threads/2552541/ https://zelenka.guru/threads/2550799/ https://zelenka.guru/threads/2573850/ Ограничение ответов в теме: Автор темы разрешил отвечать в теме только этим группам (и вышестоящим): Местный, Команда форума и Кураторы.
blobizer, Я это тоже со временем понял, дизасемблирование да и впринципе реверс натива гораздо интереснее.