Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/48: Рейтинг темы: голосов - 48, средняя оценка - 4.69
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10

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

30.04.2021, 13:32. Показов 10430. Ответов 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
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,017
Записей в блоге: 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 / 2839 / 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 / 2839 / 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
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,017
Записей в блоге: 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 / 2839 / 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
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,017
Записей в блоге: 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
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,017
Записей в блоге: 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 / 2839 / 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 / 2839 / 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
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,017
Записей в блоге: 7
03.05.2021, 17:54
Цитата Сообщение от Замабувараев Посмотреть сообщение
ведь можно было просто вызвать продекларированную функцию.
И тогда в винде ниже 7, программа не запуститься, т. е. нет совместимости. Не разу не писали программу которая могла бы использовать функции современных ОС и работать в предыдущих ОС без этих функций?
0
 Аватар для Pro_grammer
6807 / 2839 / 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
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru