Ответ 1
Есть decompilers, но декомпилятор не может испускать код на том же языке, на котором была записана оригинальная программа.
Есть также disassemblers, который будет собирать машинный код в сборку.
Викитека декомпиляции может быть хорошим источником дополнительной информации.