Как закриптовать файл lolz

Обновлено: 01.07.2024

Фреймворк криптора/протектора с антиэмуляцией

Что это за проект и зачем он нужен ?

На самом деле много людей интересуется протекторами и вирусными технологиями. Кто-то хочет заработать, кто-то хочет повысить скилл в кодинге, кому-то просто это нравится и считается, что это своего вроде исскуство.)

Так-как неизвестно-кто будет этим проектом пользоваться и кто прочитает эту статью, начнем с небольшего ликбеза.)

Что-же такое крипторы, их будущее и зачем они нужны ?

Очень нравится, что про это дело говорил Вазонез (До ухода в реал):

Криптор (aka cryptor) — это тулза, которая предназначена для скрытия троянов, ботов и прочей нечисти от детектирования антивирусами.

Крипторы можно разделить на 2 вида: хорошие и дерьмовые:

Хорошие крипторы работают очень просто, быстро и надёжно, хоть и не безглючно. Они дописывают свой код (в контексте таких крипторов этот код называется стабом) в криптуемую программу и шифруют код самой программы.

При запуске первым стартует стаб, он восстанавливает оригинальный код и программа начинает работать. Если криптор свежий (или просто хороший, об этом ниже), то закриптованная программа не будет детектироваться антивирусами.

Чаще всего такие крипторы полиморфны — т.е. код криптора в криптуемой программе каждый раз уникален, заполнен случайными инструкциями и бессмысленными вызовами функций API. Такие крипторы достаточно долго остаются недетектируемыми в силу уникальности каждого закриптованного файла.

Но, как говорится, на каждую хитрую жопу найдется х** с винтом — такие крипторы тоже со временем детектируются, и если автор не чистит свой продукт, то криптор перестает быть уникальным и посылается нах**.

Другим же типом крипторов являются стабовые крипторы. Вообще только дебил будет называть это криптором, но в силу еб*** и многочисленности авторов таких творений, мы не будем отрываться от стаи.

Итак, быдлокрипторы. Суть их работы вот в чем — есть стаб. Стаб в этом случае — это отдельная программа, к которой цепляется криптуемый файл. При запуске файл извлекается, расшифровывается и запускается.

Думаю с этим всё понятно, каково-же будущее крипторов ?

Антивирусы эволюционируют, появились новые технологие защиты (А именно детекты по поведению, детекты по репутации и т.д.), в частноти против крипторов появилась технология сканирования процессов, если вкратце, то антивирус либо сразу перед созданием процесса, либо через какое-то время сканирует процесс.

Тем самым понятно, даже если обойти эмулятор антивируса и сигнатурный детект, мы попадем под детект процесса.

Что делать ?

Менять технологию скрытия детекта, вот следующие решения:

Шифровать и скрывать критичные функции в коде (Например шеллы и т.д.), после расшифровки и запуска такой функции, если использовать антиэмуляцию, антивирус ничего сделать несможет.)

Морфить код, если вкратце, это самомодификация кода на лету (Данный метод реализован в этом крипторе).

3.Первые два способа, это если у вас есть исходник, что-же делать если исходника нет. Неужели крипторы умерли ?

Честно я так и думал, до недавнего времени, но это несовсем так:

Во первых если у вас есть даже зверек без детекта, его неплохо-бы скрыть от реверсера, к тому-же почти все детектится сейчас автоматикой, в таком случае в большинстве случаев робот задетектит сам криптор, по хешу, или не по хешу, но чем сложнее будет реверсеру, тем больше вероятность, что сам троянчик будет дольше жить.

Во вторых не все антивирусы детектят код в памяти, например виндовый дефендер как-то криво с этим работает.

Некоторые антивирусы дают запустить процесс на пару секунд, а этого и может хватит кстати.)))

С лекбезом закончили, на форуме есть темы для глубокого изучения вопроса:

Теперь про конкретный проект, что он делает:

Думал я что-бы такое сделать, просто стабовые крипторы, как описано выше смысла делать нет, через какое-то время будет детект стаба и смысл ?

