Напишите безопасный код какао

Я подаю заявку в какао и требуемый, чтобы видеть, были ли некоторые строки в нем легкодоступны, таким образом, я выполнил OTX на нем, и печально весь мой код был найден. Существует ли метод, который я могу использовать, чтобы сделать мой код более "безопасным" или по крайней мере шифровать/скрывать строки? Причина я хочу зашифровать строку, это - пароль для сервера. Я don'd нужен он действительно, защищаю, я просто не хочу, чтобы пароль был так легок найти.

Спасибо за любую справку

5
задан nosedive25 14 March 2010 в 12:56
поделиться

2 ответа

1. Избегайте ObjC в безопасном коде.

Поскольку система классов ObjC сильно зависит от отражения во время выполнения, весь интерфейс должен быть включен вместе с исполняемым файлом. Это позволяет таким инструментам, как class-dump , легко восстанавливать исходный @interface двоичного файла.

Следовательно, функции безопасного кода должны быть написаны как функция C, а не как метод ObjC.

2. Используйте полосу .

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

3. Обфускация.

Вышеупомянутые шаги могут только скрыть логику кода. Но если пароль представляет собой постоянную строку, его сразу видно с помощью утилиты strings . Вы можете запутать это, создав пароль во время выполнения (например, сохраните пароль, закодированный в ROT-13, в файле).

4. Или просто измените свой дизайн.

Независимо от того, насколько хороша ваша система защиты, поскольку хакеры имеют полный контроль над своей машиной, при наличии достаточного количества времени они всегда побеждают. Лучше пересмотреть свой дизайн, например, почему пароль должен идти вместе с исполняемым файлом? Или зачем вообще нужен глобальный пароль?

6
ответ дан 18 December 2019 в 13:13
поделиться

Вы должны никогда не помещать пароль в исполняемый файл.

Это все равно что написать пароль на липкой записке рядом с монитором. Если у злоумышленника есть ваше приложение, он сможет извлечь пароль, независимо от того, какой язык или API вы использовали для его написания.

Например, если я знаю, что ваше приложение подключается к серверу, защищенному паролем, но приложение никогда не запрашивает пароль, то я знаю, что вы допустили ошибку, включив пароль. Чтобы найти пароль, мне достаточно проследить за работой программы, чтобы увидеть, какие участки кода активны в то время, когда она подключается к серверу. Это подскажет мне, где сосредоточить поиск пароля, независимо от того, насколько велико ваше приложение. Тогда поиск пароля станет лишь вопросом времени. Шифрование пароля не поможет, потому что алгоритм шифрования должен быть в приложении, и я смогу разгадать и его.

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

Я уже говорил, что вы никогда не должны вводить пароль в исполняемый файл? Если нет, то позвольте мне повторить, что вы должны никогда не ставить пароль в исполняемый файл.

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

8
ответ дан 18 December 2019 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: