Как работают программы для реверс-инженеринга?
обычного кода превращают код в ассемблер
Обычный код это практически и есть ассемблер.
Процесс называется декомпиляция.
Умеет практически любой отладчик.

Программ для "реверс инженеринга" не существует. Есть программы для отладки. Те, кто знает как работают различные системы и протоколы, могут использовать их для реверс-инженеринга.

Парень. Не существует программы, которая за тебя все похакает. Нужно учить очень много, и для начала просто научиться программировать хоть на чем-нибудь.

Ты задаешь уже шестой не очень умный вопрос, на который ЛЕГКО найти готовый ответ, если воспользоваться поиском. Но тебе видимо лень. Именно это и показатель, что у тебя вряд ли что-то получится. Слишком ленивый для обучения.
На примере Ghidra: сперва идёт поиск паттернов машинного кода (должны совпасть ключевые значения вроде опкодов, для этого составляется маска инструкции, затем необходимое целевое значение, полученное побитовым И с маской), затем подходящий паттерн преобразуется в две строки. Первая - заголовок, подаётся в дизассемблер, содержит мнемонику и операнды, в Ghidra используются спецификации на языке Sleigh. Но это так, для разминки, поскольку дизасм читать нереально, вот тут и было придумано промежуточное представление. Суть в том, что каждая инструкция - микрофункция, содержащая код (например, на языке Pcode, как в Ghidra). Затем он посылается в декомпилятор и поднимается до финального кода на C.