Поэтому решил я сделать проект, где-бы сам криптованный зверек размещался-бы в дата-секции, т.е. есть программа (я назвал её shell_gen), которая из бинарного файла, делает пошифрованный массив байт и в общем-то больше ничего не делает.)

Далее уже второй проект (Сам криптор), работает с этим массивом данных, т.е. расшифровывает этот массив, делает антиэмуляцию, запускает.

Для достижения метаморфизма, shell_gen генерирует заголовочный файл, со следующими дефайнами:

На основе этих значений при сборки, генерируется "мусорный код" (Математичесие операции и т.д.), который будет случайным, после каждого вызова shell_gen и сборки.

Тем самым код будет разный, как по коду, так и по данным.

Сам криптор (x86_pe_cryptor) имеет модульную структуру:

1)modules/lazy_importer/

Модуль скрытия API из таблицы импорта. Пример использования:

auto base = reinterpret_caststd::uintptr_t(LI_FIND(LoadLibraryA)(kernel32));

LI_GET(base, VirtualFree)(pFile, 0, MEM_RELEASE);

2)modules/murmurhash/

Реализация вычисления хеша murmurhash на ассемблере (FASM, приложен к проекту).

3)modules/trash_gen_module/

4)modules/xtea/

Реализация алгоритма шифрование xtea на ассемблере (FASM, приложен к проекту).

5)modules/run_pe/

Реализация функции запуска, расшифрованного массива PE-файла в памяти, путем создания процесса.

6)modules/antiemul/

7)modules/metamorph_code/

Функции метаморфинга. Смысл, что при сборки, генерируются функции в случайном порядке, функции берутся в modules/metamorph_code/morph.cpp.

8)modules/simple_mutate_pe/

Функции мутации PE перед запуском.

Характеристики получившегося криптора:

1)Отстутствуют "опасные API" в таблице импорта (Такие-как CreateProcess и т.д.).

2)Имеет антиэмуляцию, направленную на привышение лимитов эмулятора антивирусов:

Выделение памяти 32 мегабайт, копирование туда нашего зверька, потом подсчет хеша этого куска памяти, шифровка/расшифровка этого куска памяти, в качестве ключа наш хеш.Эта-же память используется для размещения запуска зверька.

Получение ключа для расшифровки, следующим образом:

Генерируется массив случаных чисел от 0 до 9, далее генерируется хеш этих чисел, хеш генерируется на основе числа, сгенерированного при создании зашифрованного массива защищаемого файла. Далее сортируется массив от 0 до 9, т.е. в итоге у нас получается хеши от числел 0-9. Отсортированные по порядку, это и будет ключ. В момент генерации ключа, также в случайном порядке генерируется мусор из случайных инструкций и вызовов API.

  • Все строки зашифрованы, перед расшифровкой строк,происходит задержка 1 секунду, далее по меткам времени происходит вычисление, действительно-ли была задержка секунду. Если да, то на основе этого вычисляется размер ключа:size_key = (mesure2.wSecond - mesure1.wSecond) + 3. Если sleep был пропущен, то размер ключа будет неверный и расшифровка будет неправильна.

3)При сборки, в main и в модулях:modules/run_pe/, modules/trash_gen_module/ генерируются функции в случайном порядке, функции берутся в modules/metamorph_code/morph.cpp (На данный момент там функции арифметических операций). Тем самым достигается полиморфность не только данных, но и кода каждого образца.)))

4)Перед запуском происходит мутация запускаемого PE, что позволяет обойти детект в памяти у некоторых антивирусов.

В работе с криптологами очень важно иметь доступ к почте. Поэтому, в случае если же вы нашли лог по запросу крипты, СРАЗУ ЖЕ бегите проверять почту. Ибо в 90% случаев информация, подтверждение о логировании, о выводе средств падает на почту. Если, к примеру, не имея доступа к почте у нас всё равно есть возможность обработать логи Пейпал, Ибей и другие, то в этом случае не будет возможности банально попасть на аккаунт.


