Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Технологии защиты программного обеспечения > Обфускация C++ |
Автор: xperienced 14.10.2010, 13:48 |
Задача - сделать си++ исходник трудночитабельным, позаменять имена функций, классов, переменных. Погуглил - все обфускаторы джава или дотнет. А надо именно си++ и именно исходник (не бинарник). Кто чего знает? |
Автор: UniBomb 14.10.2010, 14:31 |
xperienced, исходники компилируемых языков как правило не обфусцируют. Их в таких случаях просто не дают. Машинный код может быть, но это сильный удар по производительности. Но если есть настойчивое желание, то ctrl+h тебе в помощь. |
Автор: xperienced 14.10.2010, 14:49 |
"как правило" это ведь не "всегда"? Значит надежда ещё остаётся. И речь не о том, чтобы давать свой исходник кому-то. Здесь скорее поиск альтернативы всяким крипторам - хочется сделать код неузнаваемым для анализаторов (читай антивирусов). Почему не использовать именно крипторы? Потому что закриптованность бинарника быстро детектится. зы. ctrl-h не катит. сильно долго и муторно. |
Автор: UniBomb 14.10.2010, 15:34 |
Это скользкая тема. Подобные вещи на форуме запрещено обсуждать. |
Автор: djamshud 14.10.2010, 15:44 |
Я что-то пропустил или антивирусы начали анализировать поведение программ по именам переменных и типов в их (отсутствующих) исходниках? |
Автор: xperienced 14.10.2010, 16:42 |
На самом деле конечно речь не об антивирях. Это я так, для примера. Их так просто не обдуришь. Да и не пытаюсь обсуждать ничего. Просто спрашиваю, знает ли кто об обфускаторах для си++. |
Автор: UniBomb 15.10.2010, 08:11 |
xperienced, если ничего такого делать не собираешся, то.. http://www.google.ru/search?rlz=1C1_____en___RU387&aq=0&oq=C%2B%2B+obf&sourceid=chrome&ie=UTF-8&q=c%2B%2B+obfuscator правильный запрос в гугл. http://soft.necromancers.ru/prog_41853.html, http://www.stunnix.com/prod/cxxo/overview.shtml и http://www.plexaure.de/cobf/index.htm то, что лежит на поверхности. |
Автор: xperienced 15.10.2010, 18:29 |
Спасибо. Поюзаю, видимо, mangle-it. Вот кое-что нагуглил и сам (правда не совсем то, о чём спрашивал): http://www.siliconrealms.com/index.php http://oreans.com/codevirtualizer.php Вдруг кому пригодится. |
Автор: icecrashldr 28.10.2010, 14:09 | ||
http://oreans.com/codevirtualizer.php
C чего вы взяли что это не пакер? Причем относительно дешевый... Так как имеет широкую популярность и кто мы же без каких либо протектов ... Вот если бы он мог любой исполняемый файл морфить , а так токо с заглушками ... На самом деле всю куда проще ... Все что нужно так это динамический декрипт делать , а для это вариантов масса, причем пишется за несколько дней ... |
Автор: kinetik 27.1.2012, 00:06 | ||
А можете примерно сказать где искать алгоритмы и способы? |
Автор: SecRate 5.11.2014, 13:41 |
Ну, например, можно динамически определять текущий адрес в теле процедуры, затем после virtualprotect , декриптить код процедуры, и восстанавливать его после выполнения. Так , обычно поступают основные пакеры. Минус тут в том, что можно всегда перехватить обратный енкрипт и сдампить расшифрованный кусок. Т.е. дополнительно нужна верификация. |
Автор: Proger10 15.6.2016, 09:27 |
Хочу поднять старую тему, но интересную. Тут проскочила фраза: А почему именно не обфусцируют исходники компилируемых языков? Я так понимаю, они сами обфусцируются при компляции. К примеру, заменяются ли имена переменных, удаляются ли комментарии, шифруются ли строчные значения при компиляции? (интересует для C++, можно даже clang компайлер) |
Автор: _zorn_ 18.6.2016, 18:05 |
Не обфусцируют, потому что исходники нужны для того чтобы потом их изменять/дорабатывать/улучшать. Если возникла задача обфусцировать исходник, то это одно из двух - либо ты дебил, либо писал на заказ и привязываешь к себе. А "привязывальщиков" никто не любит. |
Автор: Proger10 19.6.2016, 06:42 | ||
Не понял. Имелось ввиду, естественно: клонируем исходник, один обфусцируем, его компилируем, публикуем бинарник. Исходные исходники остаются у нас для дальнейших правок. Далее всё по кругу. Для чего? Для того, чтобы дизассемблировать было сложнее. Так имеет смысл делать или нет? Скорее всего, нет? Объясните, пожалуйста, почему тогда "нет"? Добавлено через 8 минут и 48 секунд ...В связи с чем, у меня пара вопросов относительно дизасемблирования, покуда сам не шарю: 1. Видны ли имена переменных и функций в бинарнике? (например для C++-LLVM) 2. Видны ли строковые значения в бинарнике? |
Автор: _zorn_ 23.6.2016, 21:23 |
Ой вы такой наивный... Обфусцировать исходник чтобы бинарник был запутанее... ну это делали наверное еще в 90х ![]() Компилятор неплохо так оптимизирует человеческий ###код. Но ДАЖЕ если ему приказать не оптимизировать, это будет "пук в лужу" в качестве "защиты от дезасемблирования" Starforce, Securom, Themida... и т.п. Все они специализировались на защите БИНАРНИКОВ (и не плохо это делали)... Где они сейчас ? ЗЫ. Чтобы не возникало глупых вопросов, изучите ассемблер и пробуйте свой "обфусцированный исходник" под дизасемблером ![]() |
Автор: Proger10 23.6.2016, 21:25 |
Старфорс стоит 450к в год, спрашивал неделю назад у них ![]() А что тогда следует делать для защиты от взлома? Порекомендуйте в каком направлении смотреть, если не в этом? |
Автор: _zorn_ 23.6.2016, 21:28 |
Я не спрашивал сколько он стоит, я спрашивал ГДЕ ОН СЕЙЧАС ? Если вы не можете ответить, то я отвечу - в ОПЕ ![]() Добавлено через 7 минут и 5 секунд Что вы понимаете под "взломом" ? Если обычная ###прожка - не заморачивайтесь. Кому надо все равно взломают (если взлом дешевле покупки). Если что то более серьезное, то тут уже вы мне будете должны денег за консультацию ![]() |