Ничего не необходимо, все можно освоить в процессе, и это гораздо эффективнее, чем, например, теория по какому-нибудь K&R (Керниган и Ритчи) без практики, но будет проще, если будет опыт в ассемблере, и особенно том в который скомпилирована исследуемая программа, опыт в C/C++ (декомпиляция с помощью Hex-Rays), и даже Java или например Delphi в зависимости от задачи, одним словом - программирование, и чем шире, тем лучше.