Русский / Russian English / Английский

Сейчас на форуме: Slinger (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Вопросы новичков —› Проблема с библиотекой Net
Посл.ответ Сообщение

Ранг: 5.0 (гость)
Статус: Участник

Создано: 25 февраля 2020 16:07 New!
Цитата · Личное сообщение · #1

Приветствую

Имею в составе установщика библиотеку, которая в том числе при установке проверяет соотвествует ли OS на которую ставим одной из поддерживаемых.

Подскажите, как узнать, где она смотрит, на какую ОС мы ставим. Ну или как обойти эту проверку. В частности, имею проблему, что некоторые версии Windows 10 программа не воспринимает и отказывается на них работать.

Спасибо.

{ Атач доступен только для участников форума } - VolvoIt.Installer.RequirementValidator.dll

Ранг: 46.5 (посетитель)
Статус: Участник

Создано: 25 февраля 2020 16:18 New!
Цитата · Личное сообщение · #2

Оно?
https://docs.microsoft.com/ru-ru/dotnet/api/system.environment.osversion?view=netframework-4.8

Ранг: 5.0 (гость)
Статус: Участник

Создано: 25 февраля 2020 16:25 New!
Цитата · Личное сообщение · #3

Похоже, но откуда он берет эти данные? Какая-то ветка реестра или еще откуда-то?

Ранг: 46.5 (посетитель)
Статус: Участник

Создано: 25 февраля 2020 16:51 New!
Цитата · Личное сообщение · #4

Я не совсем пойму конечную цель
Вам надо в своей дотнетовской программе ограничитель поставить, научить чужую программу работать под неродной осью или с эмулятором побороться?

Добавлено спустя 6 минут
Ну например вот так https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getversion


Ранг: 329.0 (мудрец)
Статус: Участник

Создано: 25 февраля 2020 17:09 New!
Цитата · Личное сообщение · #5

war

В переменных ядра находится инфа, загружается в две области юзер памяти - USD и PEB. Ключ \Registry\Machine\System\CurrentControlSet\Control\ProductOptions.

Ранг: 46.5 (посетитель)
Статус: Участник

Создано: 25 февраля 2020 17:17 · Поправил: _MBK_ New!
Цитата · Личное сообщение · #6

В смысле HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ProductOptions ?
WinNT же

Ранг: 5.0 (гость)
Статус: Участник

Создано: 25 февраля 2020 17:20 New!
Цитата · Личное сообщение · #7

Хочу чужую прогу запустить под осью под которой она не хочет запускаться

Ранг: 46.5 (посетитель)
Статус: Участник

Создано: 25 февраля 2020 17:25 New!
Цитата · Личное сообщение · #8

Если прога дотнетовская то не морочте себе голову и ищите дотнетовский способ определения

Ранг: 5.0 (гость)
Статус: Участник

Создано: 25 февраля 2020 17:26 New!
Цитата · Личное сообщение · #9

Самое интересное, что у меня есть две систему Win10, на одной работает, а на другой пишет Не поддерживаемая OS.

Ранг: 46.5 (посетитель)
Статус: Участник

Создано: 25 февраля 2020 17:32 · Поправил: _MBK_ New!
Цитата · Личное сообщение · #10

Вы моюссылку внимательно прочли?
Если программа тупо проверяет OSVersion вам сильно повезло
В противном случае вам грозит реверсировать и переписывать код с поддержкой неподдерживаемых функций а это достаточно мучительно

Ранг: 5.0 (гость)
Статус: Участник

Создано: 25 февраля 2020 17:41 New!
Цитата · Личное сообщение · #11

А можно как-то в самой библиотеке открутить эту функцию? Чем это можно сделать?

Ранг: 46.5 (посетитель)
Статус: Участник

Создано: 25 февраля 2020 17:48 New!
Цитата · Личное сообщение · #12

Для начала - вы нашли саму проверку? Как именно и где проверяется?

Ранг: 5.0 (гость)
Статус: Участник

Создано: 25 февраля 2020 18:01 New!
Цитата · Личное сообщение · #13

Да, нашел в рефлекторе. Только изменения не сохраняются

Ранг: 329.5 (мудрец)
Статус: Участник
ILSpector Team

Создано: 25 февраля 2020 18:01 · Поправил: Medsft New!
Цитата · Личное сообщение · #14

private static void ValidateAll()
{
if (Validator._discRequired == 0.0)
{
Validator.GetDiscRequired(Validator._os);
}
Validator.AntivirusInstalledWin7();
Validator.ValidateCPU();
Validator.ValidateGPU();
Validator.ValidateDVD();
Validator.ValidateDiscSpace();
Validator.ValidateInputDevice();
Validator.ValidateNetwork();
Validator.ValidateRam();
Validator.ValidateTcpIp();
Validator.ValidateUSB();
Validator.ValidateOsLanguage();
Validator.ValidateRSA();
}

вот сколько она проверяет).Нехило

| Сообщение посчитали полезным: _MBK_


Ранг: 5.0 (гость)
Статус: Участник

Создано: 25 февраля 2020 18:05 New!
Цитата · Личное сообщение · #15

Validator.ValidateOs там есть еще

Ранг: 329.5 (мудрец)
Статус: Участник
ILSpector Team

Создано: 25 февраля 2020 18:08 New!
Цитата · Личное сообщение · #16

А далее примерно, облом на количество процов и т.д.
НО
В самой Dll константы не зашиты, а значит ее запуску предшествует этап настройки и заполнения констант, как уж он делается не знаю
но 100% пудово гдето там должно быть чтото по типу TTPreReqCPUNoOfProcessors.MaxValue = X (где X кол-во процов)

Ранг: 46.5 (посетитель)
Статус: Участник

Создано: 25 февраля 2020 18:10 New!
Цитата · Личное сообщение · #17

Ну занопьте проверку и посмотрите что будет
Хотя сомнительно что при такой валидации программа не рухнет в процессе
Или я снова не пойму сути проблемы - у вас править байткод не получается или что?

Ранг: 5.0 (гость)
Статус: Участник

Создано: 25 февраля 2020 18:13 New!
Цитата · Личное сообщение · #18

Я попытался открыть Refletor с Reflexil, но измененный код не сохраняется. Чем можно поменять?

Ранг: 329.5 (мудрец)
Статус: Участник
ILSpector Team

Создано: 25 февраля 2020 18:14 New!
Цитата · Личное сообщение · #19

Самый злобный вариант)) заменить тело метода
public static TestResult Execute(TTPreReq configObject, bool firstCheck)
{
.....
}
на
public static TestResult Execute(TTPreReq configObject, bool firstCheck)
{
return new TestResult(true, string.Empty, "Сделано с помощью ExeLab", string.Empty);
}
Разраб увидит 100% шок будет как ты с помощью топора обошел всю его защиту)))

Добавлено спустя 1 минуту
Порекламируюсь) ILSpector тебе в руки

| Сообщение посчитали полезным: war


Ранг: 46.5 (посетитель)
Статус: Участник

Создано: 25 февраля 2020 18:23 New!
Цитата · Личное сообщение · #20

Или dnSpy

| Сообщение посчитали полезным: war



Ранг: 329.0 (мудрец)
Статус: Участник

Создано: 25 февраля 2020 20:10 · Поправил: difexacaw New!
Цитата · Личное сообщение · #21

war

> А можно как-то в самой библиотеке открутить эту функцию?

Есть два варианта.

1. Реверсить механизм проверки, интерналс апп в каждом случае и вносить изменения, при этом есть вероятность поломать, если есть контр суммы.
2. Не трогать апп, а изменить системные параметры в среде апп. Но для этого нужно как то загрузить и выполнить свой код в контексте апп. Может быть есчо маленькая проблема с R-only блоком памяти(USD), там тоже нужные параметры есть.

Code:
  1.     ULONG OSMajorVersion;
  2.     ULONG OSMinorVersion;
  3.     USHORT OSBuildNumber;
  4.     USHORT OSCSDVersion;
  5.     ULONG OSPlatformId;
  6.     PEBTEB_STRUCT(UNICODE_STRING) CSDVersion;


Что сделать проще это уже тебе решать.

| Сообщение посчитали полезным: war


Ранг: 5.0 (гость)
Статус: Участник

Создано: 25 февраля 2020 20:51 New!
Цитата · Личное сообщение · #22

Спасибо, удалось запустить
 eXeL@B —› Вопросы новичков —› Проблема с библиотекой Net

Видеокурс ВЗЛОМ