Nanomites v0b
От: nen777w  
Дата: 26.11.13 18:22
Оценка: 1 (1)
Привет!
Как и обещал, выкладываю бета версию скриптов для создания защиты приложения на основе приема (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, там вроде не должно быть проблем.
— Добавить дополнительные механизмы обеспечивающие целостность генерируемых таблиц (есть пару идей)

Соственно все, на этот момент времени. Если что то забыл допишу потом.
Надеюсь на интересную дискуссию.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.