1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/tboox-itrace

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 14.03.2025 10:52 02e0298

itrace

Отслеживание вызова методов Objective-C для iOS и Mac

Если вы хотите выполнить reverse-engineering некоторых приложений или отследить вызовы приватных классов фреймворков API системных приложений, попробуйте этот инструмент.

Необходимо лишь настроить нужные классы и названия приложений, чтобы в реальном времени отслеживать связанные с ними вызовы. Поддерживает массовое hook'ing нескольких классов.

Основные возможности

  • Массовое отслеживание всех вызовов для указанных объектов классов на iOS

  • Поддержка iOS для armv6, armv7, arm64 и Mac для x86, x64

  • Автоматическое распознание типов аргументов и вывод подробной информации обо всех аргументах#### Обновление

  • Добавлена поддержка arm64, стабильность требует тестирования. Вставка процесса arm64 ещё не завершена, временно используется substrate's hook_process, поэтому вам потребуется установить libsubstrate.dylib. Версия для armv7 полностью не зависит от substrate.

  • Для версии arm64 информация о параметрах была немного улучшена.

Примечание: Этот проект больше не поддерживается, представлен только для справки.

  1. Настройка необходимых классов для hook'ing

Измените конфигурационный файл 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">.

Yöntem 2: Dosya Yükleme

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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/tboox-itrace.git
git@api.gitlife.ru:oschina-mirror/tboox-itrace.git
oschina-mirror
tboox-itrace
tboox-itrace
master