LINUX.ORG.RU

Обфускация строк сишным препроцессором, как?

 ,


1

3

Как обфускацировать строку на этапе компиляции? Типа по такому виду ->

#define OBFUSCARE(str) /*how?*/

const char *  deobfuscare(const char * obs_str)
{
  /*decode str*/
  return obs_str;
}

...

const char obs_str[] = OBFUSCARE("supersecretstr");
const char*plain_str = deobfuscare(obs_str);


В hex редакторах же строка supersecretstr становиться «мусором» типа 1fga5f3ggegva7 тойже длинны что и основная строка

Ответ: никак

Deleted

Последнее исправление: Deleted (всего исправлений: 2)
#define OBFUSCATE(str) "supersecret" str

const char *deobfuscate(const char *obs_str)
{
  return obs_str + 11;
}
i-rinat ★★★★★
()

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

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

А если серьёзно, то никак.

Вот и я думал думал и подумал что никак, но подумал что вдруг я не прав. Хотя наверное есть надмножество cpp которое имеет такую штуку в комплекте, хотя тогда проще sed пройтись.

Deleted
()
Ответ на: комментарий от annulen

Спасибо, но нет. Интерес был в обычном препроцессоре языка С. Но всё равно спасибо, пригодится.

Deleted
()

Никак. Если есть в коде, что его читает, то и другой прочесть сможет. Я таким макаром даже обфусцированные RSA «секреты» доставал.

beastie ★★★★★
()

RSA ? Наркомания конечно, но всё же))) использовать ассиметричный шифр для запутанности кода

sparks ★★★★
()
Последнее исправление: sparks (всего исправлений: 1)
Ответ на: комментарий от beastie

Сначала прокомментировал, потом остальные коменты прочитал. Любые трюки препроцессора разбиваются о

gcc -E

sparks ★★★★
()
Ответ на: комментарий от Harald

Да мне и не нужно особо (но оказалось интересно) нужно было постороннему человеку он спросил, я задумался, решения не нашёл стало интересно. Вот и всё.

Deleted
()
Ответ на: комментарий от Harald

Ти какой то злой, попей чаю вкусного. Обфускацировать данные можно и в открытых проектах. Не код же, а «ресурсы».

Deleted
()
Ответ на: комментарий от Harald

Для очень дальновидного разработчика который предвидит что в будущем станет популярна, а потом законодательно закреплена практика внедрять код лицензии со всеми копирайтами в каждый бинанный или/и исполняемый модуль, совместно с этой практикой появится довольно успешный бизнес ректутинга, биржи труда после нововведений взорвёт революция, людям будут давать копеечку типа установи приложение и получай 0,5 цента в час, моллионы мобильных и десткопных осей будут содержать эти приложения которые на самом деле боты считывающе данные со всех бинарников которые реально популярны у людей следовательно продукт хороший и разработчики молодцы, список разработчиков полученный из бинарников будет отгружатся на сервера который приняв имена и эл почны запускает ботов в социальных сетях которые отыскивают целевых разработчиков, собрав всю доступную информацию из интернетов всё передаётся скромному ИИ который либо явно получает информацию что разработчик сейчас в поиске работы или вполне вероятно может её скоро начать искать (потому что выложил пост твиттере что его начальник плохой) на вновь сгенерированные данные отправляются прямо шаблонизатору который выводит на автоматическую биржу труда сю подноготную о человеке и его статус «ищет работу» а в колонке с боку сомнительные варианты будут в под заголовком «рекомендуем приглядется» за доступ к этой информации будет браться корпоративная подписка, и работодатель будет получать всю свежую и актуальную информацию по новым работникам от успешных приложений, которые сейчас можно переманить к себе…

Разработчик закончив размышлять о таком варианте событий подумал «А вот хрен вам» и решил что бы не нарушать закон вставлять свои данные, но! в запутанном виде что не нарушает закон и вполне удобно для него.

Ну ладно - сказал разработчик, завтра налабаю - и затушив сигарету о стену курилки зашагал по коридору что эхом всё тише и тише отчеканивало его шаги в ревебрации пока звук не иссяк вовсе.

Deleted
()
Ответ на: комментарий от Harald

Сам ты бред… тут можно целый фильм снять :D По сценарию псевдонимов не существует #йявеликийсценарит #художникаможетобидетькаждый. Это была шутка ©. Попей чаю ты слишком серьёзен. Тема уже закрыта /thread

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Harald

!для интереса нужность это самое последнее дело, баба-думссс

Deleted
()
Ответ на: комментарий от Deleted

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

помнится, в одной компании, где я работала, программисты придумали «секретную библиотеку». написали сами систему генерации паролей и к исходникам имел доступ только один человек. а пароли эти везде использовались, в виде либы. в итоге, после разных перипетий и изменений на сервере, сорцы эти просто пролюбили. никто уже не знал, что там внутри. человек, который это писал, давно уволился. был бинарь, «as is», и ничего больше. и его везде тащили, как наследие фараонов, потому что на него много чего было завязано.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

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

Deleted
()
Ответ на: комментарий от Harald

зачем это нужно свободному проекту :)

Защита от неизобретательного, но жадного дурака.

Есть такая уникальная игра Screeps. Это, вероятно, единственная онлайн-MMO для программистов, где соревнуешься с другими не своей реакцией, толщиной интернета, или быстротой видеокарты, а только своим кодом.

Так вот, для неё многие писали ботов. Один из самых известных Overmind. Его киллер-фича: несколько ботов разных игроков могут объединяться вместе и помогать друг другу. Но код открыт, и кто-то может исправить себе бота, чтобы уничтожать других игроков, выдавая себя за их союзника.

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.