Запретить сброс заголовков через исполняемый файл в приложении Cocoa OSX - PullRequest
0 голосов
/ 13 декабря 2018

Я провожу эксперименты с моим приложением macacoa и обнаружил, что могу сбросить все заголовочные файлы (.h файлы) исполняемого файла моего приложения, используя другой исполняемый файл класса-дампа, доступный на Github.

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

Команда для дампа:

./class-dump -H /Users/abc/Documents/app -o ./Headerfiles

Любые предложения

Заранее спасибо

1 Ответ

0 голосов
/ 14 декабря 2018

Я сомневаюсь, что есть какой-то способ предотвратить это.

Информация о классе, методе, свойстве, протоколе и категории Objective-C все динамически регистрируется во время выполнения.Поэтому раздел __DATA вашего исполняемого файла должен содержать всю эту информацию.Такие инструменты, как class-dump, просто перепроектируют эти таблицы для создания файла эквивалентного интерфейса (.h).

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

Уродливое, половинное решение - полное потенциальных проблем - это попытка запутать код какой-то формой:

#define MyClass m0
#define doSomething m1
#define userClickedButton m2
#define hitCount m3

@interface MyClass
- (void)doSomething;
- (IBAction)userClickedButton:(id)sender;
@property NSUInteger hitCount;

будет отображаться в скомпилированном приложении как

@interface m0
- (void)m1;
- (void)m2:(id)o;
- (unsigned long)m3;
- (void)setM3:(unsigned long)n;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...