• XSS.stack #1 – первый литературный журнал от юзеров форума

Морфер исходного кода Си

В этой теме можно использовать автоматический гарант!

Статус
Закрыто для дальнейших ответов.

Jeffs

(L1) cache
Забанен
Регистрация
28.12.2018
Сообщения
611
Реакции
358
Пожалуйста, обратите внимание, что пользователь заблокирован
Продам морфер исходного кода Си.
Написан целиком на си, используется только стандартная библиотека.

Использование:
cmorph.exe [morphtype] [srcfile] [outfile]
- [morphtype] - тип морфинга кода.
Доступные типы:
0 - применяются все методы морфинга
1 - морфинг вызовов функций
2 - морфинг чисел чисел (разложение на мат. операции)
3 - морфинг строк
- [srcfile] - файл исходного кода
- [outfile] - выходной файл (создастся автоматически)

Пример:
cmorph 0 test.cpp test1.cpp

Весь код морфера содержит комментарии на русском языке.

Ограничения:
Оптимизатор может сожрать весь треш-код, который сгенерировал морфер.
Поэтому компиляция возможна только с флагом "/Od"

Цена:
5000$ btc.
Проект отдаётся в одни руки
Гарант приветствуется.
По поводу поддержки обговаривается отдельно.
Первый контакт ПМ.

Сэмплы в аттаче.
MorphTest_orig.exe - файл без обфускации [3 KB]
MorphTest_1.exe - обработанный файл [45 KB]
MorphTest_2.exe - обработанный файл [53 KB]
Пароль к архиву:
Скрытый контент для зарегистрированных пользователей.
xss.pro
 

Вложения

  • Samples.zip
    30.5 КБ · Просмотры: 77
Морфинг то в чем заключается? Производяться мат операции по итогом которой получается нужная строка/код. И за это кто то 5к отдаст?
 
Морфинг то в чем заключается? Производяться мат операции по итогом которой получается нужная строка/код. И за это кто то 5к отдаст?

была здесь тема, Unknown давал от 20 до 50к)
 
была здесь тема, Unknown давал от 20 до 50к)
Он не за это давал. Там куда все труднее было. Не морфинг костант, а "рабочих" переменных и циклов.
Я опять же никаких притензий к автору темы не имею. Но не уж то
1 - морфинг вызовов функций
2 - морфинг чисел чисел (разложение на мат. операции)
3 - морфинг строк
Может вызвать у кого то трудности, может я просто не улавливаю в чем они заключаются.
детект например на
int c = 1337
смотрим чтобы по модулю число небыло очень большим, чтобы небыло переполнения,
его просто меняем на
a = rand(1, 10000)
b = c-a
И код получается
int x = a
int y = b
int c = a+b
(ну если очень сильно упрощать)
Если это строка, то строку toint, результат операций tostring
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Он не за это давал. Там куда все труднее было. Не морфинг костант, а "рабочих" переменных и циклов.
Я опять же никаких притензий к автору темы не имею. Но не уж то

Может вызвать у кого то трудности, может я просто не улавливаю в чем они заключаются.
детект например на
int c = 1337
смотрим чтобы по модулю число небыло очень большим, чтобы небыло переполнения,
его просто меняем на
a = rand(1, 10000)
b = c-a
И код получается
int x = a
int y = b
int c = a+b
(ну если очень сильно упрощать)
Если это строка, то строку toint, результат операций tostring
Посмотри сэмплы и все вопросы отпадут.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Исправил пару багов.
- Если в строке было несколько не повторяющихся чисел, заменялось только первое
- Числа заменялись так же в строке (MessageBoxA(0, "1", 0, 0) - "1" заменялось на мат. операцию)

Todo:
Новый генератор мат. операций
Морфинг циклов (пока что только простых for(int i = 0; i < 123; i++) { ... })
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Актуально.

Переписан алгоритм генерации мат. операций (раньше использовался костыль).
Исправлен баг с морфингом чисел.

Уникальность обработанного кода до 98%!
Пруф: https://xss.pro/threads/35154/post-210761
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Добавлены маркеры.
Если в конце строки содержится один из след. маркеров, морфер пропустит данную строку.
Доступные маркеры:
1) //!0 - не применять ни один из методов морфинга
2) //!1 - не морфить вызов функци в этой строке
3) //!2 - не разбивать числа на мат. операции
4) //!3 - не обфусицировать строки

Пример:
C:
int a = 10; //!2
int b = 12;
После обработки:
C:
int a = 10; //!2
int b = ((1+1)+(2+2) ....);
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Актуально.
Исправлен баг: морфер считал маркеры за комментарии, обрабатывал их тоже (например, маркер //!1 раскладывал на мат операции //!((5*6) - . ..)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Will this bypass things like CFG?
Это морфер сорцев, т.е. берет исходник, и меняет код, сохраняя логику. Причем здесь CFG , ACG и прочее, поясните.
 
Ограничения:
Оптимизатор может сожрать весь треш-код, который сгенерировал морфер.
Поэтому компиляция возможна только с флагом "/Od"

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

Я веду к тому, что без изменения CFG и на уровне морфа кода без доступа к AST,
сигнатуры таким способом убрать скорее всего не выйдет.

Причем здесь CFG
Человек вполне резонно спросил, и он (скорее всего) не имел в виду Control Flow Guard (защиту от эксплоитов), а имел в виду Control Flow Graph или граф потока управления, и может ли морфер изменить структуру графа..
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Попрошу пока что закрыть тему, преписываю код полностью.
 
In all fairness I wrote this then I was really high, so apologies for the misunderstanding. Honestly forgot I commented until I got a notification. However, I did meant control flow graph.
 
Статус
Закрыто для дальнейших ответов.
Верх