Холодные кошельки в логах со стиллера сохраняются в отдельной папочке Coins и имеют формат wallet.dat. Для того, чтобы проверить их на содержимое, нужно открыть wallet.datчерез обычный блокнот.


Перед нами откроется код кошелька. Поиском по тексту (CTRL+F) ищем «name».

Name - это и есть адрес кошелька, который скрыт в этой папочке. И теперь, копируя полученный адрес, мы можем проверить его содержимое на бирже. Есть монеты, у которых нет своего блокчейна, в таком случае, прибегнуть к этому варианту не выйдет.

В данном примере, копируем значение «XXs3Mduh8kxPbgqFQKwGWYM9YjH5R6SYbK»

Теперь идем в гугл и пишем /имя кошелька/ explorer. В данном случае minexcoin explorer:


Переходим по ссылке, вставляем адрес и видим баланс:





Тут мы видим биржи, на которых торгуется монета. Заводим там аккаунт, выводим себе монеты. Тут думаю все просто.

А сейчас вы поймете, почему в функциях стиллера так необходимо иметь фонт-граббер файлов. В Азоре есть очень гибкая настройка для граббинга файлов - можно задавать путь, тип файла, максимальный размер и т.д. Под всё подряд настраивать не нужно, вполне достаточно настроить на .txt и .doc с рабочего стола. Почему-то многим жертвам нравится хранить там данные, а иногда и подписывать что от чего. :)


Идем по порядку. Первое, что видим в этом примере - это 12 слов для восстановления блокчейн кошелька. Также выше есть логин, но нет пароля. Пароль, к слову, скорее всего подойдет от файла с логами/пассами. Но сейчас не об этом.




Придумываем от балды почту, пароль, ставим галочку:


Попадаем в кошель. Ну и, соответственно, можем спокойно вывести то, что есть.

Далее, допустим в текстовом файле есть такая вот вещь:

Monero для логина генерирует приватный ключ. Поэтому, если видите вот такую картину, значит это и есть сам вход. Действуем по аналогии блокчейна - заходим на сайт, вводим 13 слов (у всех монет количество слов разное) и смотрим баланс. Выводим.


У Эфира же логин для входа может выглядеть вот так:



Видим баланс. Тут его нет, но всегда еще проверяйтеприкреплены ли к адресу токены:


Токены есть , но они нигде не торгуются.

Если бы имели ценность , то рядом с количеством стояла бы цена . Примерно вот так:


Логины и пароли от бирж и кошельков

Самая сложная часть - чекать логины с паролями. Тут много что надо знать. Я первым делом смотрю куки и, самое главное, есть ли у меня доступ к почте. К обучению приложен парсер для логов и список со всеми возможными сервисами на крипту.


Далее, по списку - загрузили куки, заходим на почту. Следует всегда держать почту открытой, ибо для большинства сайтов требуется подтверждение для входа. Как только вы прочитали письмо, удаляйте его в корзину, а затем и из корзины.

В дополнение я проверяю почту по запросу deposit/withdaw/transfer, т.к. обычно при каких-либо денежных манипуляциях письмо падает на почту и можно понять, с чем мы имеем дело и с какого кошелька начать. Часто на вход стоит дополнительная защита - 2 Factor Auntefication (2FA).

Это 6-ти значный код, который нужно ввести в спец. поле при входе. Для этого нужно искать резервную копию этого самого кода. Она может быть как в текстовом варианте, так и ввиде QR кода. Найти его можно где угодно - смотрим гугл драйв, гугл фото, гугл доки, почту. Бывало такое, что чтобы расковырять какой-либо лог мне необходимо было несколько часов. Если же мы находим те самые 2фа, то скачиваем себе на телефон приложение Google Autentification, сканируем код или вписываем текст, и теперь у нас на телефоне генерируется 6-ти значный код - такой же, как и на телефоне хозяина акка.


Обфускация — это приведение исходного текста программы к виду, сохраняющему ее функциональность, но затрудняющему анализ, понимание алгоритмов работы и модификацию при декомпиляции. Применительно к JavaScript данная технология используется в таких видах теневого онлайн-бизнеса, как загрузки (iframe), спам и SEO. Наша задача на сегодня — изучить все методы скрытия JS-кода, которые, я надеюсь, ты будешь использовать только во благо.

