В этом документе подробно описаны различные примеры кода и функциональные возможности, связанные с разработкой Android и iOS, обратным проектированием и взаимодействием на уровне системы. В нем рассматриваются самые разные темы: от перехвата методов и доступа к системным свойствам до манипуляций с памятью и функций, специфичных для iOS. Приведенные примеры демонстрируют разнообразный набор методов, полезных для отладки, анализа и исследования безопасности.
а также примеры вывода
Оглавление
Чтобы перечислить сокращения: ab
Развернуть, написав ключ и
Генератор хуков метода Java с использованием сочетания клавиш
Получить ключи SSL
⬆ Вернуться к началу
Загрузить модуль CPP
Загрузить модуль C
⬆ Вернуться к началу
Одноразовый наблюдательный пункт
Перехватите funcPtr и log, которые читают/записывают в x2, удаляя разрешения с помощью mprotect.
⬆ Вернуться к началу
Активность сокета
Пример Android
⬆ Вернуться к началу
Перехват Открыть
Пример перехвата libc#open и регистрации обратной трассировки, если определенный файл был открыт.
⬆ Вернуться к началу
Выполнить команду оболочки
Список содержимого каталога:
Извлечь двоичный файл из iOS
⬆ Вернуться к началу
Список модулей
Получение списка модулей и экспорта
⬆ Вернуться к началу
Записать SQLite-запрос
⬆ Вернуться к началу
системное свойство получить
⬆ Вернуться к началу
Связующие транзакции
⬆ Вернуться к началу
Раскрыть нативные методы
RegisterNativeMethods можно использовать в качестве метода защиты от реверсирования собственных библиотек .so, например, максимально скрывая символы, запутывая экспортированные символы и, в конечном итоге, добавляя некоторую защиту через мост JNI.
источник
@OldVersion
⬆ Вернуться к началу
Аргументы метода журнала
⬆ Вернуться к началу
Перечислить загруженные классы
И сохраните в файл с именем pkg.classes.
⬆ Вернуться к началу
Описание класса
Получите методы и члены класса.
Если происходит конфликт имен, метод и член имеют одинаковое имя, к члену будет добавлено подчеркивание. источник
⬆ Вернуться к началу
Выключить Wi-Fi
Он отключит Wi-Fi при создании первого действия.
⬆ Вернуться к началу
Установить прокси
Он установит общесистемный прокси-сервер, используя предоставленный IP-адрес и порт.
⬆ Вернуться к началу
Получить IMEI
Также можно подключить и изменить IMEI.
⬆ Вернуться к началу
Перехватчик ввода-вывода
Перехватите InputputStream и напечатайте буфер как ascii с ограничением символов и списком исключений.
⬆ Вернуться к началу
Android делает тост
Ждите состояния
Подождите, пока определенная DLL загрузится в приложении Unity, можно реализовать горячую замену.
⬆ Вернуться к началу
URL-адреса веб-просмотра
Регистрируйте каждый раз, когда WebView переключает URL-адрес.
⬆ Вернуться к началу
Печать строк времени выполнения
Перехват toString из StringBuilder/Buffer и печать трассировки стека.
⬆ Вернуться к началу
Печать обновлений общих настроек
⬆ Вернуться к началу
Сравнение строк
⬆ Вернуться к началу
Подключить JNI по адресу
Подключите собственный метод по имени модуля и адресу метода и распечатайте аргументы.
⬆ Вернуться к началу
Конструктор крючков
⬆ Вернуться к началу
Отражение крючка
java.lang.reflect.Method#invoke(Object obj, Object... args, boolean bool)
⬆ Вернуться к началу
Класс трассировки
Метод класса трассировки с красивыми цветами и опциями для печати в формате JSON и stacktrace.
TODO добавить трассировку для c'tor.
⬆ Вернуться к началу
Получить идентификатор Android
ANDROID_ID уникален в каждом приложении Android.
⬆ Вернуться к началу
Изменить местоположение
⬆ Вернуться к началу
Обход FLAG_SECURE
Обход вопроса о предотвращении создания скриншотов stackoverflow
⬆ Вернуться к началу
Обновление общих настроек
⬆ Вернуться к началу
Перегрузки крюка
⬆ Вернуться к началу
Зарегистрировать приемник вещания
⬆ Вернуться к началу
классы списка реализуют интерфейс
⬆ Вернуться к началу
Увеличить количество шагов
⬆ Вернуться к началу
Журнал ОС
⬆ Вернуться к началу
окно оповещения iOS
⬆ Вернуться к началу
Доступ к файлам
Записывать каждый открытый файл
⬆ Вернуться к началу
Наблюдать за классом
ObserveClass('Someclass$innerClass');
⬆ Вернуться к началу
Найти UUID приложения iOS
Получите UUID для определенного пути при подключении к приложению, прочитав файл plist в каждом контейнере приложения.
⬆ Вернуться к началу
Извлечь файлы cookie
⬆ Вернуться к началу
Опишите членов класса
Распечатать карту членов (со значениями) для каждого экземпляра класса.
⬆ Вернуться к началу
Иерархия классов
Object.keys(ObjC.classes) выведет список всех доступных классов Objective C,
но на самом деле это вернет все классы, загруженные в текущий процесс, включая системные платформы.
Если нам нужно что-то вроде слабого классадампа, чтобы перечислять классы только из самого исполняемого файла, среда выполнения Objective C уже предоставляет такую функцию objccopyClassNamesForImage.
⬆ Вернуться к началу
Рефелакция крючка
Перехват objc_msgSend
⬆ Вернуться к началу
Перехватить весь модуль
Чтобы уменьшить количество функций, связанных с пользовательским интерфейсом, я использую следующие шаги:
⬆ Вернуться к началу
Дамп сегментов памяти
⬆ Вернуться к началу
Сканирование памяти
⬆ Вернуться к началу
Сталкер
⬆ Вернуться к началу
Деманглер CPP
добавить в свой скрипт
компилировать
бегать
⬆ Вернуться к началу
Ранний крючок
Установите перехватчики перед DTINITARRAY (источник)
1 кредит
⬆ Вернуться к началу
Свойства устройства
Пример быстрого и грязного извлечения свойств устройства iOS
⬆ Вернуться к началу
Сделать скриншот
⬆ Вернуться к началу
Записывать команды SSH
⬆ Вернуться к началу
TODO
пример:
Мицуба Рендерер 3
Документация | Обучающие видео | Линукс | MacOS | Окна | ПиПИ |
---|---|---|---|---|---|
️
Предупреждение
️
В настоящее время в мире ведется большой объем недокументированной и нестабильной работы.
master
ветка. Мы настоятельно рекомендуем вам воспользоваться нашим
последний выпуск
до дальнейшего уведомления.
Если вы уже хотите опробовать предстоящие изменения, ознакомьтесь с
это руководство по портированию.
Он должен охватывать большинство новых функций и предстоящих кардинальных изменений.
Введение
Mitsuba 3 — это исследовательская система рендеринга прямого и обратного света.
транспортное моделирование, разработанное в EPFL в Швейцарии.
Он состоит из базовой библиотеки и набора плагинов, реализующих функциональность.
начиная от материалов и источников света и заканчивая полными алгоритмами рендеринга.
Mitsuba 3 является перенацеливаемой : это означает, что базовые реализации и
Структуры данных могут трансформироваться для выполнения различных задач. Для
Например, один и тот же код может моделировать скалярный (классический по одному лучу) транспорт RGB
или дифференциальный спектральный транспорт на графическом процессоре. Все это основано на
Dr.Jit — специализированный JIT -компилятор, разработанный специально для этого проекта.
Основные характеристики
Кроссплатформенность : Mitsuba 3 была протестирована на Linux ( x86_64
), macOS.
( aarch64
, x8664
) и Windows ( x8664
).
Высокая производительность : базовый компилятор Dr.Jit объединяет код рендеринга.
в ядра, которые достигают высочайшей производительности, используя
серверная часть LLVM, ориентированная на ЦП, и серверная часть CUDA/OptiX
ориентированы на графические процессоры NVIDIA с аппаратным ускорением трассировки лучей.
Python прежде всего : Mitsuba 3 глубоко интегрирован с Python. Материалы,
текстуры и даже полные алгоритмы рендеринга могут быть разработаны на Python,
который система JIT-компилирует (и, при необходимости, дифференцирует) на лету.
Это позволяет проводить эксперименты, необходимые для исследований в области компьютерной графики и
другие дисциплины.
Дифференциация : Mitsuba 3 — это дифференцируемый рендерер, то есть он
может вычислять производные всей симуляции относительно входных данных
такие параметры, как поза камеры, геометрия, BSDF, текстуры и объемы. Это
реализует последние алгоритмы дифференцируемого рендеринга, разработанные в EPFL.
Спектральный и поляризационный : Mitsuba 3 можно использовать как монохроматический.
рендерер, рендерер на основе RGB или спектральный рендерер. Каждый вариант может
при необходимости, при необходимости, учтите эффекты поляризации.
Обучающие видеоролики, документация
Мы записали несколько видеороликов на YouTube, которые дают краткое представление.
Мицуба 3 и Доктор Джит. Помимо этого вы можете найти полные блокноты Juypter.
охватывающий различные приложения, практические руководства и справочную документацию.
на прочтенной документации.
Установка
Мы предоставляем предварительно скомпилированные двоичные колеса через PyPI. Установить Mitsuba таким способом так же просто, как запустить
pip установить Мицубу
в командной строке. Пакет Python по умолчанию включает тринадцать вариантов:
scalar_rgb
scalar_spectral
scalarspectralpolarized
llvmadrgb
llvmadmono
llvmadmono_polarized
llvmadspectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
Первые два выполняют классическое моделирование по одному лучу с использованием RGB
или спектральное представление цвета, тогда как последние два могут использоваться для обратного
рендеринг на CPU или GPU. Чтобы получить доступ к дополнительным вариантам, вам необходимо
скомпилируйте собственную версию Dr.Jit с помощью CMake. Пожалуйста, ознакомьтесь с
документация
для получения подробной информации об этом.
Требования
Python >= 3.8
(необязательно) Для вычислений на графическом процессоре: Nvidia driver >= 495.89
(необязательно) Для векторизованных/параллельных вычислений на ЦП: LLVM >= 11.1
Использование
Вот простой пример «Hello World», который показывает, насколько просто визуализировать
сцена с использованием Mitsuba 3 из Python:
# Импортируйте библиотеку, используя псевдоним "mi"import mitsuba as mi# Установите вариант renderermi.setvariant('scalarrgb')# Загрузите сценуscene = mi.loaddict(mi.cornellbox())# Отрисуйте сценуimg = mi. render(scene)# Запишите визуализированное изображение в файл EXRmi.Bitmap(img).write('cbox.exr')
Учебные пособия и блокноты с примерами, охватывающие различные приложения, можно найти.
в документации.
О
Этот проект создал Венцель Якоб.
Значительные функции и/или улучшения кода были внесены
Себастьян Шпейерер,
Николя Руссель,
Мерлин Нимье-Дэвид,
Делио Вичини,
Тициан Зельтнер,
Батист Николе,
Мигель Креспо,
Винсент Лерой и
Цзыи Чжан.
При использовании Mitsuba 3 в академических проектах указывайте:
@software{Mitsuba3,title = {рендерер Mitsuba 3},author = {Венцель Якоб и Себастьян Шпейерер и Николя Руссель и Мерлин Нимьер-Давид и Делио Вичини и Тициан Зельтнер и Батист Николе и Мигель Креспо и Винсент Лерой и Зийи Чжан},note = {https://mitsuba-renderer.org},версия = {3.1.1}, год = 2022}