Ce document détaille divers exemples de code et fonctionnalités liés au développement Android et iOS, à l'ingénierie inverse et aux interactions au niveau du système. Il couvre des sujets allant de l'accrochage de méthodes et de l'accès aux propriétés système à la manipulation de la mémoire et aux fonctionnalités spécifiques à iOS. Les exemples fournis démontrent un ensemble diversifié de techniques utiles pour le débogage, l'analyse et la recherche en matière de sécurité.
et aussi des exemples de sortie
Table des matières
Pour lister les abréviations :ab
Développez en écrivant la clé et
Générateur de hook de méthode Java utilisant un raccourci clavier
Récupérer les clés SSL
⬆ Retour en haut
Charger le module RPC
Charger le module C
⬆ Retour en haut
Point de surveillance unique
Interceptez funcPtr et enregistrez qui lit/écrit sur x2 en supprimant les autorisations avec mprotect.
⬆ Retour en haut
Activité des sockets
Exemple Android
⬆ Retour en haut
Interception ouverte
Un exemple pour intercepter libc#open et enregistrer la trace si un fichier spécifique a été ouvert.
⬆ Retour en haut
Exécuter la commande shell
Répertorier le contenu du répertoire :
Extraire le binaire d'iOS
⬆ Retour en haut
Liste des modules
Liste des modules et exportations
⬆ Retour en haut
Journaliser la requête SQLite
⬆ Retour en haut
propriété du système obtenir
⬆ Retour en haut
Opérations de reliure
⬆ Retour en haut
Révéler les méthodes natives
registerNativeMethods peut être utilisé comme technique anti-inversion pour les bibliothèques natives .so, par exemple en cachant les symboles autant que possible, en obscurcissant les symboles exportés et éventuellement en ajoutant une certaine protection sur le pont JNI.
source
@AncienneVersion
⬆ Retour en haut
Arguments de la méthode de journalisation
⬆ Retour en haut
Énumérer les classes chargées
Et enregistrez dans un fichier nommé pkg.classes
⬆ Retour en haut
Description du cours
Obtenez les méthodes et les membres de la classe.
S'il y a une collision de noms, la méthode et le membre ont le même nom, un trait de soulignement sera ajouté au membre. source
⬆ Retour en haut
Désactivez le Wi-Fi
Il désactivera le WiFi lors de la création de la première activité.
⬆ Retour en haut
Définir un proxy
Il définira un proxy à l'échelle du système en utilisant l'adresse IP et le port fournis.
⬆ Retour en haut
Obtenir IMEI
Peut également accrocher et changer IMEI.
⬆ Retour en haut
Crochet io InputStream
Hook InputputStream et tampon d'impression en ascii avec limite de caractères et liste d'exclusion.
⬆ Retour en haut
Android fait du pain grillé
Attendre l'état
Attendez que la DLL spécifique se charge dans l'application Unity et puisse implémenter le remplacement à chaud.
⬆ Retour en haut
URL d'affichage Web
Connectez-vous chaque fois que WebView change d'URL.
⬆ Retour en haut
Imprimer les chaînes d'exécution
Connexion à la chaîne de StringBuilder/Buffer et impression de la trace de la pile.
⬆ Retour en haut
Imprimer les mises à jour des préférences partagées
⬆ Retour en haut
Comparaison de chaînes
⬆ Retour en haut
Hook JNI par adresse
Accrochez la méthode native par nom de module et adresse de méthode et imprimez les arguments.
⬆ Retour en haut
Constructeur de crochets
⬆ Retour en haut
Réflexion du crochet
java.lang.reflect.Method#invoke(Object obj, Object... args, boolean bool)
⬆ Retour en haut
Classe de traces
Méthode de classe de traçage, avec de jolies couleurs et options pour imprimer en JSON et stacktrace.
TODO ajouter une trace pour c'tor.
⬆ Retour en haut
Obtenir un identifiant Android
L'ANDROID_ID est unique dans chaque application Android.
⬆ Retour en haut
Changer d'emplacement
⬆ Retour en haut
Contourner FLAG_SECURE
Contourner la question de débordement de pile de prévention de capture d'écran
⬆ Retour en haut
Mise à jour des préférences partagées
⬆ Retour en haut
Surcharges de crochets
⬆ Retour en haut
Enregistrer le récepteur de diffusion
⬆ Retour en haut
lister les classes implémente l'interface
⬆ Retour en haut
Augmenter le nombre de pas
⬆ Retour en haut
Journal du système d'exploitation
⬆ Retour en haut
Boîte d'alerte iOS
⬆ Retour en haut
Accès aux fichiers
Enregistrez chaque fichier ouvert
⬆ Retour en haut
Observer la classe
observeClass('Uneclasse$innerClass');
⬆ Retour en haut
Trouver l'UUID de l'application iOS
Obtenez l'UUID pour un chemin spécifique lorsqu'il est attaché à une application en lisant le fichier plist sous chaque conteneur d'application.
⬆ Retour en haut
Extraire les cookies
⬆ Retour en haut
Décrire les membres de la classe
Imprimer la carte des membres (avec valeurs) pour chaque instance de classe
⬆ Retour en haut
Hiérarchie des classes
Object.keys(ObjC.classes) listera toutes les classes Objective C disponibles,
mais en réalité, cela renverra toutes les classes chargées dans le processus en cours, y compris les frameworks système.
Si nous voulons quelque chose comme faibleclassdump, pour répertorier les classes de l'exécutable lui-même uniquement, le runtime Objective C fournit déjà une telle fonction objccopyClassNamesForImage.
⬆ Retour en haut
Réflexion du crochet
Accrochage objc_msgSend
⬆ Retour en haut
Intercepter le module entier
Pour réduire les fonctions liées à l'interface utilisateur, j'utilise les étapes suivantes :
⬆ Retour en haut
Vider les segments de mémoire
⬆ Retour en haut
Analyse de la mémoire
⬆ Retour en haut
Harceleur
⬆ Retour en haut
Démêlant Cpp
ajouter à votre script
compiler
courir
⬆ Retour en haut
Crochet précoce
Définir les crochets avant DTINITARRAY ( source )
Crédit : iGio90
⬆ Retour en haut
Propriétés de l'appareil
Exemple d'extraction rapide et sale des propriétés d'un appareil iOS
⬆ Retour en haut
Prendre une capture d'écran
⬆ Retour en haut
Consigner les commandes SSH
⬆ Retour en haut
À FAIRE
exemple:
Moteur de rendu Mitsuba 3
Documentation | Vidéos tutorielles | Linux | Mac OS | Fenêtres | PyPI |
---|---|---|---|---|---|
️
Avertissement
️
Il existe actuellement un grand nombre de travaux non documentés et instables en cours dans
la branche master
. Nous vous recommandons fortement d'utiliser notre
dernière version
jusqu'à nouvel ordre.
Si vous souhaitez déjà tester les modifications à venir, veuillez consulter
ce guide de portage.
Il devrait couvrir la plupart des nouvelles fonctionnalités et des modifications majeures à venir.
Introduction
Mitsuba 3 est un système de rendu orienté recherche pour la lumière directe et inverse
simulation de transport développée à l'EPFL en Suisse.
Il se compose d'une bibliothèque principale et d'un ensemble de plugins qui implémentent des fonctionnalités
allant des matériaux et sources de lumière aux algorithmes de rendu complets.
Mitsuba 3 est reciblable : cela signifie que les implémentations sous-jacentes et
les structures de données peuvent se transformer pour accomplir diverses tâches différentes. Pour
Par exemple, le même code peut simuler à la fois le transport RVB scalaire (classique un rayon à la fois)
ou transport spectral différentiel sur le GPU. Tout cela s'appuie sur
Dr.Jit, un compilateur spécialisé juste à temps (JIT) développé spécifiquement pour ce projet.
Principales caractéristiques
Multiplateforme : Mitsuba 3 a été testé sur Linux ( x86_64
), macOS
( aarch64
, x8664
) et Windows ( x8664
).
Hautes performances : le compilateur Dr.Jit sous-jacent fusionne le code de rendu
en noyaux qui atteignent des performances de pointe en utilisant
un backend LLVM ciblant le CPU et un backend CUDA/OptiX
ciblant les GPU NVIDIA avec l’accélération matérielle du lancer de rayons.
Python d'abord : Mitsuba 3 est profondément intégré à Python. Matériels,
des textures, et même des algorithmes de rendu complets peuvent être développés en Python,
que le système compile JIT (et éventuellement différencie) à la volée.
Cela permet l'expérimentation nécessaire à la recherche en infographie et
d'autres disciplines.
Différenciation : Mitsuba 3 est un moteur de rendu différenciable, ce qui signifie qu'il
peut calculer les dérivées de l'ensemble de la simulation par rapport à l'entrée
des paramètres tels que la pose de la caméra, la géométrie, les BSDF, les textures et les volumes. Il
implémente des algorithmes de rendu différenciables récents développés à l'EPFL.
Spectral & Polarisation : Mitsuba 3 peut être utilisé comme monochromatique
rendu, un rendu basé sur RVB ou un rendu spectral. Chaque variante peut
éventuellement tenir compte des effets de polarisation si vous le souhaitez.
Vidéos tutorielles, documentation
Nous avons enregistré plusieurs vidéos YouTube qui fournissent une introduction douce
Mitsuba 3 et Dr Jit. Au-delà de cela, vous pouvez trouver des cahiers Juypter complets
couvrant une variété d'applications, de guides pratiques et de documentation de référence
sur readthedocs.
Installation
Nous fournissons des roues binaires précompilées via PyPI. Installer Mitsuba de cette façon est aussi simple que d'exécuter
pip installer mitsuba
sur la ligne de commande. Le package Python comprend treize variantes par défaut :
scalar_rgb
scalar_spectral
scalarspectralpolarized
llvmadrgb
llvmadmono
llvmadmono_polarized
llvmadspectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
Les deux premiers effectuent une simulation classique d'un rayon à la fois en utilisant soit un RVB
ou représentation spectrale des couleurs, tandis que les deux derniers peuvent être utilisés pour l'inverse
rendu sur le CPU ou le GPU. Pour accéder à des variantes supplémentaires, vous devrez
compilez une version personnalisée de Dr.Jit à l'aide de CMake. Veuillez consulter le
documentation
pour plus de détails à ce sujet.
Exigences
Python >= 3.8
(facultatif) Pour le calcul sur le GPU : Nvidia driver >= 495.89
(facultatif) Pour le calcul vectorisé/parallèle sur le CPU : LLVM >= 11.1
Usage
Voici un exemple simple de « Hello World » qui montre à quel point il est simple de restituer un
scène utilisant Mitsuba 3 de Python :
# Importez la bibliothèque en utilisant l'alias "mi" import mitsuba as mi# Définir la variante du renderermi.setvariant('scalarrgb')# Charger une scènecene = mi.loaddict(mi.cornellbox())# Rendre la scèneimg = mi. render(scene)# Écrit l'image rendue dans un fichier EXR mi.Bitmap(img).write('cbox.exr')
Des didacticiels et des exemples de cahiers couvrant une variété d'applications peuvent être trouvés
dans la documentation.
À propos
Ce projet a été créé par Wenzel Jakob.
Des fonctionnalités et/ou améliorations importantes du code ont été apportées par
Sébastien Speierer,
Nicolas Roussel,
Merlin Nimier-David,
Délio Vicini,
Tizian Zeltner,
Baptiste Nicolet,
Miguel Crespo,
Vincent Leroy, et
Ziyi Zhang.
Lorsque vous utilisez Mitsuba 3 dans des projets académiques, veuillez citer :
@software{Mitsuba3,title = {Mitsuba 3 renderer},author = {Wenzel Jakob et Sébastien Speierer et Nicolas Roussel et Merlin Nimier-David et Delio Vicini et Tizian Zeltner et Baptiste Nicolet et Miguel Crespo et Vincent Leroy et Ziyi Zhang},note = {https://mitsuba-renderer.org},version = {3.1.1},année = 2022}