Обфусцированный скрипт

Теория

  • HTML-код страницы;
  • JavaScript-код/JS-файлы страницы;
  • CSS-код/CSS-файлы страницы;
  • Изображения и другую информацию (только в браузерах, поддерживающих протокол «data»).
  • антивирусов (если речь идет об iframe или других вредоносных скриптах);
  • других людей (например, если ты написал чудесный скрипт на JavaScript и не хочешь, чтобы кто-то его «содрал» себе).


Работа JJEncode

Базовое шифрование HTML/CSS

Что делать, если нам нужно зашифровать HTML или CSS код? Все просто: зашифровать на JavaScript, а после расшифровки вставить как HTML код.
Пример вставки (без шифровки/крипта/обфускации):


Точно так же мы поступим и с CSS-стилями:


Теперь постараемся абстрагироваться от HTML и CSS и поговорить только о самой сути — сначала скрытии, а затем и криптовке JavaScript.
Прежде, чем кто-либо захочет посмотреть и расшифровать наш код, он постарается его найти. Ниже ты найдешь несколько действенных методов сокрытия кода от глаз любопытных пользователей.


Прячем слово «][akep» в теле документа

Замена атрибутов тега <script>

Все очень просто, но это нельзя считать хорошей или даже средней защитой, так как она ориентирована на невнимательность пользователей.
Сам принцип донельзя прост. Мы имеем страничку («index.html») и JavaScript-файл, код которого мы хотим скрыть («script.js»). На странице «index.html» у нас указано:


А теперь просто создадим папку «text», в которую положим наш скрипт («script.js») под именем «javascript» и поменяем атрибуты местами. Это будет выглядеть так:


Для лучшего эффекта сразу отвлечем внимание пользователя на путь. Например, так:


Проверено на личном опыте: работает отлично! Таким способом я сам накручивал партнерку по кликам, так как пришлось использовать накрутчик на JavaScript. Администрация партнерки его так и не увидела :).

JavaScript-обработчики

Данный способ также не является универсальным средством для сокрытия JS-кода, но все же я расскажу о нем. Главная идея состоит в том, чтобы прятать код внутрь обработчиков событий onLoad, onClick и т.д. То есть примерно в следующие конструкции:


Например, для тегов body и frameset есть обработчик onLoad, который запустит в нем прописанный код после загрузки страницы/фрейма.
Отмечу, что не для всех объектов обработчики одинаковы.

Cookie, Referrer и адрес

JavaScript можно также спрятать и в такие нестандартные места, как cookie (document.cookie), реферрер (document.referrer) и адрес страницы (location.href). В данном случае код будет храниться как обычный текст, а выполняться с помощью функции eval(), которая берет в качестве аргумента текст и выполняет его как JavaScript-код.
В качестве примера примем такое допущение, что у нас уже установлены кукисы следующего вида:


Теперь выполним этот алерт следующим образом:


Здесь мы берем текст всех cookie-записей для нашего хоста и делим его на части в местах, где стоит «||». Затем берем второй элемент ([1]) и запускаем его через eval().
Данный способ не так уж и плох, так как код, который мы хотим исполнить, не виден на самой странице, а также потому, что мы можем заставить код удалить самого себя! Пример реализации:


Аналогичным образом можно использовать и другие строки, доступные через JavaScript, например, location.href и document.referrer.

Сокрытие кода на Ajax

Нуллбайт атакует Оперу

Этот метод прост и достаточно эффективен, но, к сожалению, он рассчитан только на браузер Opera. Суть метода в том, чтобы перед скрываемым кодом поставить так называемый нуллбайт (нуллбайт или nullbyte — это символ с ASCII кодом «0»). Зачем? Затем, что Opera просто-напросто не показывает код во встроенном просмотрщике после данного символа. Пример:


В данном примере сначала идет нормальный код, который нам скрывать не требуется. Потом с помощью PHP мы вставляем нуллбайт, а после него идет скрываемый код.

