Форум программистов, компьютерный форум CyberForum.ru

Обфускация компилируемых исходных кодов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
igor_petrov
18 / 8 / 3
Регистрация: 26.01.2014
Сообщений: 155
27.06.2014, 15:56     Обфускация компилируемых исходных кодов #1
Хотелось бы поподробнее узнать по поводу обфускации компилируемых исходных кодов.
Вот, например, есть обфускатор Stunnix C++, (да и не только он, но просто как пример)

который преобразовывает некоторые части кода в запутанный
к примеру числа преобразовывает в (0x5e1 + 5967 - 0x1d30) - это выражение равно нулю
а строковые переменные заменяет \x## хекс-записью
например "\x75\x70\x64\x61\x74\x65\x53\x74\x61\x74\x69\x73\x74\x69\x63\x73\"
также, обфускатор убирает все пробелы и отступы и заменяет имена переменных на ililillil / xzzxzxx, что делает просмотр исходника практически нечитаемым

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

после такого рода преобразований, а конкретно:

* хекс-запись строковых переменных;
* преобразования чисел
* имена переменных/классов/дефайнов и пр.

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

решает ли такой метод в защите/запутывании кода? т.е. будут ли на ассемблере явные различия?

Спрашиваю не сколько из-за интереса, сколько из-за надобности, потому что работодатель заинтересован в защите одного алгоритма, и он хочет максимально усложнить обратный инженеринг программы.

взломать можно все, но имеет ли смысл вообще париться, если толком различий нет
ps: буду рад получить линки на различную документацию, что-нибудь поизучать в этом направлении, потому что сам в этом новичок

спасибо!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2014, 15:56     Обфускация компилируемых исходных кодов
Посмотрите здесь:

C++ Генератор 2D кодов
Таблица кодов C++
Объединение несколько кодов. C++
C++ генератор кодов
C++ объединить преимущества кодов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
 Аватар для HighPredator
5351 / 1734 / 320
Регистрация: 10.12.2010
Сообщений: 5,120
Записей в блоге: 3
27.06.2014, 16:25     Обфускация компилируемых исходных кодов #2
Цитата Сообщение от igor_petrov Посмотреть сообщение
решает ли такой метод в защите/запутывании кода? т.е. будут ли на ассемблере явные различия?
Нет. Потому, что обфускатор не меняет логику программы. Если вы хотите запутать читающего исходный текст, то пожалуйста. Но хакер до исходного текста так и так не доберется и будет работать с ассемблерным кодом. А на том уровне совсем другие методы работают.

Добавлено через 47 секунд
Цитата Сообщение от igor_petrov Посмотреть сообщение
буду рад получить линки на различную документацию
Домой приеду найду вам статью про защиту бинарников.
WhiteP
605 / 203 / 23
Регистрация: 20.11.2012
Сообщений: 419
27.06.2014, 16:50     Обфускация компилируемых исходных кодов #3
igor_petrov, обфускация исходного текста абсолютно никак не влияет на дизассемблерный листинг, т.к. все метки, имена, вид записей числа - нужны только программисту. Когда компилятор "перемалывает" исходник в исполняемый файл - в любом случае все имена отбрасываются.
Если нужна защита (запутывание) именно исп. файла - то тут подходов только три -
1. Учиться самому. Это ОЧЕНЬ долго, на самом деле. Так как чтобы качественно запутать программу и усложнить жизнь реверсеру - нужно самому стать реверсером и понимать что к чему.
2. Нанять знающего человека, чтобы он поработал с программой. Это большие деньги.
3. Использовать какой-нибудь хороший коммерческий протектор.
Ну и все зависит от того, насколько программа востребована и сложна.
Если написать такой алгоритм гораздо сложнее, чем отреверсить - то реверснут в любом случае (если оно надо).
igor_petrov
18 / 8 / 3
Регистрация: 26.01.2014
Сообщений: 155
27.06.2014, 17:10  [ТС]     Обфускация компилируемых исходных кодов #4
Благодарю вас за разъяснение
Хотелось бы почитать какие-нибудь статьи, даже может быть книжки по теме, если кто знает хороший материал, прошу поделиться

Имею в виду инверс-инженеринг, какие-нибудь хитрые приемчики и т.д.
Погуглю сам в этом направлении, но если есть доп. материал, так сказать буду рад
WhiteP
605 / 203 / 23
Регистрация: 20.11.2012
Сообщений: 419
27.06.2014, 18:08     Обфускация компилируемых исходных кодов #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
igor_petrov, ну на русском мало книг на тему. Единицы, я бы сказал.

Пирогов В. - "Ассемблер и дизассемблирование".
Панов А. - "Реверсинг и защита программ от взлома".
Касперски К. - "Искусство дизассемблирования".
Касперски К. - "Техника отладки программ без исходных текстов".
Касперски К. - "Философия и техника хакерских атак".
Касперски К. - "Энциклопедия антиотладочных приемов".
Много-много неплохих статей на тему у Криса Касперски. Часть - есть как отдельные главы в книгах, часть - только статьи.

У зарубежных авторов - можно поискать.

Eilam E. - Reversing. Secrets of Reverse Engineering
Kaminsky D. - Reverse Engineering Code With Ida Pro
Eagle C. - The IDA Pro book
Tonella P. - Reverse Engineering of Object Oriented Code

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

Aquilina M. - Malware Forensics Investigating and Analyzing Malicious Code
Aycock J. - Computer Viruses and Malware
Sikorski M. - Practical Malware Analysis
Singh A. - Identifying Malicious Code Through Reverse Engineering
igor_petrov
18 / 8 / 3
Регистрация: 26.01.2014
Сообщений: 155
27.06.2014, 18:09  [ТС]     Обфускация компилируемых исходных кодов #6
WhiteP, выражаю благодарность!
HighPredator
 Аватар для HighPredator
5351 / 1734 / 320
Регистрация: 10.12.2010
Сообщений: 5,120
Записей в блоге: 3
27.06.2014, 20:36     Обфускация компилируемых исходных кодов #7
Вот нашел статью. Там немного с другой стороны подходят к этому вопросу и на другом ЯП, но разобраться при желании вполне реально.
http://delphikingdom.ru/asp/viewitem.asp?catalogid=775
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2014, 22:34     Обфускация компилируемых исходных кодов
Еще ссылки по теме:

C++ Как правильно инклюдить файлы исходных кодов? MSVS08
C++ Компиляция исходных файлов
C++ Обфускация

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gazlan
2867 / 1815 / 272
Регистрация: 27.08.2010
Сообщений: 4,919
Записей в блоге: 1
27.06.2014, 22:34     Обфускация компилируемых исходных кодов #8
Цитата Сообщение от WhiteP Посмотреть сообщение
У зарубежных авторов
Yandex
Объявления
27.06.2014, 22:34     Обфускация компилируемых исходных кодов
Ответ Создать тему
Опции темы

Текущее время: 14:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru