декомпиляция операторов препроцессора Objective-C - PullRequest
2 голосов
/ 22 февраля 2012

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

Я смотрю в обфускацию Objective-C. На простом методе, который я нашел здесь , пользователь должен препроцессор изменить имена методов на бред. Мой вопрос заключается в том, может ли декомпилятор распознавать операторы препроцессора, чтобы он мог декомпилировать исходный код обратно в исходные имена методов. Пример из приведенного выше вопроса ниже:

#ifndef DEBUG
#define MyClass aqwe
#define myMethod oikl
#endif

@interface MyClass : NSObject {
}

- (void)myMethod;

Возможно ли, если код не откомпилирован для отладки, он может быть декомпилирован обратно во что-либо, кроме

@interface aqwe : NSObject {
}

- (void)oikl;

Ответы [ 2 ]

4 голосов
/ 22 февраля 2012

Вы могли бы абсолютно не убрать это. Препроцессор запускается до того, как компилятор получит свои жирные лапы в коде, так что это похоже на то, как если бы вы вручную прошли и заменили все вхождения MyClass на aqwe и т. Д.

Хотя вы должны спросить себя, почему вы хотите это сделать. Это просто запутывание, а не защита всего кода. Люди все еще могут посмотреть и увидеть код, который включает каждый метод. Вы просто меняете название символов.

0 голосов
/ 22 февраля 2012

Вы сэкономите много времени, боли и хлопот, если просто решите использовать один из множества доступных обфускаторов вместо попытки изобретать велосипед.

Взгляните на эту ветку, вы найдете много полезной информации для начинающих:

https://stackoverflow.com/questions/337134/what-is-the-best-net-obfuscator-on-the-market

...