Russian Qt Forum
Март 29, 2024, 10:55
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Обфускация строк бинарника
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Обфускация строк бинарника (Прочитано 12766 раз)
qate
Супер
Offline
Сообщений: 1175
Обфускация строк бинарника
«
:
Октябрь 07, 2016, 15:53 »
Применял ли кто обфускацию строковых констант бинарника ?
Чтобы любопытный пользователь не смог заглянуть и посмотреть строки, некоторые из которых могут содержать чтото важное.
Для целей защиты от дурака.
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: Обфускация строк бинарника
«
Ответ #1 :
Октябрь 07, 2016, 16:12 »
Можно попробовать из алфавита набирать индексами нужное слово.
Можно в ресурсах хранить картинки и расшифровывать их в строки по цвету.
Можно штрихкоды коды хранить в ресурсах.
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Обфускация строк бинарника
«
Ответ #2 :
Октябрь 07, 2016, 16:20 »
Можно сжимать строку получив байтовый массив (например, алгоритмом deflate)
Байтовый массив кодировать в base64 и хранить его как строку
Потом обратными получить исходную строку.
Кодировать/декодировать по какому-нибудь алгоритму шифрования. Ключ, где-то спрятать среди переменных.
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
qate
Супер
Offline
Сообщений: 1175
Re: Обфускация строк бинарника
«
Ответ #3 :
Октябрь 07, 2016, 22:29 »
не, иметь в коде не читаемую самому же себе строку неудобно совсем
я думаю использовать чтото из
https://github.com/andrivet/ADVobfuscator
вот думаю какие проблемы могут быть
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Обфускация строк бинарника
«
Ответ #4 :
Октябрь 07, 2016, 22:56 »
Цитата: qate от Октябрь 07, 2016, 22:29
не, иметь в коде не читаемую самому же себе строку неудобно совсем
я думаю использовать чтото из
https://github.com/andrivet/ADVobfuscator
вот думаю какие проблемы могут быть
Вы случаем не пароли / секретные ключи храните?
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Обфускация строк бинарника
«
Ответ #5 :
Октябрь 08, 2016, 09:47 »
Цитата: qate от Октябрь 07, 2016, 22:29
не, иметь в коде не читаемую самому же себе строку неудобно совсем
Вообще-то строки должны храниться в ресурсах (не путать с Qt ресурсами)
Записан
Bepec
Гость
Re: Обфускация строк бинарника
«
Ответ #6 :
Октябрь 08, 2016, 09:51 »
Он имеет в виду строковые константы в коде. Которые в бинарник попадают в читаемом виде, вполне мб даже в ресурсы.
Тут нужно или обфусцировать весь бинарник после компиляции, либо писать свою "надстройку" типа moc. Готовых решений для такой задачи я не видел
Записан
qate
Супер
Offline
Сообщений: 1175
Re: Обфускация строк бинарника
«
Ответ #7 :
Октябрь 08, 2016, 10:24 »
Цитата: gil9red от Октябрь 07, 2016, 22:56
Вы случаем не пароли / секретные ключи храните?
а где же их еще хранить ? )
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4724
Re: Обфускация строк бинарника
«
Ответ #8 :
Октябрь 08, 2016, 14:08 »
самое банальное — использовать шифр Цезаря
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
qate
Супер
Offline
Сообщений: 1175
Re: Обфускация строк бинарника
«
Ответ #9 :
Октябрь 08, 2016, 18:30 »
Цитата: kambala от Октябрь 08, 2016, 14:08
самое банальное — использовать шифр Цезаря
это ответ на вопрос о хранении пароля в бинарнике или обфускации строк ?
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4724
Re: Обфускация строк бинарника
«
Ответ #10 :
Октябрь 09, 2016, 01:18 »
обфускация
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
poru
Самовар
Offline
Сообщений: 103
Re: Обфускация строк бинарника
«
Ответ #11 :
Октябрь 10, 2016, 12:32 »
А что если самораспаковывающийся архив? Для дурака, с первого взгляда совсем не заметно и не понятно, да и распаковка будет не на диске, а в ОЗУ.
Записан
qate
Супер
Offline
Сообщений: 1175
Re: Обфускация строк бинарника
«
Ответ #12 :
Октябрь 10, 2016, 15:36 »
Цитата: poru от Октябрь 10, 2016, 12:32
А что если самораспаковывающийся архив? Для дурака, с первого взгляда совсем не заметно и не понятно, да и распаковка будет не на диске, а в ОЗУ.
1. сторонний софт не охота тянуть, возиться с его багами
2. можно и командой распаковать, так что защиты никакой нет
3. это ничем не лучше обфускатора "на шаблонах"
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Обфускация строк бинарника
«
Ответ #13 :
Октябрь 10, 2016, 16:12 »
Я использовал SimpleCrypt
Записан
AlexEx
Чайник
Offline
Сообщений: 76
Re: Обфускация строк бинарника
«
Ответ #14 :
Октябрь 21, 2016, 11:41 »
У меня сделано просто (в VS2008, но идея понятна), строковые константы вынесены в файл asm, где видны в читаемом виде:
Код:
.686
.model flat, C
DefXorSym EQU 71h
_STR MACRO string, xorSym
IRPC _x0,string
DB '&_x0' XOR xorSym
ENDM
DB xorSym
ENDM
PUBLIC regKey
PUBLIC regSubKey1
PUBLIC regSubKey2
.stack
.data
regKey LABEL BYTE
_STR <Software\Microsoft\Windows\CurrentVersion\Policies\System>, DefXorSym
regSubKey1 LABEL BYTE
_STR <DisableTaskMgr>, DefXorSym
regSubKey2 LABEL BYTE
_STR <DisableRegistryTools>, DefXorSym
end
В файле cpp объявлено:
Код:
extern "C" char regKey[];
extern "C" char regSubKey1[];
extern "C" char regSubKey2[];
const unsigned long uXor = 0x71;
}
Функция декодирования примитивна: идти по массиву и xor'ить, пока не получим нулевой байт.
Допилить до Qt-овых особенностей уже нетрудно
.
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...