2011-01-22 2 views
1

Я хотел бы зашифровать несколько моих классов obj c в моей игре iphone, которые обрабатывают данные и классы openfeint, которые обрабатывают оценки.Как можно зашифровать объектные классы C

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

Как это делается, какие хорошие методы защищают эти данные и препятствуют попыткам обмануть данные?

Благодаря

ответ

2

Чтобы действительно шифровать скомпилированный код, вероятно, больше проблем, чем того стоит. Вы должны изолировать код, который будет дешифрован в динамическую библиотеку, и загрузить библиотеку вручную после ее дешифрования в памяти. Динамические библиотеки и другие методы, которые вы могли бы использовать для изменения кода во время выполнения, не одобряются Apple при использовании с iOS.

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

#define MyNicelyNamedClass somegarblegarble 
#define myNicelyNamedMethod othergarblegarble 

@interface MyNicelyNamedClass 

-(id) myNicelyNamedMethod; 

@end 

Это относительно безболезненный способ для разработчика сделать код Objective-C менее очевидным для других. Это примерно так же эффективно, как обфускация javascript, то есть это еще одно небольшое препятствие, которое будет отговаривать многих случайных злоумышленников.

Если вы выбираете значащие, но вводящие в заблуждение имена вместо прямого мусора, вы можете даже обмануть кого-то в расходовании часов, пробивая неправильный код. Не то, чтобы вы когда-либо знали, но это приятная мысль.

+0

как это будет работать, если метод имеет аргументы? – Pripyat

+2

... или если вы сильно используете KVO & KVC? ... или вы используете интерфейс Builder? ... или если вы используете какой-либо другой серьезный механизм самоанализа? ... и не забудьте отменить обфускацию в ваших журналах сбоев. – bbum

1

Шифрование классов страдает «SHIPPING замок с ключом» проблема, что любая DRM или подобная система безопасности имеет.

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

Обратите внимание, что вы, вероятно, создадите очень тонкие и интересные ошибки, и ваш метод будет обойден (кому-то понадобится дополнительный день).

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