Прячемся в HTML-коде и комментариях

Код можно легко спрятать в HTML, затем обработать его и выполнить. Например, вот так:


В данном случае мы спрятали код в атрибутах тега img, после чего обработали код всей страницы, собирая разбросанные кусочки. Таким же способом можно скрывать текст в HTML/JavaScript комментариях:


Отдельно стоит отметить, что очень эффективно можно прятать код внутри популярных фреймворков — например, jQuery, mooTools и подобных. Эти файлы не являются подозрительными, а исследование их займет много времени (хотя всегда существует возможность автоматического сравнения оригинала и измененного файла).
Теперь же, думаю, можно поговорить о том, что, в конце концов, видит эксперт безопасности, и о том, что исследуют антивирусы. Ниже читай о наиболее популярных методах криптовки и обфускации JS-кода.

Субституция стандартных функций/методов JavaScript

Данный метод ориентирован на то, чтобы вместо стандартных функций или методов JavaScript подставить свои переменные:

  1. document.getElementsByTagName
  2. document['getElementsByTagName']

Флуд комментариями и кодом

Данный способ рассчитан на то, чтобы вставить в обфусцируемый код флуд, то есть что-то, что не несет смысловой нагрузки для кода скрипта. Флудить можно как код, так и комментарии:


В данном случае флуд комментариями слишком плотный, хотя на самом деле код был очень простым: « a = "hahaha"; alert(a); ».
Флуд кодом можно также мешать с флудом комментариями. При желании можно написать PHP-функцию для добавления флуда в код JavaScript. Лично я брал какую-то статью с английского блога, парсил на слова, и функция добавляла случайное количество этих слов в комментарии.
Кстати, желательно также использовать многострочные комментарии в форме «фальшивого закрытия»:


Какое из чисел покажет алерт? :)


Работа обфусцированного алерта

Замена текста шестнадцатеричными кодами

Я хотел отнести к этому пункту и кое-какие другие способы преобразования текста, но оставил только этот, так как это единственный способ шифровки, не требующий функций-помощников для расшифровки:


В данном случае мы — во-первых, использовали внутреннюю переменную «cookie» объекта «document», как элемент массива. Во-вторых, мы перевели ее имя в шестнадцатеричный формат. Если бы мы использовали переменную «cookie» через точку, то есть как document.cookie, то мы бы не смогли перевести обращение к ней в шестнадцатеричный формат, так как это относится только к строкам (в массиве ключ является строкой), а в document.cookie строк нет.
PHP-функция перевода в шестнадцатеричный формат:

Трюк с несуществующими функциями

Как мы уже знаем из прочитанного выше, в JavaScript можно вызывать методы, как элементы обьекта: document.getElementById и document['getElementById']. Оба варианта фактически одинаковы, различие есть только в записи — во втором варианте мы используем строку.
Как-то вечером я придумал очень интересный способ получения подобных строк. Например, нам нужно зашифровать вышеупомянутый «getElementById». Отвлечемся на короткое объяснение данного способа с помощью такого примера:


Этот скрипт не будет работать, так как функции b, c и d не были ранее объявлены. Теперь попробуем сделать так, чтобы этот код заработал, для этого будем использовать «песочницу» конструкции try<>catch()<>:


После запуска мы увидим ошибку, а это значит, что, хоть код и не является рабочим, он не остановил выполнение оставшейся корректной части.
А вот теперь мы зададимся вопросом, как такая схема может быть связана с шифрованием строки «getElementById»? А вот так:


После выполнения этого кода у нас получится строка «getElementById», содержащаяся в переменной «x».
В чем соль этого метода? В том, что эвристический анализ антивирусов при нахождении функций будет ругаться на то, что они не существуют. Тем самым мы обфусцируем код не на уровне шифровки строк разными способами, а на уровне получения данных строк от самого JavaScript.

Числа с помощью оператора «

» (тильда) является битовым отрицанием и используется вот так: «alert(

13);». Этот код выведет нам «-14». Работает данный оператор по принципу «-(число+1)».
Представим, что мы хотим присвоить переменной «a» какое-нибудь число, причем нигде это число не писать: «a =

