Добрый день! Объясните мне пожалуйста принципы криптования exe dll Хочу написать самый простой криптор на fasm, от нечего делать Что такое полиморфный криптор, xor и какие еще бывают В общем мне пригодится всё
Оригинальные секции pe-фаела переводятся в свой формат, пакуются, шифруются, етц. В секцию кода вставляется код декриптора, который получает управление при старте ехе, перемещает свое тело в свободную область, расшифровывает/распаковывает оригинальные секции и раскладывает их по своим местам; после чего выполняет работу лоадера по настройке импортов/релоков и передает управление на оригинальную точку входа. Криптор, код дешифровщика которого будет уникальным и не похожим на предыдущие при каждом билде. Все ограничено только твоей фантазией
Orbit, Возьми лучше исходники какого-нибудь готового пакера (вот прям upx и взять) и что-нибудь переделай в нем по-своему: другой алго шифрования, обход эмуляторов (не абсолютный, без vmbe, лол), етц.
Есть протектор, есть пакер. Самое простое - это XOR. https://kaimi.io/2012/09/pe-packer-step-by-step-1/ https://coder.pub/2014/08/pe-file-packer-step-by-step-1/ https://github.com/azerg/PackerPE/blob/master/PackerPE/loader/src/loader.cpp
Orbit, Ключевой вопрос - почему вы этим интересуетесь ? Крипторы не имеют отношения к виксам. Далее вы это поймёте. Целью криптования является скрытие модуля от ав. Любая обработка запускаемого файла для очистки от детекта именуется криптованием. Криптор же это приложение, которое делает такую очистку. Любые сильные техники, которые используются виксами - мутации етц крайне редко используются в крипторах, лишь частично. Потому что крипторы пишуться школотой. Это загрузчики из памяти с довесом кучи костылей, необходимых для сбивания сигнатур, детекта отладчиков и пр. Уровень таких приложений низкий. Обычно это копипаст древних кодов. Из за полного отсутствия актуальности используемых техник, впрочем как их отсутствия это не используется виксами. То что именуется как фуд это понятие ньюби, которые почистив и допилив загрузчик утверждают что он чист(ав). Время(длительность) фуда крайне мало. rmn, > обход эмуляторов (не абсолютный, без vmbe, лол Это типо сарказм ? Тот мотор является первой имплементацией юзер стекового визора. Это сильная техника, которая была развита до анклавов. Но видимо вы не в теме.
Мы верим в вас, на другой борде о вас отзываются как о маге волшебнике, который не хочет пилить до конца. Утрите им нос. RunPE есть где в сети для быстрого сбивания сигнатур от ав?
Тоже для сбития сигнатур: В сети Vazonez выкладывал утилиту с неприличным названием, АВзвезда (вместо "звезда" матерное слово).
galenkane, > RunPE есть где в сети для быстрого сбивания сигнатур от ав? Полноценной реализации нет(без запуска процесса), нет норм способа повторно выполнить инициализацию процесса, отвалится на коннекте к csrss. Смысла такое делать тоже особо нет. https://yadi.sk/d/a0n1noAB3Fa3pM
А почему хотите именно на асме писать ? Чем С++ не устраивает ? Например в той-же визуалке, можно делать асм. вставки для доступа к нужным регистрам и т.д. Тем самым у вас будет понятный код, в котором легко разобраться. Крипторы выполняют роль сбития сигнатурного детекта, но они не могут обходить проактивную защиту и т.д., это должно-быть реализованно в самом вирусе. Полиморфизм можно добится, путём генерации мусора в рандомном порядке например, а также шифруя с разным ключом. Простой алгоритм криптора: По сути криптор - Это две программы: Стаб и конструктор с гуем, который поместит в конец стаба наш зашифрованный файл. 1)Криптуем вирус конструктором, например этим https://ru.wikipedia.org/wiki/XTEA Там пример реализации, просто можно твзять код. 2)Помещаем криптованный файл в конец стаба. 3)Далее алгоритм стаба: - Считываем по смещению наш криптованный вирус. - Делаем антиэмуляцию, это может-быть мусор, задержки, динамическое выделение памяти и т.д. - Расшифровываем вирус. - Запуск нашего вируса в памяти, путём создания процесса например, можите воспользоваться этим например:https://github.com/jozemberi/PE-Crypter/blob/master/runPE.h Итог, простой криптор - Это Расшифровка, антиэмуляция и запуск в памяти.
Джойнер скучно делать, хотя отличие только-что в джойнере запуск идёт с диска. Лучше начинать на языках высокого уровня, асм сложно слишком, да и смысла нет для написания таких программ.
R307, > 1)Криптуем вирус конструктором, например этим https://ru.wikipedia.org/wiki/XTEA Каким есчо конструктором, вы термины попутали. Конструктор это двиг для пересборки кода, точнее для сборки кода по графу. Не надо чепухи, её и так много.
Конструктор в данном случае - Это гуй, который "обработает" файл, по мойму по контексту моего поста это должно-быть понятно, что-то типо этого: Далее по ссылке я указал просто алгос шифрования, там уже готовые функи, вот эти взять, что-бы самому не делать: Код (Text): #include <stdint.h> void xtea_encipher(unsigned int num_rounds, uint32_t *v, uint32_t const *k) { unsigned int i; uint32_t v0=v[0], v1=v[1], sum=0, delta=0x9E3779B9; for (i=0; i < num_rounds; i++) { v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); sum += delta; v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); } v[0]=v0; v[1]=v1; } void xtea_decipher(unsigned int num_rounds, uint32_t *v, uint32_t const *k) { unsigned int i; uint32_t v0=v[0], v1=v[1], delta=0x9E3779B9, sum=delta*num_rounds; for (i=0; i < num_rounds; i++) { v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); sum -= delta; v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); } v[0]=v0; v[1]=v1; } Ну по мойму ТС не спрашивал какой это тон, а задал конкретный вопрос, если честно то всем пофиг на "Хороший/плохой" тон, пока крипторы работают, а основная задача таких программ - Это сбитие детекта, с этой задачей такие программы справляются и делаются легко, поэтому криптры как писались/продавались, так и будут писаться/продаваться, изучаться, как-то так...