#include <iostream>
#include <fstream>
#include <windows.h>
int main() {
    // Замените "path_to_file.exe" на путь к вашему исполняемому файлу
    const char* filePath = "path_to_file.exe";
    std::ifstream file(filePath, std::ios::binary);
    if (!file) {
        std::cout << "Не удалось открыть файл." << std::endl;
        return 1;
    }
    // Перемещаемся к началу PE-заголовка
    file.seekg(0, std::ios::end);
    std::streampos fileSize = file.tellg();
    file.seekg(0, std::ios::beg);
    // Читаем DOS-заголовок
    IMAGE_DOS_HEADER dosHeader;
    file.read(reinterpret_cast<char*>(&dosHeader), sizeof(IMAGE_DOS_HEADER));
    // Проверяем сигнатуру DOS-заголовка
    if (dosHeader.e_magic != IMAGE_DOS_SIGNATURE) {
        std::cout << "Неверная сигнатура DOS-заголовка." << std::endl;
        return 1;
    }
    // Перемещаемся к PE-заголовку
    file.seekg(dosHeader.e_lfanew, std::ios::beg);
    // Читаем PE-заголовок
    IMAGE_NT_HEADERS ntHeaders;
    file.read(reinterpret_cast<char*>(&ntHeaders), sizeof(IMAGE_NT_HEADERS));
    // Проверяем сигнатуру PE-заголовка
    if (ntHeaders.Signature != IMAGE_NT_SIGNATURE) {
        std::cout << "Неверная сигнатура PE-заголовка." << std::endl;
        return 1;
    }
    // Получаем дату компиляции
    DWORD timestamp = ntHeaders.FileHeader.TimeDateStamp;
    time_t compileTime = timestamp;
    std::cout << "Дата компиляции: " << asctime(localtime(&compileTime));
    file.close();
    return 0;
}