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