Привет!
Как и обещал, выкладываю бета версию скриптов для создания защиты приложения на основе приема (nanomites) который используется в протекторе Armadilo.
Хочу этим постом привлечь заинтересованных людей что бы вместе допилить все это до вменяемого вида и главное попробовать портировать под компилятор cl.
Самой большой проблемой тут является то что генерируемый ассемблерный листинг cl,
не компилируется в mlАвтор: nen777w
Дата: 16.09.13
.
Я читал что это можно исправить правкой полученного кода, но за эту задачу я еще не брался.
А пока то что есть реализовано только для gcc компилятора.
Сам я планирую и дальше развивать то что написал, потому как это будеть частью защиты моего приложения, но "гуртом лечгче батька бити".
Некоторые ремарки:
— пожалуйста не сильно удивляйтесь если в скриптах обнаружите полную чушь, на питоне я пишу можно сказать 3-й раз в жизни так что заодно и учусь.
— если найдутся заинтересованные поддержать разработку, может будет лучше положить все сырки на github, но пока для ознакомления они лежат на RSDN
— этот проект был написан по
этой стаье
, к сожалению исходники в конце были недоступны. Когдя я связался с автором тот сказал что специально убрал их т.к. фирма где он работает делает
комерческий проект на основе этой технологии. Пришлось все делать самому.
Состав архива:
/nanomites_v0b/py/common_constants.py
— таблица инструкций перехода и соответвующий ей код, в дальнейшем развитии планируется ее занчительно расширить, что бы обрабатвать иснтрукции call, loop
а также не относительные переходы типа jmp eax
/nanomites_v0b/py/gcc_s_processor.py
— скрипт генерирующий таблицу с информацией о наномитах а также таблицу контрольных сум
(планируется обработка таблиц CRC для обечпечения целостности (защита от патичнга), пока реализована только на половину)
Входные параметры:
-s — обрабатываемый ассемблерный листинг .s-файлы
-d — результирующий файл
[-m] — ключик для обработки только кода между маркерами (существуют маркеры для наномитов и crc (см. файл: protector_SDK.h))
/nanomites_v0b/py/objdump_nano_tbl_generator.py
— скрипт для обработки результата работы утилиты objdump. По сути генерация h-файла со всеми необходимыми для отладчика таблицами
Входные параметры:
-s — обрабатываемый dump файл
-d — результирующий h файл, со всеми таблицами
/nanomites_v0b/bin_constants.h — вспомогательные макросы
/nanomites_v0b/debuger.cpp — отладчик процесса с наномитами
/nanomites_v0b/do.sh — шелл скрипт для генерации и компиляции тестового проекта
/nanomites_v0b/protector_SDK.h — маркировочные макросы
/nanomites_v0b/test_app.cpp — исходнк обрабатываемого приложения (внутри алгоритм md5)
Проверялось это на Linux, но теоретически должно работать и под unix подобные системы например OSX.
Есть вероятность что это заработает под Windows на MinGW, но еще руки не дошли проверить.
Что есть:
— бета версии скриптов с демонстрацией техники
— генерация полных таблиц наномитов (с фейковыми адресами)
Что хотелось-бы и планируется:
— Привлечь заинтересованных людей к проекту для совместной разработки.
— В первую очередь всетаки правдами-неправдами портировать все для cl. Может у кого то завалялся скрипт или зания которые помогут всетаки ml сожрать то что негенерил cl. У меня пока таких зананий нет.
— Расширить таблицу инструкций а также включить обработку инструкций относительного перехода (уже работаю над этим).
— Попробовать портировать под Intel compiler, там вроде не должно быть проблем.
— Добавить дополнительные механизмы обеспечивающие целостность генерируемых таблиц (есть пару идей)
Соственно все, на этот момент времени. Если что то забыл допишу потом.
Надеюсь на интересную дискуссию.