• XSS.stack #1 – первый литературный журнал от юзеров форума

Минимальная версия винды на которой запустится exe?

PlebsoVata

RAID-массив
Пользователь
Регистрация
05.10.2019
Сообщения
87
Реакции
34
Собственно вопрос как узнать минимальную версию винды на которой запустится exe?

В вижуал студии есть 2 тулсета(v142, v141_xp)
В комплекте со студией идет отдельная командная строка для нее, там есть команда вида:
dumpbin /headers some.exe
В выводе есть "OPTIONAL HEADER VALUES", а в них есть "operating system version" и "subsystem version", если собирать с v142 тулсетом, то оба "operating system version" и "subsystem version" равны "6.0", если с v141_xp, то они равны "5.01", если предположить что это NT версии винды, то 6.0 это Vista и Server 2008, а 5.01 - XP и Server 2003

являются ли эти значения минимальной версией винды, на которой может запустится экзешник или нет? Если нет, то вопрос остается в силе.
 
Важно! Если ставить тулсет XP то в ехе добавляются некоторые функции которых нету в XP и ехе может работать и на XP и выше, если выбираешь тулсет другой без поддрежки XP то на XP может не работать. В ехе еще зашивается инфа с какой версии он может работать. Еще суть такая если пишешь нативно - тупо АПИ и менеджер памяти (ММ) используешь свой или сам делаешь контроль то вообще пофигу как компили, CTR зависит сильно от тулсета
 
Важно! Если ставить тулсет XP то в ехе добавляются некоторые функции которых нету в XP и ехе может работать и на XP и выше, если выбираешь тулсет другой без поддрежки XP то на XP может не работать. В ехе еще зашивается инфа с какой версии он может работать. Еще суть такая если пишешь нативно - тупо АПИ и менеджер памяти (ММ) используешь свой или сам делаешь контроль то вообще пофигу как компили, CTR зависит сильно от тулсета
Я без crt компилю, но все же некоторые функции, которые работают начиная с xp импортирую и использую, чтобы сделать вид более легитимного приложения.
В этом случае получается не будет разницы, но я думаю лучше xp тулсет заюзать, потому что вот здесь https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-image_optional_header32 говорится что
MajorOperatingSystemVersion - The major version number of the required operating system.
Проще было бы сразу на виртуалках проверить, но пока времени на это особо нет
 
MajorOperatingSystemVersion ты его можешь изменить после компиляции, я сейчас не помню на VС++ можно ли принудительно дефайном выставить минимальную версию, но покапай в эту сторону.
 
MajorOperatingSystemVersion ты его можешь изменить после компиляции, я сейчас не помню на VС++ можно ли принудительно дефайном выставить минимальную версию, но покапай в эту сторону.
Я погуглил и судя по тому что люди говорили, то если стоит значение 6, то на xp не запустится, даже если теоретически возможно, но если пропатчить значение до 5, то запустится, так что либо на v141_xp тулсете писать, либо на v142 и написать маленький скриптик, который пропатчит это значение и в настройках проекта в студии как post-build event его прокинуть
 
Пожалуйста, обратите внимание, что пользователь заблокирован
если стоит значение 6, то на xp не запустится
XP это NT версии 5.1 (Windows server 2003 это 5.2, вин2к - 5.0).
Виста это уже 6.0, десятка идет как 10.0, но там уже другая история.

Суть в том, что надо 1) выставить каким-то образом вот в эти поля значения
"operating system version" и "subsystem version",
5 (major ) , 2) не юзать функций, которых в ХР нет (или получать их динамически, что для малвари логично). А как выставлять - или указывать в настройках линкера студии, или вручную править РЕ редактором - не суть.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх