Russian Qt Forum
Ноябрь 24, 2024, 02:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Обфускация строк бинарника  (Прочитано 13832 раз)
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« : Октябрь 07, 2016, 15:53 »

Применял ли кто обфускацию строковых констант бинарника ?
Чтобы любопытный пользователь не смог заглянуть и посмотреть строки, некоторые из которых могут содержать чтото важное.
Для целей защиты от дурака.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Октябрь 07, 2016, 16:12 »

Можно попробовать из алфавита набирать индексами нужное слово.
Можно в ресурсах хранить картинки и расшифровывать их в строки по цвету.
Можно штрихкоды коды хранить в ресурсах.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #2 : Октябрь 07, 2016, 16:20 »

Можно сжимать строку получив байтовый массив (например, алгоритмом deflate)
Байтовый массив кодировать в base64 и хранить его как строку

Потом обратными получить исходную строку.



Кодировать/декодировать по какому-нибудь алгоритму шифрования. Ключ, где-то спрятать среди переменных.
Записан

qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #3 : Октябрь 07, 2016, 22:29 »

не, иметь в коде не читаемую самому же себе строку неудобно совсем
я думаю использовать чтото из https://github.com/andrivet/ADVobfuscator
вот думаю какие проблемы могут быть
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #4 : Октябрь 07, 2016, 22:56 »

не, иметь в коде не читаемую самому же себе строку неудобно совсем
я думаю использовать чтото из https://github.com/andrivet/ADVobfuscator
вот думаю какие проблемы могут быть


Вы случаем не пароли / секретные ключи храните? Улыбающийся
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Октябрь 08, 2016, 09:47 »

не, иметь в коде не читаемую самому же себе строку неудобно совсем
Вообще-то строки должны храниться в ресурсах (не путать с Qt ресурсами)
Записан
Bepec
Гость
« Ответ #6 : Октябрь 08, 2016, 09:51 »

Он имеет в виду строковые константы в коде. Которые в бинарник попадают в читаемом виде, вполне мб даже в ресурсы.

Тут нужно или обфусцировать весь бинарник после компиляции, либо писать свою "надстройку" типа moc. Готовых решений для такой задачи я не видел Улыбающийся
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #7 : Октябрь 08, 2016, 10:24 »

Вы случаем не пароли / секретные ключи храните? Улыбающийся

а где же их еще хранить ? )
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #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 Offline

Сообщений: 1177


Просмотр профиля
« Ответ #9 : Октябрь 08, 2016, 18:30 »

самое банальное — использовать шифр Цезаря

это ответ на вопрос о хранении пароля в бинарнике или обфускации строк ?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #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 Offline

Сообщений: 103


Просмотр профиля
« Ответ #11 : Октябрь 10, 2016, 12:32 »

А что если самораспаковывающийся архив? Для дурака, с первого взгляда совсем не заметно и не понятно, да и распаковка будет не на диске, а в ОЗУ.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #12 : Октябрь 10, 2016, 15:36 »

А что если самораспаковывающийся архив? Для дурака, с первого взгляда совсем не заметно и не понятно, да и распаковка будет не на диске, а в ОЗУ.

1. сторонний софт не охота тянуть, возиться с его багами
2. можно и командой распаковать, так что защиты никакой нет
3. это ничем не лучше обфускатора "на шаблонах"
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #13 : Октябрь 10, 2016, 16:12 »

Я использовал SimpleCrypt
Записан
AlexEx
Чайник
*
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #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   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.107 секунд. Запросов: 23.