2014-07-03 52 views
7

Recentemente ho preso il cracking e il reverse engineering con l'aiuto di OllyDbg 2.01 e crack eseguibili.OllyDbg 2.01 - Ricerca di un comando che fa riferimento a una stringa statica

Quindi, in questo particolare crackme, stavo scorrendo i comandi e ho notato una spinta con una stringa ASCII "& File" (si tratta di una stringa di menu):

1

così ho pensato: "Se Posso trovare queste informazioni semplicemente scorrendo, sicuramente ci deve essere un modo automatico per trovare un comando che faccia riferimento a una particolare stringa ".

in modo da ottenere alla parte superiore del programma, premere CTRL + B e cercare ASCII "File" per trovare spera di nuovo:

2

Dopo aver colpito OK, OllyDbg non trova la prima PUSH. Invece, ottengo questo:

3

Mmmh .. Va bene, che non è quello che mi aspettavo, ma vediamo cosa c'è dentro. così mi fate clic destro => seguire Dump, e ottengo questo:

4

Quindi sì, abbiamo trovato la nostra stringa nella discarica. Tuttavia, non ho ancora trovato il mio PUSH originale. Si può anche notare che l'indirizzo della stringa è lo stesso dell'argomento PUSH (40512C).

Come ultimo tentativo, faccio clic destro sulla lettera all'indirizzo 40512C, selezionare "Trova riferimenti", ma no: nessun riferimento trovato.

Quindi TL; Domanda DR: come trovo automaticamente un comando che fa riferimento a una stringa? Perché ovviamente non farò scorrere l'intero stack di comandi ogni volta che voglio trovare una stringa.

PS: la stringa non viene visualizzata nemmeno nelle "stringhe di testo di riferimento".

Grazie in anticipo per il vostro aiuto.

MODIFICA: okay, quindi ho trovato una soluzione. Ho cercato il codice per "2C 51 40 00", che è l'indirizzo indietro, e ho trovato il mio PUSH di nuovo. È un po 'hacky, chiunque abbia una soluzione più efficiente è benvenuto a condividere.

risposta

4

Quindi, ci sono diversi modi per farlo. Quello che preferisco è il seguente: Ctrl+G e vai alla tua stringa nella discarica. (0x0040512C) Selezionare il primo byte e premere Ctrl+R. Questo ti darà una lista in cui viene fatta riferimento alla stringa specifica. È inoltre possibile posizionare un punto di interruzione hardware sul primo byte della stringa "&" e quindi si interromperà ogni volta che qualcosa vi accede. Puoi anche cercare costanti (l'indirizzo o i caratteri ascii stessi).

Tra l'altro c'è un sito secondario dedicato per reverseengineering :)

+0

ho provato Ctrl + R come indicato nel mio post (clic destro sul primo byte e selezionando "trovare riferimenti"), ma non ha dato qualsiasi risultato. Informazioni sui breakpoint di memoria: sì, li ho scoperti di recente e sono fantastici :). grazie per il suggerimento sul sito secondario di retroingegneria, lo controllerò. – Ely