2010-03-14 3 views
5

Я сделал приложение в какао и хотел посмотреть, были ли доступны некоторые строки в нем, поэтому я запустил OTX на нем и, к сожалению, весь мой код был найден. Есть ли способ, который я могу использовать, чтобы сделать мой код более «защищенным» или, по крайней мере, зашифровать/скрыть строки? Причина, по которой я хочу зашифровать строку, - это пароль для сервера. Мне это не нужно, я просто не хочу, чтобы пароль был так легко найти.Напишите код защищенного кода какао

Спасибо за любую помощь

+0

что вы упомянули об OTX и как его использовать? –

ответ

6

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

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

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

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

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

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

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

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

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

+0

Спасибо за ответ. Я не очень опытный программист, но как бы изменить его на функцию C? – nosedive25

+1

@happy: Вместо использования '+ (NSString *) getPassword;' вы создаете 'static NSString * getPassword (void);' вне класса. – kennytm

8

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

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

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

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

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

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

+1

Спасибо за ответ. Единственная причина заключается в том, что пароль в нем - это всего лишь несколько друзей и не будет распространяться. – nosedive25

+3

Друзья? Тогда почему вы хотите зашифровать его? :-) –

Смежные вопросы