Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
igor_petrov
18 / 8 / 3
Регистрация: 26.01.2014
Сообщений: 164
#1

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

27.06.2014, 15:56. Просмотров 2917. Ответов 7
Метки нет (Все метки)

Хотелось бы поподробнее узнать по поводу обфускации компилируемых исходных кодов.
Вот, например, есть обфускатор 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: буду рад получить линки на различную документацию, что-нибудь поизучать в этом направлении, потому что сам в этом новичок

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

Как правильно инклюдить файлы исходных кодов? MSVS08 - C++
Допустим мне нужно создать класс. В Qt я делаю так: создаю файл class.h туда запихиваю описание класса и прототипы функций, а в файле...

Обфускация - C++
Добрый вечер всем. Возникла маленькая проблема. Задача "заменить все не служебные / не зарезервированные слова в файле" - вроде написал,...

Шифрование и обфускация принимается за вирус? - C++
Дело вот в чем. Есть программа, при проверке которой онлайн антивирус и антивирус на компе утверждают, что скачивание не безопасно. Но сам...

генератор кодов - C++
народ можно ли создать генератор кодов?

Таблица кодов - C++
Привет всем))) Подскажите пожалуйста, надо найти код символа, додать к нему число и вывести новый символ. какая функция находит код...

Генератор 2D кодов - C++
Помогите написать генератор на С++, который формирует 2D коды.:help::help:

7
HighPredator
5645 / 1962 / 373
Регистрация: 10.12.2010
Сообщений: 5,685
Записей в блоге: 3
27.06.2014, 16:25 #2
Цитата Сообщение от igor_petrov Посмотреть сообщение
решает ли такой метод в защите/запутывании кода? т.е. будут ли на ассемблере явные различия?
Нет. Потому, что обфускатор не меняет логику программы. Если вы хотите запутать читающего исходный текст, то пожалуйста. Но хакер до исходного текста так и так не доберется и будет работать с ассемблерным кодом. А на том уровне совсем другие методы работают.

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

Имею в виду инверс-инженеринг, какие-нибудь хитрые приемчики и т.д.
Погуглю сам в этом направлении, но если есть доп. материал, так сказать буду рад
0
WhiteP
611 / 209 / 24
Регистрация: 20.11.2012
Сообщений: 433
Завершенные тесты: 1
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
1
igor_petrov
18 / 8 / 3
Регистрация: 26.01.2014
Сообщений: 164
27.06.2014, 18:09  [ТС] #6
WhiteP, выражаю благодарность!
0
HighPredator
5645 / 1962 / 373
Регистрация: 10.12.2010
Сообщений: 5,685
Записей в блоге: 3
27.06.2014, 20:36 #7
Вот нашел статью. Там немного с другой стороны подходят к этому вопросу и на другом ЯП, но разобраться при желании вполне реально.
http://delphikingdom.ru/asp/viewitem.asp?catalogid=775
1
gazlan
3139 / 1915 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
27.06.2014, 22:34 #8
Цитата Сообщение от WhiteP Посмотреть сообщение
У зарубежных авторов
0
27.06.2014, 22:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2014, 22:34
Привет! Вот еще темы с ответами:

Компиляция исходных кодов C# - CMD/BAT
Всем привет. Нужно реализовать чтение исходных данных и запись в файл результатов программы using System; using...

использование исходных кодов C++ в С# - C#
Доброй ночи, форумчане! Есть несколько структур, глобальных переменных и пара классов, написанных и отлаженных на С++. Надо всё это...

Сборка php из исходных кодов - RedHat, Fedora Linux
Добрый день! Пытаюсь собрать php из исходников, для того, чтобы он корректно работал с SSL (по этой статье:...

Просмотр исходных кодов режиме реального времени - Программирование
Доброго времени суток, ребята! очень долго мучаюсь и не могу найти программу, которая позволила бы просматривать выполнение процессов...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru