Μπα το να' χεις σπουδάσει πληροφορική δεν είναι προαπαιτούμενο. Εκείνο που είναι προαπαιτούμενο είναι η ηλικία. Θα πρεπε όταν ήσουν γύρω στα 15 να είχες ανοίξει το documentation της αρχιτεκτονικής Ι86 και να ξεκινούσες απο κει. Για μια αρχή δες αυτό.
en.wikibooks.org/wiki/X86_Assembly
Και μετά θα έπρεπε να φτιάξεις αρκετά προγράμματα σε assembly έτσι ώστε να δεις πως δουλεύουν τα πράγματα. Κάνε μια αναζήτηση στο google ή στο amazon και θα βρείς πολλά βιβλία που ασχολούνται με προγραμματισμό assembly.
Αφού λοιπόν μάθεις να διαβάζεις σε assembly μπορείς να ανοίξεις το executable με την βοήθεια ενός disassembler. To επόμενο στάδιο είναι το διάβασμα του κώδικα και το commenting. Όταν τελειώσεις με αυτό αλλάζεις τα κομμάτια που σου δημιουργούν το πρόβλημα και μετά κάνεις assemble. Αν όλα πήγαν καλά έχεις κάνει το patch σου.
Απο κει και πέρα ο gcapnias έχει απόλυτο δίκιο που σου λέει ότι συνήθως δίνεται καινούργιο εκτελέσιμο. Είναι πολύ πιο εύκολο να κάνεις το patch στον υψηλού επιπέδου κώδικα που είναι συνήθως γραμμένα τα προγράμματα.
PS. Το ζήτημα της ηλικίας. Τα 15 κατά τη γνώμη μου είναι η κατάλληλη ηλικία για να μάθει κανείς αυτή τη διαδικασία. Το ανθρώπινο μυαλό τότε είναι στα ντουζένια του, απορροφά γνώσεις σαν σφουγγάρι και δουλεύει 2 φορές πιο γρήγορα. Αυτό δεν σημαίνει ότι δεν μπορείς να κάνεις το ίδιο και στα 30. Απλά είναι πολύ πιο δύσκολο και απαιτεί πολύ περισσότερο κόπο...