Я не очень хорошо знаком с магией компилятора. Акт преобразования читаемого человеком кода (или не очень читаемых инструкций Ассамблеи) в машинный код для меня - это наука о ракетах в сочетании с колдовством.
Я сужу тему этого вопроса к исполняемым файлам Win32 (.exe). Когда я открываю эти файлы в специализированном средстве просмотра, я могу найти строки (обычно 16b на символ), разбросанные в разных местах, но остальное просто мусор. Я полагаю, что нечитаемая часть (большинство) - это машинный код (или, может быть, ресурсы, такие как изображения и т.д.).
Есть ли простой способ чтения машинного кода? Открыв exe в качестве потока файлов и прочитав его байтом по байтам, как можно превратить эти отдельные байты в Assembly? Существует ли прямое сопоставление между этими байтами команд и инструкцией Ассамблеи?
Как написано .exe? Четыре байта на инструкцию? Больше? Меньше? Я заметил, что некоторые приложения могут создавать исполняемые файлы так же: например, в ACD. Вы можете экспортировать серию изображений в слайд-шоу. Но это необязательно должно быть SWF-слайд-шоу, ACD See также может создавать EXEcutable презентации. Как это делается?
Как я могу понять, что происходит внутри EXE файла?