Если вы хотите выполнить reverse-engineering некоторых приложений или отследить вызовы приватных классов фреймворков API системных приложений, попробуйте этот инструмент.
Необходимо лишь настроить нужные классы и названия приложений, чтобы в реальном времени отслеживать связанные с ними вызовы. Поддерживает массовое hook'ing нескольких классов.
Массовое отслеживание всех вызовов для указанных объектов классов на iOS
Поддержка iOS для armv6, armv7, arm64 и Mac для x86, x64
Автоматическое распознание типов аргументов и вывод подробной информации обо всех аргументах#### Обновление
Добавлена поддержка arm64, стабильность требует тестирования. Вставка процесса arm64 ещё не завершена, временно используется substrate's hook_process, поэтому вам потребуется установить libsubstrate.dylib. Версия для armv7 полностью не зависит от substrate.
Для версии arm64 информация о параметрах была немного улучшена.
Примечание: Этот проект больше не поддерживается, представлен только для справки.
Измените конфигурационный файл itrace.xml, добавив имена классов, которые требуется отследить:
<?xml version="1.0" encoding="utf-8"?>
<itrace>
<class>
<SSDevice/>
<SSDownload/>
<SSDownloadManager/>
<SSDownloadQueue/>
<CPDistributedMessagingCenter/>
<CPDistributedNotificationCenter/>
<NSString args="0"/>
</class>
</itrace>
Примечание: Избегайте использования хуков для часто вызываемых классов, таких как UIView
, NSString
. Частое использование хуков может привести к замедлению работы устройства.
Примечание: Если вы используете хук для определённого класса и сталкиваетесь с проблемами вывода параметров, можно добавить атрибут args="0"
после имени класса, чтобы отключить вывод параметров. Это поможет стабилизировать работу. Для полного отключения вывода параметров для всех классов установите <class args="0">
.
Yerleşik dosyaları iOS cihazınıza /tmp
klasörüne yerleştirin:```
/tmp/itracer
/tmp/itrace.dylib
/tmp/itrace.xml
### 3. Начало трассировки
Перейдите в директорию `itracer`:
cd /tmp
Установите права доступа:
chmod 777 ./itracer
Запустите программу:
./itracer springboard (springboard — это имя процесса, который требуется отследить; поддерживается простое совпадение)
### 4. Использование Substrate для внедрения `itrace.dylib` для трассировки
На новых устройствах iOS ARM64 использование `itracer` для внедрения `itrace.dylib` больше недействительно. Последний раз этот механизм не обновлялся. Чтобы использовать `itrace.dylib` для трассировки на устройствах ARM64, можно воспользоваться Substrate и внедрить `itrace.dylib` как плагин Substrate. Далее следует конфигурация файла `itrace.plist` для указания процесса, в который будет внедрен плагин.
Расположите файлы `itrace.dylib` и `itrace.plist` в директорию плагинов Substrate `/Library/MobileSubstrate/DynamicLibraries`. После этого выполните команду `ldid -S itrace.dylib` для подготовки файла, затем перезапустите процесс, требующий трассировки. Путь к файлу конфигурации `itrace.xml` теперь будет `/var/root/itrace/itrace.xml`.
Для компиляции `itrace.dylib` на устройствах iOS ARM64 используйте следующую команду:
xmake f -p iphoneos -a arm64
### 5. Просмотр логов трассировки**Примечание:** Реальные данные логов будут выводиться в разделе "Устройства" -> "Логи".
Jan 21 11:12:58 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [3edc9d98]: [SSDownloadQueue downloads] Jan 21 11:12:58 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [3edc9d98]: [SSDownloadManager downloads] Jan 21 11:12:58 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [3edc9d98]: [SSDownloadManager _copyDownloads] Jan 21 11:12:58 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [3edc9d98]: [SSDownloadQueue _sendDownloadStatusChangedAtIndex:]: 0 Jan 21 11:12:58 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [3edc9d98]: [SSDownloadQueue _messageObserversWithFunction:context:]: 0x334c5d51: 0x2fe89de0 Jan 21 11:12:58 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [3edc9d98]: [SSDownloadQueue downloads] Jan 21 11:12:58 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [3edc9d98]: [SSDownloadManager downloads] Jan 21 11:12:58 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [3edc9d98]: [SSDownloadManager _copyDownloads] Jan 21 11:12:58 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [3edc9d98]: [SSDownload cachedApplicationIdentifier] Jan 21 11:12:58 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [3edc9d98]: [SSDownload status] Jan 21 11:12:58 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [3edc9d98]: [SSDownload cachedApplicationIdentifier] Jan 21 11:12:58 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [3edc9d98]: [CPDistributedNotificationCenter postNotificationName:userInfo:]: SBApplicationNotificationStateChanged: { SBApplicationStateDisplayIDKey = "com.apple.AppStore"; SBApplicationStateKey = 2; SBApplicationStateProcessIDKey = 5868; SBMostElevatedStateForProcessID = 2; } Jan 21 11:12:58 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [3edc9d98]: [CPDistributedNotificationCenter postNotificationName:userInfo:toBundleIdentifier:]: SBApplicationNotificationStateChanged: { SBApplicationStateDisplayIDKey = "com.apple.AppStore"; SBApplicationStateKey = 2; SBApplicationStateProcessIDKey = 5868; SBMostElevatedStateForProcessID = 2; }: null
Jan 21 11:12:59 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [105d7000]: [SSDownloadManager _handleMessage:fromServerConnection:]: 0xe6920b0: 0xe007040
Jan 21 11:12:59 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [105d7000]: [SSDownloadManager _handleDownloadStatesChanged:]
Jan 21 11:12:59 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [105d7000]: [SSDownloadManager _copyDownloads]
Jan 21 11:12:59 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [105d7000]: [SSDownload persistentIdentifier]
Jan 21 11:12:59 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [105d7000]: [SSDownload _addCachedPropertyValues:]: {
I = SSDownloadPhaseDownloading;
}
Jan 21 11:12:59 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [105d7000]: [SSDownload _applyPhase:toStatus:]: SSDownloadPhaseDownloading: <SSDownloadStatus: 0xe6b8e80>
Jan 21 11:12:59 unknown SpringBoard[5706] <Предупреждение>: [itrace]: [105d7000]: [SSDownloadQueue downloadManager:downloadStatesDidChange:]: <SSDownloadManager: 0x41ea60>: (
"<SSDownload: 0xe6bd970>: -4085275246093726486"
)
```
### Как скомпилировать1. **Сборка версии для iOS**:
```bash
xmake f -p iphoneos
xmake
```
```bash
xmake f -p iphoneos -a arm64
xmake
```
2. **Сборка версии для macOS**:
```bash
xmake f -p macosx
xmake
```
Дополнительная информация по использованию xmake доступна в [документации xmake](http://xmake.io/#/ru/).
Описание зависимых библиотек: [tbox](https://github.com/tboox/tbox/wiki)
### Контактная информация
* Электронная почта: [waruqi@gmail.com](mailto:waruqi@gmail.com)
* Сайт: [Открытый проект TBOOX](http://www.tboox.org/cn)
* Группа QQ: 343118190 (Проект TBOOX), 260215194 (ihacker анализ iOS)
* Публичный аккаунт WeChat: tboox-os
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )