реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Обфускатор кода
d7d1cd
сообщение Jul 28 2016, 04:44
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Здравствуйте все! Уважаемые знатоки, подскажите, существует ли обфускатор кода для MSP430?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 28 2016, 05:32
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 545
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(d7d1cd @ Jul 28 2016, 10:44) *
Здравствуйте все! Уважаемые знатоки, подскажите, существует ли обфускатор кода для MSP430?

А чем он должен отличаться от обфускатора для любого другого МК? Или вообще даже не МК, а любого си-кода?
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Jul 28 2016, 06:00
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(jcxz @ Jul 28 2016, 08:32) *
А чем он должен отличаться от обфускатора для любого другого МК? Или вообще даже не МК, а любого си-кода?

Наверное ничем sm.gif. Просто я ничего не знаю об обфускаторах, а запутать код надо. Причем у меня особенность: мой проект написан на ассемблере (около 22000 строк). Поэтому мне нужен либо обфускатор для кода на ассемблере, либо обфускатор для скомпилированной программы (если такой существует).
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Jul 28 2016, 07:40
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



Цитата(d7d1cd @ Jul 28 2016, 12:00) *
Причем у меня особенность: мой проект написан на ассемблере (около 22000 строк). Поэтому мне нужен либо обфускатор для кода на ассемблере


bb-offtopic.gif
Код на ассемблере в 22,000 строк в обфускации не нуждается biggrin.gif
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Jul 28 2016, 07:50
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 348
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Это ближе к полиморфным вирусам + упаковщик и/или шифрование + оверлеи. Вопрос стоят ли усилия результата? Если в чужие руки попадет исходник, то на 95% достаточно возможности тиражирования, чему обфускация ни капли не мешает.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Jul 28 2016, 09:25
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(Dima_G @ Jul 28 2016, 10:40) *
bb-offtopic.gif
Код на ассемблере в 22,000 строк в обфускации не нуждается biggrin.gif

Смотря для кого sm.gif

Цитата(Kabdim @ Jul 28 2016, 10:50) *
Это ближе к полиморфным вирусам + упаковщик и/или шифрование + оверлеи. Вопрос стоят ли усилия результата? Если в чужие руки попадет исходник, то на 95% достаточно возможности тиражирования, чему обфускация ни капли не мешает.

Тиражирование как раз приветствуется. Однако работа программы зависит от лицензии. Чтобы хоть как то защититься от взлома и обхода лицензии надо обфусцировать код для усложнения дизассеблинга.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Jul 29 2016, 04:44
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(Kabdim @ Jul 28 2016, 10:50) *
Это ближе к полиморфным вирусам + упаковщик и/или шифрование + оверлеи.

Можно подробнее об этом?
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Jul 29 2016, 07:23
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 348
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



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

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

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

Вот только писать всё это придется самому.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 29 2016, 07:53
Сообщение #9


Mentor
******

Группа: Модераторы
Сообщений: 5 164
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Kabdim @ Jul 29 2016, 10:23) *
Чем больше такой лапши тем сложнее анализирующему удержать её в голове.
И такого придумано много.

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


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

Про оверлей не смешно, MSP коды выполняет из Flash. Какие еще оверлеи?
Go to the top of the page
 
+Quote Post
krux
сообщение Jul 29 2016, 09:37
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 550
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



из простейшего: собрать в hex, потом из hex превратить в кашу вида
Код
db      0x55,0x56,0x57

и в таком виде отдавать.
те кому надо дизассемблировать это всё равно сделают, а не имея опыта дизассемблирования сражаться с кашей из db dw dd никто не станет.
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Jul 29 2016, 10:04
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 348
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Цитата(AlexandrY @ Jul 29 2016, 10:53) *
Когда нибудь пробовали дизассемблировать программы?
То что не используется дизассемблеры типа IDA сразу покажут. Отметят красным цветом и выкинут.
Это затруднит хакеру работу максимум на пару часов. А программер чтобы сделать это затратит месяцы.


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

Цитата(AlexandrY @ Jul 29 2016, 10:53) *
Про оверлей не смешно, MSP коды выполняет из Flash. Какие еще оверлеи?

Бывают накладки когда пользуешься "Сообщения с Вашего последнего посещения" rolleyes.gif
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 29 2016, 10:16
Сообщение #12


Mentor
******

Группа: Модераторы
Сообщений: 5 164
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Kabdim @ Jul 29 2016, 13:04) *
Может быть Вы сможете написать на эту тему больше лучше и понятней?


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

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

Хотя мне ваш отсыл на lz4 понравился. Я уже скачал и начал портирование. Классная вещь.
Go to the top of the page
 
+Quote Post
gerber
сообщение Jul 29 2016, 14:38
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 681
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(Kabdim @ Jul 29 2016, 10:23) *
Полиморфизм кода добавляем команды которые не имеют смысла, перетасовываем используемые регистры и прочие интересные вещи для которых нужно много учения и практики. Аля:
1. Разбавить код А-Б-С до вида А-АА-Б-ББ-С где результаты АА и ББ не нужны, но в АА и ББ старательно используют результаты данных из правильных шагов. Результаты АА и ББ должны вливаться в результат, но не влиять на него
2. Если А(1) и Б(1) пользуются регистром 1. Поменять код на А(1)-(1->2)-Б(2)-(2->1). Чем больше такой лапши тем сложнее анализирующему удержать её в голове.
И такого придумано много.

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


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd August 2017 - 17:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.0145 секунд с 7
ELECTRONIX ©2004-2016