Capire un incidente

2

Supponiamo che stai sfogando un'applicazione Windows x32 per un bug di formato file e, ad esempio, hai trovato un pattern che causa l'arresto anomalo dell'applicazione.

I miei passaggi normali sono:

  • carica l'applicazione in un debugger
  • genera e analizza il crash.

Nelle mie condizioni reali, posso vedere il mio schema nello stack ma, in fase di arresto, non riesco a trovare alcun registro impattato né sovrascrittura SEH, ma solo qual è l'istruzione che causa l'arresto anomalo:

MOV WORD PTR DS:[EDI+2],DX

in sostanza, non può scrivere perché è un'area di memoria non mappata.

Devo ammettere che sono completamente perso perché non posso procedere alla verifica degli offset in memoria.

    
posta Kartone 10.01.2018 - 23:40
fonte

1 risposta

3

Il tuo input di file ha probabilmente influenzato il valore di EDI in qualche modo, o ha indotto il flusso di controllo a prendere un percorso che altrimenti non avrebbe intrapreso. Normalmente guarderei qualche istruzione indietro e proverei a determinare come EDI è arrivato ad avere quel valore, o magari a rompere all'inizio della funzione in cui si verifica l'arresto anomalo e ad attraversarlo (o alcune funzioni più in alto nello stack).

Un'altra opzione relativamente nuova sarebbe quella di usare funzionalità di debug in tempo ! Puoi lasciarlo girare nel debugger fino allo schianto, quindi tornare indietro nell'esecuzione per capire come sei arrivato all'arresto.

Ovviamente, se hai una fonte, starai molto meglio a guardarla in questo modo in parallelo per capire cos'è successo.

    
risposta data 11.01.2018 - 08:26
fonte

Leggi altre domande sui tag