Dieses Dokument beschreibt verschiedene Codebeispiele und Funktionalitäten im Zusammenhang mit der Android- und iOS-Entwicklung, dem Reverse Engineering und Interaktionen auf Systemebene. Es behandelt Themen wie Methoden-Hooking und Zugriff auf Systemeigenschaften bis hin zur Speichermanipulation und iOS-spezifischen Funktionen. Die bereitgestellten Beispiele veranschaulichen eine Reihe verschiedener Techniken, die zum Debuggen, zur Analyse und zur Sicherheitsforschung nützlich sind.
& auch Ausgabebeispiele
Inhaltsverzeichnis
Um Abkürzungen aufzulisten :ab
Erweitern Sie, indem Sie Schlüssel und schreiben
Java-Methoden-Hook-Generator mithilfe einer Tastenkombination
SSL-Schlüssel abrufen
⬆ Zurück nach oben
CPP-Modul laden
C-Modul laden
⬆ Zurück nach oben
Einmaliger Beobachtungspunkt
Fangen Sie funcPtr ab und protokollieren Sie, wer auf x2 liest/schreibt, indem Sie Berechtigungen mit mprotect entfernen.
⬆ Zurück nach oben
Socket-Aktivität
Android-Beispiel
⬆ Zurück nach oben
Abfangen offen
Ein Beispiel für das Abfangen von libc#open und das Protokollieren des Backtrace, wenn eine bestimmte Datei geöffnet wurde.
⬆ Zurück nach oben
Shell-Befehl ausführen
Verzeichnisinhalte auflisten:
Binärdatei von iOS abrufen
⬆ Zurück nach oben
Module auflisten
Module und Exporte auflisten
⬆ Zurück nach oben
SQLite-Abfrage protokollieren
⬆ Zurück nach oben
Systemeigenschaft get
⬆ Zurück nach oben
Binder-Transaktionen
⬆ Zurück nach oben
Enthüllen Sie native Methoden
registerNativeMethods kann als Anti-Umkehrtechnik für die nativen .so-Bibliotheken verwendet werden, z. B. um die Symbole so weit wie möglich auszublenden, die exportierten Symbole zu verschleiern und schließlich einen gewissen Schutz über die JNI-Brücke hinzuzufügen.
Quelle
@OldVersion
⬆ Zurück nach oben
Argumente der Protokollierungsmethode
⬆ Zurück nach oben
Geladene Klassen aufzählen
Und speichern Sie es in einer Datei namens pkg.classes
⬆ Zurück nach oben
Klassenbeschreibung
Holen Sie sich Klassenmethoden und -mitglieder.
Wenn es zu einer Namenskollision kommt, Methode und Mitglied denselben Namen haben, wird dem Mitglied ein Unterstrich hinzugefügt. Quelle
⬆ Zurück nach oben
Schalten Sie WLAN aus
Bei der Erstellung der ersten Aktivität wird WLAN ausgeschaltet.
⬆ Zurück nach oben
Proxy festlegen
Mithilfe der angegebenen IP-Adresse und des angegebenen Ports wird ein systemweiter Proxy eingerichtet.
⬆ Zurück nach oben
Holen Sie sich IMEI
Kann auch IMEI einbinden und ändern.
⬆ Zurück nach oben
Hook io InputStream
InputputStream einbinden und Puffer als ASCII mit Zeichenbegrenzung und Ausschlussliste drucken.
⬆ Zurück nach oben
Android macht Toast
Zustand abwarten
Warten Sie, bis eine bestimmte DLL in der Unity-App geladen wird, um Hot-Swap zu implementieren.
⬆ Zurück nach oben
Webview-URLs
Protokollieren Sie, wann immer die WebView-URL wechselt.
⬆ Zurück nach oben
Laufzeitzeichenfolgen drucken
An den String von StringBuilder/Buffer anschließen und Stacktrace drucken.
⬆ Zurück nach oben
Aktualisierungen der freigegebenen Einstellungen drucken
⬆ Zurück nach oben
String-Vergleich
⬆ Zurück nach oben
Hook JNI nach Adresse
Binden Sie die native Methode anhand des Modulnamens und der Methodenadresse ein und geben Sie Argumente aus.
⬆ Zurück nach oben
Hook-Konstruktor
⬆ Zurück nach oben
Hakenreflexion
java.lang.reflect.Method#invoke(Object obj, Object... args, boolean bool)
⬆ Zurück nach oben
Trace-Klasse
Tracing-Klassenmethode mit hübschen Farben und Optionen zum Drucken als JSON und Stacktrace.
TODO Trace für c'tor hinzufügen.
⬆ Zurück nach oben
Holen Sie sich eine Android-ID
Die ANDROID_ID ist in jeder Anwendung in Android eindeutig.
⬆ Zurück nach oben
Standort ändern
⬆ Zurück nach oben
FLAG_SECURE umgehen
Frage zur Stackoverflow-Verhinderung von Screenshots umgehen
⬆ Zurück nach oben
Aktualisierung der gemeinsamen Einstellungen
⬆ Zurück nach oben
Hakenüberlastungen
⬆ Zurück nach oben
Registrieren Sie den Rundfunkempfänger
⬆ Zurück nach oben
Listenklassen implementieren die Schnittstelle
⬆ Zurück nach oben
Erhöhen Sie die Schrittzahl
⬆ Zurück nach oben
Betriebssystemprotokoll
⬆ Zurück nach oben
iOS-Benachrichtigungsfeld
⬆ Zurück nach oben
Dateizugriff
Protokollieren Sie jede geöffnete Datei
⬆ Zurück nach oben
Beobachten Sie den Unterricht
observClass('Someclass$innerClass');
⬆ Zurück nach oben
Finden Sie die UUID der iOS-Anwendung
Rufen Sie die UUID für einen bestimmten Pfad ab, wenn Sie sie an eine App anhängen, indem Sie die Plist-Datei unter jedem App-Container lesen.
⬆ Zurück nach oben
Cookies extrahieren
⬆ Zurück nach oben
Beschreiben Sie die Klassenmitglieder
Drucken Sie eine Karte der Mitglieder (mit Werten) für jede Klasseninstanz
⬆ Zurück nach oben
Klassenhierarchie
Object.keys(ObjC.classes) listet alle verfügbaren Objective-C-Klassen auf,
aber tatsächlich werden dadurch alle im aktuellen Prozess geladenen Klassen zurückgegeben, einschließlich der System-Frameworks.
Wenn wir so etwas wie „weakclassdump“ wollen, um nur Klassen aus der ausführbaren Datei selbst aufzulisten, stellt die Objective-C-Laufzeit bereits eine solche Funktion objccopyClassNamesForImage bereit
⬆ Zurück nach oben
Hakenreflexion
Einhaken von objc_msgSend
⬆ Zurück nach oben
Gesamtes Modul abfangen
Um UI-bezogene Funktionen zu reduzieren, verwende ich die folgenden Schritte:
⬆ Zurück nach oben
Speichersegmente sichern
⬆ Zurück nach oben
Speicherscan
⬆ Zurück nach oben
Stalker
⬆ Zurück nach oben
Cpp-Entwirrer
zu Ihrem Skript hinzufügen
kompilieren
laufen
⬆ Zurück nach oben
Früher Haken
Setzen Sie Hooks vor DTINITARRAY (Quelle)
Bildnachweis: iGio90
⬆ Zurück nach oben
Geräteeigenschaften
Beispiel für die schnelle Extraktion von iOS-Geräteeigenschaften
⬆ Zurück nach oben
Machen Sie einen Screenshot
⬆ Zurück nach oben
SSH-Befehle protokollieren
⬆ Zurück nach oben
TODOs
Beispiel:
Mitsuba Renderer 3
Dokumentation | Tutorial-Videos | Linux | MacOS | Windows | PyPI |
---|---|---|---|---|---|
️
Warnung
️
Derzeit gibt es hier eine große Menge undokumentierter und instabiler Arbeiten
der master
. Wir empfehlen Ihnen dringend, unsere zu verwenden
neueste Version
bis auf Weiteres.
Wenn Sie die bevorstehenden Änderungen bereits ausprobieren möchten, schauen Sie sich bitte um
dieser Portierungsanleitung.
Es sollte die meisten kommenden neuen Funktionen und Breaking Changes abdecken.
Einführung
Mitsuba 3 ist ein forschungsorientiertes Rendering-System für Vorwärts- und Rückwärtslicht
Transportsimulation, entwickelt an der EPFL in der Schweiz.
Es besteht aus einer Kernbibliothek und einer Reihe von Plugins, die Funktionen implementieren
von Materialien und Lichtquellen bis hin zu kompletten Rendering-Algorithmen.
Mitsuba 3 ist retargetierbar : Das bedeutet, dass die zugrunde liegenden Implementierungen und
Datenstrukturen können sich verändern, um verschiedene Aufgaben zu erfüllen. Für
Beispielsweise kann derselbe Code beide skalaren (klassischen, jeweils einen Strahl gleichzeitig ausführenden) RGB-Transporte simulieren
oder differenzieller spektraler Transport auf der GPU. Darauf baut alles auf
Dr.Jit, ein spezialisierter Just-in-Time -Compiler (JIT), der speziell für dieses Projekt entwickelt wurde.
Hauptmerkmale
Plattformübergreifend : Mitsuba 3 wurde unter Linux ( x86_64
) und macOS getestet
( aarch64
, x8664
) und Windows ( x8664
).
Hohe Leistung : Der zugrunde liegende Dr.Jit-Compiler verschmilzt Rendering-Code
in Kernel, die modernste Leistung erzielen
ein LLVM-Backend, das auf die CPU abzielt, und ein CUDA/OptiX-Backend
zielt auf NVIDIA-GPUs mit Raytracing-Hardwarebeschleunigung ab.
Python zuerst : Mitsuba 3 ist tief in Python integriert. Materialien,
Texturen und sogar vollständige Rendering-Algorithmen können in Python entwickelt werden,
die das System im laufenden Betrieb JIT-kompiliert (und optional differenziert).
Dies ermöglicht die Experimente, die für die Forschung in der Computergrafik erforderlich sind
andere Disziplinen.
Differenzierung : Mitsuba 3 ist ein differenzierbarer Renderer, was bedeutet, dass er
kann Ableitungen der gesamten Simulation in Bezug auf die Eingabe berechnen
Parameter wie Kameraposition, Geometrie, BSDFs, Texturen und Volumina. Es
implementiert aktuelle differenzierbare Rendering-Algorithmen, die an der EPFL entwickelt wurden.
Spektral und Polarisation : Mitsuba 3 kann monochromatisch verwendet werden
Renderer, RGB-basierter Renderer oder Spektralrenderer. Jede Variante kann
Berücksichtigen Sie optional die Auswirkungen der Polarisation, falls gewünscht.
Tutorial-Videos, Dokumentation
Wir haben mehrere YouTube-Videos aufgenommen, die eine sanfte Einführung bieten
Mitsuba 3 und Dr.Jit. Darüber hinaus finden Sie komplette Juypter-Notizbücher
Es umfasst eine Vielzahl von Anwendungen, Anleitungen und Referenzdokumentationen
auf readthedocs.
Installation
Wir stellen vorkompilierte Binärräder über PyPI bereit. Mitsuba auf diese Weise zu installieren ist so einfach wie das Ausführen
pip install mitsuba
auf der Kommandozeile. Das Python-Paket enthält standardmäßig dreizehn Varianten:
scalar_rgb
scalar_spectral
scalarspectralpolarized
llvmadrgb
llvmadmono
llvmadmono_polarized
llvmadspectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
Die ersten beiden führen eine klassische Einzelstrahl-Simulation mit entweder einem RGB durch
oder spektrale Farbdarstellung, wobei die beiden letzteren für die Umkehrung verwendet werden können
Rendern auf der CPU oder GPU. Um auf zusätzliche Varianten zugreifen zu können, müssen Sie Folgendes tun
Kompilieren Sie eine benutzerdefinierte Version von Dr.Jit mit CMake. Bitte beachten Sie die
Dokumentation
Einzelheiten hierzu finden Sie hier.
Anforderungen
Python >= 3.8
(optional) Für Berechnung auf der GPU: Nvidia driver >= 495.89
(optional) Für vektorisierte / parallele Berechnung auf der CPU: LLVM >= 11.1
Verwendung
Hier ist ein einfaches „Hello World“-Beispiel, das zeigt, wie einfach es ist, ein zu rendern
Szene mit Mitsuba 3 aus Python:
# Importieren Sie die Bibliothek mit dem Alias „mi“import mitsuba as mi# Legen Sie die Variante des Renderers festmi.setvariant('scalarrgb')# Laden Sie eine Szenescene = mi.loaddict(mi.cornellbox())# Rendern Sie die Szeneimg = mi. render(scene)# Schreiben Sie das gerenderte Bild in eine EXR-Dateimi.Bitmap(img).write('cbox.exr')
Es stehen Tutorials und Beispiel-Notebooks für eine Vielzahl von Anwendungen zur Verfügung
in der Dokumentation.
Um
Dieses Projekt wurde von Wenzel Jakob erstellt.
Wesentliche Funktionen und/oder Verbesserungen am Code wurden von beigesteuert
Sébastien Speierer,
Nicolas Roussel,
Merlin Nimier-David,
Delio Vicini,
Tizian Zeltner,
Baptiste Nicolet,
Miguel Crespo,
Vincent Leroy und
Ziyi Zhang.
Wenn Sie Mitsuba 3 in akademischen Projekten verwenden, geben Sie bitte Folgendes an:
@software{Mitsuba3,title = {Mitsuba 3 renderer},author = {Wenzel Jakob und Sébastien Speierer und Nicolas Roussel und Merlin Nimier-David und Delio Vicini und Tizian Zeltner und Baptiste Nicolet und Miguel Crespo und Vincent Leroy und Ziyi Zhang},Anmerkung = {https://mitsuba-renderer.org},Version = {3.1.1},Jahr = 2022}