Sto analizzando un file di dettagli di Windows in WinDBG. Posso cambiare il frame dello stack delle chiamate tramite comando .frame, ma ho scoperto che i registri contengono sempre l'ultimo contesto. Voglio dire, se è possibile ripristinare il contesto che appartiene a uno specifico frame di stack di chiamate che non è quello superiore?Come invertire il valore dei registri su un frame di stack di chiamate specifico in windbg
6
A
risposta
7
Se stai debug di un obiettivo x64, è possibile utilizzare:
.frame /r
Per visualizzare i registri nel telaio. Questa informazione è basata sui dati di unwind nell'immagine, quindi è abbastanza affidabile. È inoltre possibile modificare il contesto con:
.frame /c
Sul x86, non ci sono informazioni di svolgimento in modo da questo trucco non funziona. .frame ti mostrerà comunque qualcosa per i registri, ma non è così probabile che sia corretto (fondamentalmente sarà corretto solo per fortuna).
0
provare findthis.py, che è come ottenere il codice CFI (Call Frame Info) smontando il prologo di ciascun frame nel callstack.
http://nick.luckygarden.org/find-this-ptr-within-a-callstack-in-a-dump-file/
Capito. Posso solo trovare i registri in pila indirettamente. –