[]»;
Данный код присвоит переменной «a» число «-1». Почему? Потому что массив представляет собой нейтральный элемент с числовым значением «0», следовательно,

0 равносильно «-(0+1)», то бишь -1.
Примеры других преобразований:

Буквы и строки без строковых данных


В данном примере переменная «a» будет содержать текст «code». Разберем подробнее. Попробуй исполнить вот такой код: «alert(alert+'');». Ты увидишь что-то вроде «function alert() < [native code] >». Тем самым, использовав всего-навсего два раза функцию alert(), мы получили совершенно другие символы.
Теперь постараемся понять, как это все работает. Представим, что у каждого объекта, функции и всего остального в JavaScript есть некое «описание». Чтобы получить к нему доступ, нужно явно изменить тип данного объекта или функции на строковой, присоединив, например, пустую строку (+"").

Шифровка строк

Для шифровки/расшифровки строк в JavaScript существуют несколько полезных функций. Разберем некоторые из них:


Также есть два метода объекта String, которые работают с преобразованием символа в ASCII-код и наоборот:


Стоит учесть, что строки можно преобразовывать еще и регулярными выражениями в сочетании с методами .match и .replace. Другие методы можно отнести, скорее, к поиску по строке.

Преобразование объектов/переменных

Имена объектов и переменных можно также преобразовать в строку (например, чтобы потом эту строку зашифровать). Преобразование происходит по тому же принципу, что и преобразование имен методов, то есть с помощью перехода из формы «.метод» в форму «[метод]». Для корректного преобразования нужно найти еще более высокий в иерархии объектов элемент, который бы имел внутри себя слово «document». Имя ему this. Согласно стандартам JavaScript, this не является объектом, а является оператором, возвращающим ссылку на объект. В результате теперь мы можем безболезненно использовать getElementById таким образом: «this[«document»][«getElementById»]».

Привязка кода

Избегание подозрительных функций

Советую также избегать явное использование функций eval(), document.write() и других. При поиске настоящего кода люди часто используют метод подстановки alert() вместо данных функций, так как после этого код можно сразу прочитать таким, каким мы его начинали шифровать, следовательно, весь смысл обфускации пропадает. Как же выполнить код, не используя фунцкию eval()?
Вспомним про то, что во главе всего стоит оператор this. С помощью него функцию eval() можно превратить вот в такой код:


После такого преобразования мы спокойно сможем использовать «a()» вместо «eval()».

Изменение на нечитаемые строки

  1. "o", "O", "0"
  2. "i", "I", "l", "1"
  3. "_" (и варианты "__" , "___" . )
  4. "$" (и варианты "$$" , "$$$" . )

Шифрование кода

Способов шифровки текста существует неограниченное количество, хотя все они основаны на использовании каких-либо текстовых/числовых функций. Часто работает конструкция: eval() + функция_расшифровки() + шифрованная_строка. Попробую без лишней воды показать один из таких способов.
Допустим, нам нужно зашифровать строку «alert(1);». Мне пришло в голову брать по два символа из нее, переводить их в числа (ASCII код), считывать их и рядом ставить первый символ в чистой (без перевода) форме. Только стоит учесть, что, разделяя код на такие двухбуквенные части, мы получим код примерно в 2-2,5 раза больше оригинала, а также нельзя забывать, что такие блоки лучше как-то разделять (как элемент массива или через разделитель). За разделитель возьмем знак «%», так как он делает шифрованную строку похожей на URL-строку. Напишем простой PHP-скрипт:


Вот что у нас получилось: « %a205%e215%t156%190%;59 ».
А теперь напишем дешифровщик этого кода на JavaScript:


Вызов кода в таком случае будет выглядеть так: «eval(d('%a205%e215%t156%190%;59'));».

