Encontrando o hive de aps UWP 2023-11-04 reversing Aplicativos UWP não possuem direitos de administração. Por isso eles não conseguem carregar um hive de registro como especificado pela API do Windows. A solução, portanto, é mudar o sistema operacional.
Como saber quais classes winrt estão sendo ativadas 2023-10-05 reversing Quando analisando o comportamento de programas Windows que usam winrt é sempre útil dar uma olhada nas classes sendo ativadas. Uma função-chave para isso é a "RoGetActivationFactory": Sabendo como obter a string raw de uma HSTRING (vide "Explorando a HSTRING") basta colocar um breakpoint no WinDbg que imprima esta string e siga vazando:
Como inspecionar chamadas COM remotas olhando a informação de marshaling 2023-10-03 reversing Esta dica é para começar uma análise de reversa quando você deseja entender quais informações estão sendo trafegadas por uma chamada COM remota, ou seja, entre processos distintos. Isso vale para WinRT e para o COM tradicional. De uma forma ou de outra a chamada irá passar por combase!NdrExtpProxySendReceive e outras funções de RPC relacionadas, além das novas funções de ALPC, em especial ntdll!NtAlpcSendWaitReceivePort. Existem várias de marshaling e unmarshaling, mas o mais importante é centralizar na função que envia e recebe bytes e analisar estes bytes. Eles são a versão serializada dos parâmetro sendo trafegados.
Como colocar breakpoint nas chamadas a OutputDebugString 2023-10-03 reversing Usando sxe out é possível parar a execução de um programa sendo depurado pelo WinDbg sempre que ele disparar alguma saída para o depurador através da função OutputDebugString. Isso permite em nossa sessão de debug descobrir de onde vem a chamada, pois o depurador para e podemos usar o comando k para dar uma espiada.
Como investigar a vtable de uma interface ou objeto COM 2023-10-03 reversing Uma vez que você encontre onde está a vtable -- por exemplo, como o primeiro parâmetro da chamada em um método, vide convenção de chamadas do x64 -- liste no WinDbg os endereços contidos neste endereço (o parâmetro L é a quantidade de bytes para mostrar):