Перейти к содержанию
    

Обфускатор кода

Здравствуйте все! Уважаемые знатоки, подскажите, существует ли обфускатор кода для MSP430?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте все! Уважаемые знатоки, подскажите, существует ли обфускатор кода для MSP430?

А чем он должен отличаться от обфускатора для любого другого МК? Или вообще даже не МК, а любого си-кода?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А чем он должен отличаться от обфускатора для любого другого МК? Или вообще даже не МК, а любого си-кода?

Наверное ничем :). Просто я ничего не знаю об обфускаторах, а запутать код надо. Причем у меня особенность: мой проект написан на ассемблере (около 22000 строк). Поэтому мне нужен либо обфускатор для кода на ассемблере, либо обфускатор для скомпилированной программы (если такой существует).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Причем у меня особенность: мой проект написан на ассемблере (около 22000 строк). Поэтому мне нужен либо обфускатор для кода на ассемблере

 

:bb-offtopic:

Код на ассемблере в 22,000 строк в обфускации не нуждается :biggrin:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это ближе к полиморфным вирусам + упаковщик и/или шифрование + оверлеи. Вопрос стоят ли усилия результата? Если в чужие руки попадет исходник, то на 95% достаточно возможности тиражирования, чему обфускация ни капли не мешает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:bb-offtopic:

Код на ассемблере в 22,000 строк в обфускации не нуждается :biggrin:

Смотря для кого :)

 

Это ближе к полиморфным вирусам + упаковщик и/или шифрование + оверлеи. Вопрос стоят ли усилия результата? Если в чужие руки попадет исходник, то на 95% достаточно возможности тиражирования, чему обфускация ни капли не мешает.

Тиражирование как раз приветствуется. Однако работа программы зависит от лицензии. Чтобы хоть как то защититься от взлома и обхода лицензии надо обфусцировать код для усложнения дизассеблинга.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это ближе к полиморфным вирусам + упаковщик и/или шифрование + оверлеи.

Можно подробнее об этом?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что тут подробней в рамках поста на форуме? В рамках одного поста от мимопроходившего тема слишком большая и сложная. Вкрации:

 

Полиморфизм кода добавляем команды которые не имеют смысла, перетасовываем используемые регистры и прочие интересные вещи для которых нужно много учения и практики. Аля:

1. Разбавить код А-Б-С до вида А-АА-Б-ББ-С где результаты АА и ББ не нужны, но в АА и ББ старательно используют результаты данных из правильных шагов. Результаты АА и ББ должны вливаться в результат, но не влиять на него

2. Если А(1) и Б(1) пользуются регистром 1. Поменять код на А(1)-(1->2)-Б(2)-(2->1). Чем больше такой лапши тем сложнее анализирующему удержать её в голове.

И такого придумано много.

 

Упаковщик-оверлей:

Используем что-нибудь сверхмалое упаковывающее/распакоывающее вроде lz4. Компилируем код память, но переносим в память не стандартным стартапом, а своей оберткой, которая перед вызовом распаковывает/расшифровывает из упакованного хранилища. Память используется сразу под несколько оверлеев, из которых понятное дело активен только один. Особую радость может предоставить вложенное использование оверлея из оверлея много раз.

 

Вот только писать всё это придется самому.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чем больше такой лапши тем сложнее анализирующему удержать её в голове.

И такого придумано много.

 

Используем что-нибудь сверхмалое упаковывающее/распакоывающее вроде lz4. Компилируем код память,

 

Когда нибудь пробовали дизассемблировать программы?

То что не используется дизассемблеры типа IDA сразу покажут. Отметят красным цветом и выкинут.

Это затруднит хакеру работу максимум на пару часов. А программер чтобы сделать это затратит месяцы.

 

Про оверлей не смешно, MSP коды выполняет из Flash. Какие еще оверлеи?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

из простейшего: собрать в hex, потом из hex превратить в кашу вида

db      0x55,0x56,0x57

и в таком виде отдавать.

те кому надо дизассемблировать это всё равно сделают, а не имея опыта дизассемблирования сражаться с кашей из db dw dd никто не станет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Когда нибудь пробовали дизассемблировать программы?

То что не используется дизассемблеры типа IDA сразу покажут. Отметят красным цветом и выкинут.

Это затруднит хакеру работу максимум на пару часов. А программер чтобы сделать это затратит месяцы.

 

Да пробовал, а вы понимаете что иногда примеры приходится упрощать? Достаточно ли понятная фраза "Результаты АА и ББ должны вливаться в результат, но не влиять на него"? В любом случае я не претендую на лавры писателя защиты. Может быть Вы сможете написать на эту тему больше лучше и понятней?

 

Про оверлей не смешно, MSP коды выполняет из Flash. Какие еще оверлеи?

Бывают накладки когда пользуешься "Сообщения с Вашего последнего посещения" :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть Вы сможете написать на эту тему больше лучше и понятней?

 

Просто приходилось работать в проектах где целые микроконтроллеры с фотографии кристалла копировали и в железе воспроизводили вместе с прошивкой.

 

А будущее обфускации несомненно в области гомоморфного шифрования

 

Хотя мне ваш отсыл на lz4 понравился. Я уже скачал и начал портирование. Классная вещь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Полиморфизм кода добавляем команды которые не имеют смысла, перетасовываем используемые регистры и прочие интересные вещи для которых нужно много учения и практики. Аля:

1. Разбавить код А-Б-С до вида А-АА-Б-ББ-С где результаты АА и ББ не нужны, но в АА и ББ старательно используют результаты данных из правильных шагов. Результаты АА и ББ должны вливаться в результат, но не влиять на него

2. Если А(1) и Б(1) пользуются регистром 1. Поменять код на А(1)-(1->2)-Б(2)-(2->1). Чем больше такой лапши тем сложнее анализирующему удержать её в голове.

И такого придумано много.

Фигня всё это из прошлого века. "Анализирующий" ничего не держит в голове, на это есть компьютер. Берется самая что ни на есть обфусцированная прошивка и запускается на программном эмуляторе целевого процессора. Любые регистры, точки останова по любым условиям и декриптованный код в памяти, как на ладони. Даже IDA не всегда нужен. Ну разве что на первых шагах посмотреть правильность точки входа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...