Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10

Проверка Windows на подлинность (локальная)

30.04.2021, 13:32. Показов 10615. Ответов 94

Студворк — интернет-сервис помощи студентам
Начиная с Windows 7 есть функция для проверки подлинности системы - SLIsGenuineLocalEx.
Проверка проводится локально.
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
;https://docs.microsoft.com/en-us/windows/win32/api/slpublic/nf-slpublic-slisgenuinelocalex
 
#SL_GEN_STATE_IS_GENUINE = 0
 
 hDll = OpenLibrary(#PB_Any, "sppc.dll")    
If hDll 
    *SLIsGenuineLocal = GetFunction(hDll, "SLIsGenuineLocalEx")
    If *SLIsGenuineLocal
    If CallFunctionFast(*SLIsGenuineLocal, ?IID_NAME, 0, @test) = #S_OK
            If test = #SL_GEN_STATE_IS_GENUINE
               MessageRequester("Поздравляю! ", "Ваша Windows считается подлинной.", #PB_MessageRequester_Info)
            Else
               MessageRequester("Внимание! ",  "Ваша Windows не прошла проверку подлинности.", #PB_MessageRequester_Warning)
            EndIf
        EndIf
    EndIf    
    CloseLibrary(hDll)
  Else
    
   MessageRequester("Внимание! ",  "Ваша Windows немного устарела для этой проверки.", #PB_MessageRequester_Warning)  
  EndIf
  
  DataSection 
  IID_NAME:
  Data.l $55c92734
  Data.w $d682, $4d71
  Data.b $98, $3e, $d6, $ec, $3f, $16, $05, $9f
 EndDataSection
Проверяйте, тестируйте:
Вложения
Тип файла: zip genuine.zip (3.3 Кб, 25 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2021, 13:32
Ответы с готовыми решениями:

Проверка Windows на подлинность
Добрый день. Подскажите как проверить Windows (любую) - лицензионная она или пиратская анонимно и без последствий для самой винды.

Проверка на подлинность Windows 7
Подскажите как быть, у меня стоит лицензия вин 7, через некоторое время, у меня был троян, изза которого слетела полностью винда, я...

Проверка на подлинность Windows 7
У меня стоит Windows 7. 64 разряда.Активирована.С недавних пор при открытии любого текстового документа выкидывает окно: Копия Windows...

94
Эксперт по электронике
7153 / 3332 / 342
Регистрация: 28.10.2011
Сообщений: 13,148
Записей в блоге: 7
03.05.2021, 11:04
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Замабувараев Посмотреть сообщение
А ещё вам необходимо добавить ссылку на статическую библиотеку libsppc.dll.a
Статическая линковка?
Программа не запустится на винде ниже 7. Код из первого сообщения нормально будет работать.
Попробуйте запустить свою программу на линукс. Узнаете насколько WinAPI кросплатформенные!
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
03.05.2021, 11:22
Цитата Сообщение от locm Посмотреть сообщение
Статическая линковка?
Да, статическая линковка. Это оправдано, потому что программа не будет работать без функции «SLIsGenuineLocalEx». Нет никакого смысла вручную убеждаться в отсутствии sppc.dll, когда операционная система сделает это сама.
Цитата Сообщение от locm Посмотреть сообщение
Попробуйте запустить свою программу на линукс. Узнаете насколько WinAPI кросплатформенные!
1. Вы утверждаете, что программа со статической линковкой не сможет вызвать функцию «SLIsGenuineLocalEx» на Linux, а с динамической сможет?
2. Является ли программа на PureBasic, которая вызывает SLIsGenuineLocalEx, кроссплатформенной? Если да, является ли программа на FreeBASIC, которая вызывает SLIsGenuineLocalEx, кроссплатформенной? В чём разница?
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
03.05.2021, 11:33  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
Что может быть непонятного в слове «успешно»?
Мне то понятно. Успешно, так успешно. При вызове функции ошибки нет, я с вами не спорю.
Цитата Сообщение от Замабувараев Посмотреть сообщение
Если FAILED не сработал, значит ошибки нет, можно продолжать.

Продолжать при S_FALSE?
Ваш код отработает неверно, потому что:
This function does not change the value of this parameter if the return value is any value other than S_OK.

Так что будет у вас лежать в pGenuineState?
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
03.05.2021, 11:37
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Продолжать при S_FALSE?
Да, потому что
Цитата Сообщение от MSDN
99% методов COM возвращают S_OK, когда они успешны; но не позволяйте этому факту вводить вас в заблуждение.
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
03.05.2021, 11:52  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
Да, потому что
Сообщение от MSDN
99% методов COM возвращают S_OK, когда они успешны; но не позволяйте этому факту вводить вас в заблуждение.
Замабувараев, А голову включить?
Вот что написано в MSDN конкретно по этой функции:
This function does not change the value of this parameter if the return value is any value other than S_OK.
И в этой связи задал простой и конкретный вопрос:
Так что будет у вас лежать в pGenuineState, если при её вызове вернётся S_FALSE?
0
Эксперт по электронике
7153 / 3332 / 342
Регистрация: 28.10.2011
Сообщений: 13,148
Записей в блоге: 7
03.05.2021, 12:10
Цитата Сообщение от Замабувараев Посмотреть сообщение
Вы утверждаете, что программа со статической линковкой не сможет вызвать функцию «SLIsGenuineLocalEx» на Linux, а с динамической сможет?
Со статической линковкой программа не запустится.
С динамической запустится. В первом сообщении темы есть обработка такой ситуации.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Является ли программа на PureBasic, которая вызывает SLIsGenuineLocalEx, кроссплатформенной?
Причем здесь это? Вы утверждали что WinAPI кроссплатформенны. Запустите вашу прогу со статической линковкой на линуксе и увидите что будет.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
03.05.2021, 12:50
Цитата Сообщение от locm Посмотреть сообщение
Со статической линковкой программа не запустится.
И какой смысл запускать программу, если библиотеки sppc.dll всё равно нет? Чтобы выдать сообщение и тут же завершиться? Загрузчик сам умеет выдавать такие сообщения, нет смысла дублировать его поведение.
Цитата Сообщение от locm Посмотреть сообщение
Запустите вашу прогу со статической линковкой на линуксе и увидите что будет.
А с динамической линковкой что будет?

Добавлено через 1 минуту
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Так что будет у вас лежать в pGenuineState, если при её вызове вернётся S_FALSE?
То же, что и при S_OK.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
03.05.2021, 13:16
Я тут короче подумал, надо бы пойти, что-ли, спросить с халявного линукса за подлинность ...
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
03.05.2021, 14:16  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
То же, что и при S_OK.
Это не верный ответ, там будет то, что и было раньше этому адресу @GenuineState.

В MSDN написано так:
This function does not change the value of this parameter if the return value is any value other than S_OK.
Вы же понимаете, что S_FALSE отличается от S_OK?
Или вы не умеете читать документацию, или не хотите включить голову, дальше дискутировать с вами бессмысленно.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
03.05.2021, 14:20
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Вы же понимаете, что S_FALSE отличается от S_OK?
Вы же сами говорите, что возвращает либо ошибку, либо S_OK.
На ошибку Я проверил, значит в hrGenuineLocal после этого может лежать только S_OK. Поэтому проверка на S_OK лишняя.
0
Эксперт по электронике
7153 / 3332 / 342
Регистрация: 28.10.2011
Сообщений: 13,148
Записей в блоге: 7
03.05.2021, 14:54
Цитата Сообщение от Замабувараев Посмотреть сообщение
Я проверил, значит в hrGenuineLocal после этого может лежать только S_OK.
Тогда проверяем только на S_OK и все. Как в первом сообщении темы.
Если вдруг функция вернет S_FALSE или другой подобный статус, код из первого сообщения отработает правильно, а ваш нет.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
03.05.2021, 15:09
Цитата Сообщение от locm Посмотреть сообщение
Если вдруг функция вернет S_FALSE
А несколько сообщений назад вы утверждали что может быть только S_OK или ошибка. Вы противоречите сами себе.
0
Эксперт по электронике
7153 / 3332 / 342
Регистрация: 28.10.2011
Сообщений: 13,148
Записей в блоге: 7
03.05.2021, 15:19
Цитата Сообщение от Замабувараев Посмотреть сообщение
А несколько сообщений назад вы утверждали что может быть только S_OK
Не я а документация на функцию.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Вы противоречите сами себе.
Не противоречу, а вот вы пишите код не согласно документации на функцию.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
03.05.2021, 15:38
Нет, всё правильно.

Функция возвращает:
* успех
* ошибку

Ошибку уже обработа внутри FAILED.
Теперь внутри hrGenuineLocal лежит успех. Проверять на успешность и S_OK уже не нужно.
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
03.05.2021, 16:37  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
Вы же сами говорите, что возвращает либо ошибку, либо S_OK.
Быстро вы переобулись, прямо в воздухе
Цитата Сообщение от Замабувараев Посмотреть сообщение
А если она вернёт S_FALSE? Ведь S_FALSE — это тоже код успеха.
Цитата Сообщение от The trick Посмотреть сообщение
Положительных кодов может быть 2147483647 штук, любой из них.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
03.05.2021, 16:40
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Быстро вы переобулись, прямо в воздухе
Нет конечно, мой код работает для любых успешных статусов без перекомпиляции.
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
03.05.2021, 16:50  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
мой код работает
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Не работает:
...\Compilier\fbc -s gui "GENUINE.bas"
GENUINE.o:fake: (.text+0x12) : undefined reference to `SLIsGenuineLocalEx@12'

Вы пишите избыточный, и не эффективный код, в котором сами же и запутались.

KISS principle - «Keep it simple, stupid», «keep it short and simple», «keep it simple and straightforward»
Принцип KISS утверждает, что большинство систем работают лучше всего, если они остаются простыми, а не усложняются. Поэтому в области проектирования простота должна быть одной из ключевых целей, и следует избегать ненужной сложности.


Тему можно закрывать, а свой код засуньте в раздел Basic, ему там место.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
03.05.2021, 16:59
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Не работает:
...\Compilier\fbc -s gui "GENUINE.bas"
GENUINE.o:fake: (.text+0x12) : undefined reference to `SLIsGenuineLocalEx@12'
Я правильно понимаю, что вы проигнорировали сообщение с исправленной версией?
Цитата Сообщение от Pro_grammer Посмотреть сообщение
следует избегать ненужной сложности.
Всё верно. Только у вас самостоятельная загрузка библиотеки, получение адреса функции — это бессмысленное усложнение, ведь можно было просто вызвать продекларированную функцию.
0
Эксперт по электронике
7153 / 3332 / 342
Регистрация: 28.10.2011
Сообщений: 13,148
Записей в блоге: 7
03.05.2021, 17:54
Цитата Сообщение от Замабувараев Посмотреть сообщение
ведь можно было просто вызвать продекларированную функцию.
И тогда в винде ниже 7, программа не запуститься, т. е. нет совместимости. Не разу не писали программу которая могла бы использовать функции современных ОС и работать в предыдущих ОС без этих функций?
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
03.05.2021, 17:56  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
можно было просто вызвать продекларированную функцию
Так как у вас?
undefined reference to `SLIsGenuineLocalEx@12'
Лучше лишний раз проверить, есть ли такая функция, чем тупо вызывать то, чего нет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.05.2021, 17:56

Проверка на подлинность Windows 7 (не прошла) экран черный
как убить черный экран в семерке? в хр делала, а тут другое дело) муж вчера попробовал, сегодня с Вашей помощью еле комп реанимировала)...

Проверка на подлинность
Здравствуйте! У меня к вам просьба.Не мог бы кто-то помочь мне разобраться с одной очень интересной задачкой по Access? И решения у...

Проверка COOKIE на подлинность
Здравствуйте. Мне нужно проверить куки на подлинность, что пользователь действительно зарегистрирован $db = Db::getConnection(); ...

Проверка на подлинность домена
Доброго времени суток. У меня небольшой сайт и он шлет на vps сервер, всплыло что кто-то открыл другие домены и скорее всего простым...

Активация и проверка на подлинность
копия windows не прошла проверку на подлинностью. что это может быть?как его убрать чтоб оно больше не высвечивалось? а то поменяю тему а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Опции темы

Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru