Сначала нужно научиться на языке ассемблера программы писать. Далее берёшь книги по реверсингу и статьи по теме и смотришь, как это примерно делается и с помощью каких инструментов (под windows есть IDA pro, под линукс - radare2). Походу прочтения статей сам пытаешься среверсить что-нибудь, для этого можешь брать лёгкие задачи с сайта crackmes.one
Понадобятся как минимум учебник по ассемблеру, учебник по архитектуре компьютеров и учебник по устройству интересующей операционной системы. И конечно же, сначала придётся научиться писать программы, а уж потом их реверсить.