Jump to content
    

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

:bb-offtopic:

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

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

:bb-offtopic:

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

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

 

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

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

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

 

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

 

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

 

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

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

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

 

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

 

Share this post


Link to post
Share on other sites

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

db      0x55,0x56,0x57

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

 

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

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...