Este documento detalla varios ejemplos de código y funcionalidades relacionadas con el desarrollo de Android e iOS, la ingeniería inversa y las interacciones a nivel de sistema. Cubre temas que van desde la conexión de métodos y el acceso a las propiedades del sistema hasta la manipulación de la memoria y características específicas de iOS. Los ejemplos proporcionados demuestran un conjunto diverso de técnicas útiles para la depuración, el análisis y la investigación de seguridad.
y también ejemplos de salida
Tabla de contenido
Para enumerar abreviaturas :ab
Ampliar escribiendo clave y
Generador de ganchos de método Java usando un método abreviado de teclado
Obtener claves SSL
⬆ Volver arriba
Cargar módulo CPP
Cargar módulo C
⬆ Volver arriba
Punto de vigilancia único
Intercepte funcPtr y registre quién lee/escribe en x2 eliminando permisos con mprotect.
⬆ Volver arriba
Actividad del zócalo
Ejemplo de Android
⬆ Volver arriba
Intercepción abierta
Un ejemplo para interceptar libc#open y registrar el seguimiento si se abrió un archivo específico.
⬆ Volver arriba
Ejecutar comando de shell
Listar el contenido del directorio:
Extraer binario desde iOS
⬆ Volver arriba
Listar módulos
Listar módulos y exportaciones
⬆ Volver arriba
Registrar consulta SQLite
⬆ Volver arriba
propiedad del sistema obtener
⬆ Volver arriba
Transacciones vinculantes
⬆ Volver arriba
Revelar métodos nativos
RegisterNativeMethods se puede utilizar como técnica anti-inversión para las bibliotecas .so nativas, por ejemplo, ocultando los símbolos tanto como sea posible, ofuscando los símbolos exportados y eventualmente agregando algo de protección sobre el puente JNI.
fuente
@VersiónOld
⬆ Volver arriba
Argumentos del método de registro
⬆ Volver arriba
Enumerar clases cargadas
Y guárdelo en un archivo llamado pkg.classes
⬆ Volver arriba
Descripción de la clase
Obtenga métodos y miembros de clase.
Si hay una colisión de nombres, el método y el miembro tienen el mismo nombre, se agregará un guión bajo al miembro. fuente
⬆ Volver arriba
Desactivar Wi-Fi
Apagará el WiFi al crear la primera actividad.
⬆ Volver arriba
Establecer proxy
Configurará un proxy para todo el sistema utilizando la dirección IP y el puerto proporcionados.
⬆ Volver arriba
Obtener IMEI
También puede enganchar y cambiar IMEI.
⬆ Volver arriba
Enganche io InputStream
Enganche InputputStream e imprima el búfer como ascii con límite de caracteres y lista de exclusión.
⬆ Volver arriba
Android hace tostadas
Esperar por la condición
Espere hasta que se cargue la DLL específica en la aplicación Unity, puede implementar el intercambio en caliente.
⬆ Volver arriba
URL de vistas web
Registre cada vez que WebView cambie de URL.
⬆ Volver arriba
Imprimir cadenas de tiempo de ejecución
Conectando a String de StringBuilder/Buffer e imprimiendo stacktrace.
⬆ Volver arriba
Imprimir actualizaciones de preferencias compartidas
⬆ Volver arriba
Comparación de cadenas
⬆ Volver arriba
Enganche JNI por dirección
Enganche el método nativo por el nombre del módulo y la dirección del método e imprima los argumentos.
⬆ Volver arriba
Constructor de ganchos
⬆ Volver arriba
Reflexión de gancho
java.lang.reflect.Method#invoke(Objeto obj, Objeto... args, booleano bool)
⬆ Volver arriba
clase de seguimiento
Método de clase de seguimiento, con bonitos colores y opciones para imprimir como JSON y stacktrace.
TODO agregar seguimiento para c'tor.
⬆ Volver arriba
Obtener identificación de Android
El ANDROID_ID es único en cada aplicación en Android.
⬆ Volver arriba
Cambiar ubicación
⬆ Volver arriba
Omitir FLAG_SECURE
Omitir la pregunta de desbordamiento de pila de prevención de captura de pantalla
⬆ Volver arriba
Actualización de preferencias compartidas
⬆ Volver arriba
Sobrecargas de gancho
⬆ Volver arriba
Registrar receptor de transmisión
⬆ Volver arriba
lista de clases implementa la interfaz
⬆ Volver arriba
Aumentar el número de pasos
⬆ Volver arriba
Registro del sistema operativo
⬆ Volver arriba
cuadro de alerta de iOS
⬆ Volver arriba
Acceso a archivos
Registra cada archivo abierto
⬆ Volver arriba
observar clase
observeClass('Algunaclase$innerClass');
⬆ Volver arriba
Encuentra el UUID de la aplicación iOS
Obtenga UUID para una ruta específica cuando se adjunta a una aplicación leyendo el archivo plist debajo de cada contenedor de aplicación.
⬆ Volver arriba
Extraer cookies
⬆ Volver arriba
Describir a los miembros de la clase.
Imprimir mapa de miembros (con valores) para cada instancia de clase
⬆ Volver arriba
Jerarquía de clases
Object.keys(ObjC.classes) enumerará todas las clases de Objective C disponibles,
pero en realidad esto devolverá todas las clases cargadas en el proceso actual, incluidos los marcos del sistema.
Si queremos algo como débilclassdump, para enumerar las clases del ejecutable solo, el tiempo de ejecución de Objective C ya proporciona dicha función objccopyClassNamesForImage
⬆ Volver arriba
Refelacción de gancho
Enganchando objc_msgSend
⬆ Volver arriba
Interceptar todo el módulo
Para reducir las funciones relacionadas con la interfaz de usuario, sigo los siguientes pasos:
⬆ Volver arriba
Volcar segmentos de memoria
⬆ Volver arriba
escaneo de memoria
⬆ Volver arriba
Acosador
⬆ Volver arriba
demandante de cpp
agregar a tu guión
compilar
correr
⬆ Volver arriba
Gancho temprano
Establecer ganchos antes de DTINITARRAY (fuente)
Crédito: iGio90
⬆ Volver arriba
Propiedades del dispositivo
Ejemplo de extracción rápida y sucia de propiedades de dispositivos iOS
⬆ Volver arriba
Tomar captura de pantalla
⬆ Volver arriba
Registrar comandos SSH
⬆ Volver arriba
TODO
ejemplo:
Renderizador Mitsuba 3
Documentación | Vídeos tutoriales | linux | Mac OS | ventanas | PyPI |
---|---|---|---|---|---|
️
Advertencia
️
Actualmente hay una gran cantidad de trabajo indocumentado e inestable en
la rama master
. Le recomendamos encarecidamente que utilice nuestro
último lanzamiento
hasta nuevo aviso.
Si ya desea probar los próximos cambios, eche un vistazo a
esta guía de portabilidad.
Debería cubrir la mayoría de las nuevas funciones y los cambios importantes que se avecinan.
Introducción
Mitsuba 3 es un sistema de renderizado de luz directa e inversa orientado a la investigación
Simulación de transporte desarrollada en EPFL en Suiza.
Consiste en una biblioteca central y un conjunto de complementos que implementan funciones.
que van desde materiales y fuentes de luz hasta algoritmos de renderizado completos.
Mitsuba 3 es reorientable : esto significa que las implementaciones subyacentes y
Las estructuras de datos pueden transformarse para realizar varias tareas diferentes. Para
Por ejemplo, el mismo código puede simular transporte RGB escalar (clásico de un rayo a la vez)
o transporte espectral diferencial en la GPU. Todo esto se basa en
Dr.Jit, un compilador especializado justo a tiempo (JIT) desarrollado específicamente para este proyecto.
Características principales
Multiplataforma : Mitsuba 3 ha sido probado en Linux ( x86_64
), macOS
( aarch64
, x8664
) y Windows ( x8664
).
Alto rendimiento : el compilador Dr.Jit subyacente fusiona el código de renderizado
en núcleos que logran un rendimiento de última generación utilizando
un backend LLVM dirigido a la CPU y un backend CUDA/OptiX
dirigido a GPU NVIDIA con aceleración de hardware de trazado de rayos.
Python primero : Mitsuba 3 está profundamente integrado con Python. materiales,
Se pueden desarrollar texturas e incluso algoritmos de renderizado completos en Python.
que el sistema compila JIT (y opcionalmente diferencia) sobre la marcha.
Esto permite la experimentación necesaria para la investigación en gráficos por ordenador y
otras disciplinas.
Diferenciación : Mitsuba 3 es un renderizador diferenciable, lo que significa que
Puede calcular derivadas de toda la simulación con respecto a la entrada.
parámetros como la pose de la cámara, la geometría, los BSDF, las texturas y los volúmenes. Él
implementa algoritmos de representación diferenciables recientes desarrollados en EPFL.
Espectral y polarización : Mitsuba 3 se puede utilizar como monocromático
renderizador, renderizador basado en RGB o renderizador espectral. Cada variante puede
Opcionalmente, tenga en cuenta los efectos de la polarización si se desea.
Vídeos tutoriales, documentación.
Hemos grabado varios vídeos de YouTube que proporcionan una suave introducción.
Mitsuba 3 y Dr.Jit. Más allá de esto puedes encontrar cuadernos Juypter completos.
que cubre una variedad de aplicaciones, guías prácticas y documentación de referencia
en readthedocs.
Instalación
Proporcionamos ruedas binarias precompiladas a través de PyPI. Instalar Mitsuba de esta manera es tan sencillo como ejecutar
instalar pip mitsuba
en la línea de comando. El paquete Python incluye trece variantes por defecto:
scalar_rgb
scalar_spectral
scalarspectralpolarized
llvmadrgb
llvmadmono
llvmadmono_polarized
llvmadspectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
Los dos primeros realizan la simulación clásica de un rayo a la vez usando un RGB
o representación de color espectral, mientras que los dos últimos se pueden utilizar para representación inversa.
renderizado en la CPU o GPU. Para acceder a variantes adicionales, deberá
compilar una versión personalizada de Dr.Jit usando CMake. Por favor vea el
documentación
para obtener detalles sobre esto.
Requisitos
Python >= 3.8
(opcional) Para cálculo en la GPU: Nvidia driver >= 495.89
(opcional) Para cálculo vectorizado/paralelo en la CPU: LLVM >= 11.1
Uso
A continuación se muestra un ejemplo sencillo de "Hola mundo" que muestra lo sencillo que es representar un
escena usando Mitsuba 3 de Python:
# Importar la biblioteca usando el alias "mi" importar mitsuba como mi # Establecer la variante de renderermi.setvariant('scalarrgb')# Cargar una escena = mi.loaddict(mi.cornellbox())# Renderizar la escenaimg = mi. render(scene)# Escribe la imagen renderizada en un archivo EXRmi.Bitmap(img).write('cbox.exr')
Se pueden encontrar tutoriales y cuadernos de ejemplo que cubren una variedad de aplicaciones.
en la documentación.
Acerca de
Este proyecto fue creado por Wenzel Jakob.
Funciones y/o mejoras significativas al código fueron aportadas por
Sébastien Speierer,
Nicolás Roussel,
Merlín Nimier-David,
Delio Vicini,
Tizian Zeltner,
Bautista Nicolet,
Miguel Crespo,
Vicente Leroy y
Ziyi Zhang.
Cuando utilice Mitsuba 3 en proyectos académicos, cite:
@software{Mitsuba3,title = {Mitsuba 3 renderer},autor = {Wenzel Jakob y Sébastien Speierer y Nicolas Roussel y Merlin Nimier-David y Delio Vicini y Tizian Zeltner y Baptiste Nicolet y Miguel Crespo y Vincent Leroy y Ziyi Zhang},nota = {https://mitsuba-renderer.org},versión = {3.1.1},año = 2022}