Como fazer um despejo de memória no .NET?
-
27-09-2019 - |
Pergunta
Como você obtém um despejo de memória de um determinado endereço de memória no formato:
Address | Hexadecimal representation | ASCII representation
---------------------------------------------------------------------------------------
0x637132687 | 00 00 00 00 00 00 00 00 45 21 65 78 32 F5 12 6C | ....... ahsnfdas
0x637132703 | 00 00 00 00 00 00 00 00 45 21 65 78 32 F5 12 6C | ....... ahsnfdas
0x637132719 | 00 00 00 00 00 00 00 00 45 21 65 78 32 F5 12 6C | ....... ahsnfdas
0x637132735 | 00 00 00 00 00 00 00 00 45 21 65 78 32 F5 12 6C | ....... ahsnfdas
Você conhece alguma API/Framework/Ferramenta para o trabalho?
Solução
Você precisará de marecal.copymemory () e este código. P/Invocando VirtualQueryEx () para garantir que os endereços de memória sejam válidos seria uma boa idéia para evitar exceções.
Outras dicas
Certamente pode ser feito usando o Windbg. Honestamente, eu não sou um mago usando -o, mas Tess Ferrandez da Microsoft é e tem um excelente Blog sobre o uso do WindBG para depurar aplicativos .NET.
Parece que você só quer navegar por um despejo de memória normal, que deve ser bem direto. Se você deseja examinar mais alguma coisa (com relação ao .NET), use as extensões SOS para o Windbg.