Теперь остается только немного обфусцировать весь этот скрипт. Мы не будем использовать все описанные методы, а затронем лишь некоторые из них:

  1. z = '. ' Здесь переменной присваевается текст, который был получен переводом строки split!slice!length!fromCharCode!substr!charCodeAt в шестнадцатеричны вид (\x73\x70\x6C\x69\x74. ) без "\х";
  2. _='';for(. > Тут мы переводим обратно split!slice!length!fromCharCode!substr!charCodeAt в переменную "_";
  3. _=_. ('!'); Разделяем строку в тех местах, где есть символ "!";
  4. function ___(__) Описанная выше функция d() в обфусцированном виде;
  5. this['\x65\x76\x61\x6C'](. ); Декодирование строки и запуск кода.

Напоследок

Ну что ж, подведем итоги. При комбинации всех этих способов можно быть на 100% уверенным, что простой или даже средний пользователь не сможет прочитать или скопировать к себе твой код. Но так как специалисты по компьютерной безопасности прекрасно знают о большинстве данных трюков, а также потому что я выкладываю эту информацию на всеобщее обозрение, могу предположить, что данные методы станут более популярными и известными. Я надеюсь, что ты сможешь использовать представленную информацию в благих целях.


Делаем скрипт читаемым

Логотип
Самоделки своими руками

Криптование Что такое.

Нужно закриптовать файл, чтобы он не палился античитами антивирусами ну и конечно запускался (файл .exe). Как это осуществить (желательно в автоматическом режиме, с помощью какой-то проги) ?
P.S.
Я не знаю что такое криптование

Хацкер блеать.Статья 272 и 273.
Криптование осуществляется..Ты не поверишь,криптором.А вообще,есть гугл.Серьезно,почитай там.Там лучше всего опишут.

Хацкер блеать.Статья 272 и 273.
Криптование осуществляется..Ты не поверишь,криптором.А вообще,есть гугл.Серьезно,почитай там.Там лучше всего опишут.


Не надо мне законом тыкать, я знаю что делаю.
Искать крипторы я пробовал, все английские и Вирустотал после криптования выдает тот-же процент опасности.

А полиморф уже отменили? Сама прога - библиотекой (или тупо бинарником), а вот лаунчер - лишних функций не несет, и не палится антивирусами. Зашифровать можешь как угодно, например - на обратимых математических функциях. Лаунчер подгружает бинарник, расшифровывает инструкции, и начинает их выполнять по очереди. Когда антивирус чухнет, он уже будет лежать в глубоком нокауте. А если реализовать еще и backdoor, то есть локально копии бинарника просто не будет, он загружается с удаленного хоста. В общем - надеюс, что понял.

Та блин. Тело вируса записывается в бинарный файл, и каждая строчка рассматривается не как строка символов, а как целое число. Это число делится/умножается на любое другое целое число, на выходе получаем шифрованный текст, который не несет в себе даже следов вредоносного кода. Деление кроме того даст небольшое, но сжатие (даже если не делится без остатка, остаток просто дописывается в конец строки после разделителя, или в качестве остатка считаются первые n символов строки). При умножении размер немного вырастет, но не надо заморачиваться с алгоритмами.
Лаунчер (второй компонент вируса) сам по себе не содержит вредоносного кода, и потому антивирус его не палит. Его задача в час Х загрузить в память шифрованный бинарник, и в построчном режиме его раскодировать/исполнить. Можно совсем извратиться, и в лаунчер зашить компоненты компилятора, или привязать его к существующим распространенным компиляторам (Visual C, присутствующий на многих системах, как компонент игр, или Java. Дополнительно, компилятор может располагаться и на удаленном хосте), тогда файл тела вируса может быть написан в исходных кодах (без компиляции его тоже антивирус не спалит). В этом случае алгоритм прост. Лаунчер подгружает строку кода, передает ее во встроенный/внешний компилятор, исполняет строку, загружает следующую. Подгружать файл можно и с удаленного хоста, при этом, если не попалить лаунчер в крупных антивирусных конторах, жертва и не будет подозревать о том, что компьютер заражен. Ну а самое веселое, что при наличии фантазии можно устроить большой п-ц, немного поэкспериментировав с механизмами запуска.

Читайте также: