Este documento detalha vários exemplos de código e funcionalidades relacionadas ao desenvolvimento Android e iOS, engenharia reversa e interações em nível de sistema. Ele cobre tópicos que vão desde conexão de métodos e acesso a propriedades do sistema até manipulação de memória e recursos específicos do iOS. Os exemplos fornecidos demonstram um conjunto diversificado de técnicas úteis para depuração, análise e pesquisa de segurança.
e também exemplos de saída
Índice
Para listar abreviações: ab
Expanda escrevendo chave e
Gerador de gancho de método Java usando atalho de teclado
Buscar chaves SSL
⬆ Voltar ao topo
Carregar módulo CPP
Carregar módulo C
⬆ Voltar ao topo
Ponto de controle único
Intercepte funcPtr e registre quem lê/grava em x2 removendo permissões com mprotect.
⬆ Voltar ao topo
Atividade de soquete
Exemplo Android
⬆ Voltar ao topo
Interceptação aberta
Um exemplo para interceptar libc#open e registrar backtrace se um arquivo específico foi aberto.
⬆ Voltar ao topo
Executar comando shell
Listar o conteúdo do diretório:
Extrair binário do iOS
⬆ Voltar ao topo
Listar módulos
Listar módulos e exportações
⬆ Voltar ao topo
Registrar consulta SQLite
⬆ Voltar ao topo
propriedade do sistema obter
⬆ Voltar ao topo
Transações de fichário
⬆ Voltar ao topo
Revelar métodos nativos
RegisterNativeMethods pode ser usado como uma técnica anti-reversão para as bibliotecas .so nativas, por exemplo, ocultando os símbolos tanto quanto possível, ofuscando os símbolos exportados e eventualmente adicionando alguma proteção sobre a ponte JNI.
fonte
@OldVersion
⬆ Voltar ao topo
Argumentos do método de log
⬆ Voltar ao topo
Enumerar classes carregadas
E salve em um arquivo chamado pkg.classes
⬆ Voltar ao topo
Descrição da aula
Obtenha métodos e membros de classe.
Se houver uma colisão de nomes, o método e o membro tiverem o mesmo nome, um sublinhado será adicionado ao membro. fonte
⬆ Voltar ao topo
DESLIGUE o Wi-Fi
Isso desligará o WiFi na criação da primeira atividade.
⬆ Voltar ao topo
Definir proxy
Ele definirá um proxy para todo o sistema usando o endereço IP e a porta fornecidos.
⬆ Voltar ao topo
Obter IMEI
Também pode conectar e alterar o IMEI.
⬆ Voltar ao topo
Gancho io InputStream
Gancho InputputStream e buffer de impressão como ascii com limite de caracteres e lista de exclusão.
⬆ Voltar ao topo
Android faz brinde
Aguarde a condição
Aguarde até que a DLL específica seja carregada no aplicativo Unity, pode implementar hot swap.
⬆ Voltar ao topo
URLS de visualização da Web
Registrar sempre que o URL do WebView for alterado.
⬆ Voltar ao topo
Imprimir strings de tempo de execução
Conectando toString de StringBuilder/Buffer e imprimindo stacktrace.
⬆ Voltar ao topo
Imprimir atualizações de preferências compartilhadas
⬆ Voltar ao topo
Comparação de strings
⬆ Voltar ao topo
Gancho JNI por endereço
Conecte o método nativo pelo nome do módulo e endereço do método e imprima argumentos.
⬆ Voltar ao topo
Construtor de gancho
⬆ Voltar ao topo
Reflexão de gancho
java.lang.reflect.Method#invoke(Objeto obj, Objeto... args, booleano bool)
⬆ Voltar ao topo
Classe de rastreamento
Método de classe de rastreamento, com lindas cores e opções para imprimir como JSON e stacktrace.
TODO adiciona rastreamento para c'tor.
⬆ Voltar ao topo
Obtenha o ID do Android
O ANDROID_ID é único em cada aplicativo Android.
⬆ Voltar ao topo
Alterar local
⬆ Voltar ao topo
Ignorar FLAG_SECURE
Ignorar a questão do stackoverflow de prevenção de captura de tela
⬆ Voltar ao topo
Atualização de preferências compartilhadas
⬆ Voltar ao topo
Sobrecargas de gancho
⬆ Voltar ao topo
Registrar receptor de transmissão
⬆ Voltar ao topo
listar classes implementa interface
⬆ Voltar ao topo
Aumentar a contagem de passos
⬆ Voltar ao topo
Registro do sistema operacional
⬆ Voltar ao topo
Caixa de alerta iOS
⬆ Voltar ao topo
Acesso a arquivos
Registrar cada arquivo aberto
⬆ Voltar ao topo
Observe a aula
observeClass('Algumaclass$innerClass');
⬆ Voltar ao topo
Encontre o UUID do aplicativo iOS
Obtenha o UUID para um caminho específico quando anexado a um aplicativo lendo o arquivo plist em cada contêiner de aplicativo.
⬆ Voltar ao topo
Extrair cookies
⬆ Voltar ao topo
Descrever os alunos
Imprimir mapa de membros (com valores) para cada instância de classe
⬆ Voltar ao topo
Hierarquia de classes
Object.keys(ObjC.classes) listará todas as classes Objective C disponíveis,
mas na verdade isso retornará todas as classes carregadas no processo atual, incluindo estruturas do sistema.
Se quisermos algo como fracoclassdump, para listar classes apenas do próprio executável, o tempo de execução do Objective C já fornece tal função objccopyClassNamesForImage
⬆ Voltar ao topo
Reflexação de gancho
Conectando objc_msgSend
⬆ Voltar ao topo
Interceptar Módulo Inteiro
Para reduzir as funções relacionadas à IU, utilizo as seguintes etapas:
⬆ Voltar ao topo
Despejar segmentos de memória
⬆ Voltar ao topo
Varredura de memória
⬆ Voltar ao topo
Perseguidor
⬆ Voltar ao topo
Desmontador de Cpp
adicione ao seu roteiro
compilar
correr
⬆ Voltar ao topo
Gancho inicial
Definir ganchos antes de DTINITARRAY (fonte)
Crédito: iGio90
⬆ Voltar ao topo
Propriedades do dispositivo
Exemplo de extração rápida e suja de propriedades de dispositivos iOS
⬆ Voltar ao topo
Faça uma captura de tela
⬆ Voltar ao topo
Registrar comandos SSH
⬆ Voltar ao topo
TODOs
exemplo:
Renderizador Mitsuba 3
Documentação | Vídeos tutoriais | Linux | Mac OS | Windows | PyPI |
---|---|---|---|---|---|
️
Aviso
️
Actualmente existe uma grande quantidade de trabalho indocumentado e instável em curso no
o ramo master
. É altamente recomendável que você use nosso
último lançamento
até novo aviso.
Se você já deseja experimentar as próximas mudanças, dê uma olhada em
este guia de portabilidade.
Deve cobrir a maioria dos novos recursos e mudanças importantes que estão por vir.
Introdução
Mitsuba 3 é um sistema de renderização orientado para pesquisa para luz direta e inversa
simulação de transporte desenvolvida na EPFL na Suíça.
Consiste em uma biblioteca principal e um conjunto de plug-ins que implementam funcionalidades
variando de materiais e fontes de luz a algoritmos de renderização completos.
Mitsuba 3 é redirecionável : isso significa que as implementações subjacentes e
estruturas de dados podem ser transformadas para realizar várias tarefas diferentes. Para
Por exemplo, o mesmo código pode simular transporte RGB escalar (clássico de um raio por vez)
ou transporte espectral diferencial na GPU. Tudo isso se baseia
Dr.Jit, um compilador just-in-time (JIT) especializado desenvolvido especificamente para este projeto.
Principais recursos
Plataforma cruzada : Mitsuba 3 foi testado em Linux ( x86_64
), macOS
( aarch64
, x8664
) e Windows ( x8664
).
Alto desempenho : o compilador Dr.Jit subjacente funde o código de renderização
em kernels que alcançam desempenho de última geração usando
um back-end LLVM direcionado à CPU e um back-end CUDA/OptiX
visando GPUs NVIDIA com aceleração de hardware de rastreamento de raio.
Python primeiro : Mitsuba 3 está profundamente integrado ao Python. Materiais,
texturas e até mesmo algoritmos de renderização completos podem ser desenvolvidos em Python,
que o sistema compila JIT (e opcionalmente diferencia) em tempo real.
Isso permite a experimentação necessária para pesquisas em computação gráfica e
outras disciplinas.
Diferenciação : Mitsuba 3 é um renderizador diferenciável, o que significa que
pode calcular derivadas de toda a simulação em relação à entrada
parâmetros como pose de câmera, geometria, BSDFs, texturas e volumes. Isto
implementa algoritmos de renderização diferenciáveis recentes desenvolvidos na EPFL.
Espectral e Polarização : Mitsuba 3 pode ser usado como monocromático
renderizador, renderizador baseado em RGB ou renderizador espectral. Cada variante pode
opcionalmente, considere os efeitos da polarização, se desejado.
Vídeos tutoriais, documentação
Gravamos vários vídeos no YouTube que fornecem uma introdução gentil
Mitsuba 3 e Dr.Jit. Além disso você pode encontrar notebooks Juypter completos
cobrindo uma variedade de aplicações, guias de instruções e documentação de referência
em readthedocs.
Instalação
Fornecemos rodas binárias pré-compiladas via PyPI. Instalar o Mitsuba desta forma é tão simples quanto executar
pip instalar mitsuba
na linha de comando. O pacote Python inclui treze variantes por padrão:
scalar_rgb
scalar_spectral
scalarspectralpolarized
llvmadrgb
llvmadmono
llvmadmono_polarized
llvmadspectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
Os dois primeiros realizam simulação clássica de um raio por vez usando um RGB
ou representação espectral de cores, enquanto os dois últimos podem ser usados para representação inversa
renderização na CPU ou GPU. Para acessar variantes adicionais, você precisará
compilar uma versão personalizada do Dr.Jit usando CMake. Por favor veja o
documentação
para obter detalhes sobre isso.
Requisitos
Python >= 3.8
(opcional) Para computação na GPU: Nvidia driver >= 495.89
(opcional) Para computação vetorizada/paralela na CPU: LLVM >= 11.1
Uso
Aqui está um exemplo simples de "Hello World" que mostra como é simples renderizar um
cena usando Mitsuba 3 do Python:
# Importe a biblioteca usando o alias "mi"import mitsuba as mi# Defina a variante do renderermi.setvariant('scalarrgb')# Carregue uma scenecene = mi.loaddict(mi.cornellbox())# Renderize a cenaimg = mi. render(scene)# Grave a imagem renderizada em um arquivo EXRmi.Bitmap(img).write('cbox.exr')
Tutoriais e cadernos de exemplo cobrindo uma variedade de aplicações podem ser encontrados
na documentação.
Sobre
Este projeto foi criado por Wenzel Jakob.
Recursos e/ou melhorias significativas no código foram contribuídos por
Sébastien Speierer,
Nicolas Roussel,
Merlin Nimier-David,
Délio Vicini,
Tizian Zeltner,
Baptiste Nicolet,
Miguel Crespo,
Vicente Leroy e
Zi Yi Zhang.
Ao usar o Mitsuba 3 em projetos acadêmicos, cite:
@software{Mitsuba3,title = {mitsuba 3 renderer},author = {Wenzel Jakob e Sébastien Speierer e Nicolas Roussel e Merlin Nimier-David e Delio Vicini e Tizian Zeltner e Baptiste Nicolet e Miguel Crespo e Vincent Leroy e Ziyi Zhang},nota = {https://mitsuba-renderer.org},versão = {3.1.1},ano = 2022}