Καλησπέρα σε όλους!

Πρόσφατα έπεσε στα χέρια μου το περίφημο 'hacking - the art of exploitation' όπου στο κεφάλαιο 3 γινόταν λόγος για επιθέσεις τύπου stack overflow. Θα ήθελα λοιπόν να κάνω μια πολύ συγκεκριμένη ερώτηση σχετικά με την return address που επέλεξε να χρησιμοποιήσει ο συγγραφέας και πιο συγκεκριμένα:

Στο παράδειγμα της σελίδας 138 χρησιμοποιείται η παρακάτω γραμμή κώδικα για να καθοριστεί η return address που θα περαστεί στο buffer διαγράφοντας ετσι την αρχική διεύθυνση και γράφοντας από πάνω εκείνη της διεύθυνσης που βρίσκεται το shellcode.

Κώδικας:
ret=(unsigned int) &i - offset ;
Θα ήθελα λοιπόν να καταλάβω το εξής:

Ποια διεύθυνση αποσκοπεί να 'χτυπήσει' ο συγγραφέας αφαιρώντας ένα offset από το σημείο που βρίσκεται το i?
Μήπως το searchstring της σελίδας 94? Και αν ναι γιατί τότε δεν δίνει απλά την διεύθυνση του buffer ως εξής:
Κώδικας:
ret=&buffer
?

Χίλια ευχαριστώ για τον χρόνο σας.