2015-10-01 4 views
2

Я разрабатываю инструмент, который пытается сбросить классы заголовков для jailbroken device в приложении. Я использую Clutch, но иногда Clutch не работает с некоторыми новыми приложениями, я думаю об интеграции некоторых инструментов, кроме Clutch. Итак, сначала нужно определить, если двоичный файл написан в Swift, так что я могу переключиться на нужный инструмент для выполнения.Обнаруживать, если приложение iOS написано в Swift

Мой вопрос: Есть ли способ, как командный инструмент, чтобы определить, записано ли бинарное приложение iOS в Swift? Есть ли действительно большая разница в том, как создается двоичный файл, когда он находится в Swift по сравнению с Obj-C?

+4

Некоторые приложения построены с использованием комбинации быстрых и объективных c. Что ты собираешься делать? –

+0

Вы не имеете права удалять файлы заголовков для любого приложения, которое я написал, и которое находится в хранилище приложений. – gnasher729

+0

Это инструмент пентестинг, который определяет, является ли приложение уязвимым для некоторых общих проблем безопасности. см. www.idbtool.com – bluezald

ответ

5

Вы можете использовать nm tool для печати таблицы символов приложения. Если вы ищете swift, например, с помощью grep:

nm YourApp | grep swift 

Это будет печатать что-то вроде этого (и многие другие):

U __swift_FORCE_LOAD_$_swiftFoundation 

Для 100% приложение Objective-C результат будет пустым , Однако вы не можете определить, является ли код 100% Swift, потому что для смешанных приложений objc + swift результат будет похож на быстрое приложение.

+1

Я думаю, что это лучшее решение. Спасибо Адаму – bluezald

5

Внутри файла .app есть папка _CodeSignature. Внутри есть файл CodeResources. Если вы откроете это как текст, вы увидите, что он содержит Frameworks/libswiftCore.dylib

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

+0

Спасибо за это! – bluezald