Я создал простой файл .exe, который просто присваивает значение 3 целому числу с именем «x», а затем распечатывает это значение. Вот изображение исходного кода:
исходный код
Я открыл файл .exe с помощью шестнадцатеричного редактора (с именем HxD) и использовал функцию дизассемблирования Visual Studio 2017, чтобы показать мне коды операций моей основной функции. После небольшого поиска я обнаружил, что основная функция хранится в файле со смещением 0xC10
Вот разборка: Разборка
А вот файл в Hex-редакторе: шестнадцатеричное представление .exe файла
Я знаю, что некоторые значения файла .exe в шестнадцатеричном редакторе отличаются от того, что говорит отладчик Visual Studio, но я знаю, что основное начинается там, потому что я изменил значение x в шестнадцатеричном редакторе, а затем, когда я запустил .exe он распечатал другое значение вместо 3. Мой вопрос заключается в том, где в файле .exe находится значение, которое говорит: «В этой точке файла запустите коды операций основной функции.»
Например, в файле .bmp 4 байта в позициях 0x0A, 0x0B, 0x0C и 0x0D сообщают вам о смещении первого байта первого пикселя.