VMProtectGetCurrentHWID - на разных версиях софта разный HWID.

Здравствуйте.
У меня следующая проблема.
У меня долгое время была лицензия протектора версии “2.13”.

  • Был продукт, который не один год пользовался привязкой на версии “2.13”.
  • Я обновил продукт и перешел на протектор версии “3.0.9”.

К моему сожалению, сегодня ночью при переходе 80% моих игроков не смогло войти в игру, так как HWID на версии “2.13” и на версии “3.0.9” - отличаются.

Пример: (Один и тот же компьютер; Я осуществляю проверку только по: CPU/HOST/HDD)

  1. “2.13” - zHlXsykzzzYDOFDEknQ2tkanjoU=
    – [1] CPU - B35779CC
    – [2] HOST - 36CF3328
    – [3] HDD - C4503800
  2. “3.0.9” - 5BDK2SkzzzYPIjuVknQ2tkanjoU=
    – [1] CPU - D9CA10E4
    – [2] HOST - 36CF3328
    – [3] HDD - 953B220C


    P.S. → Как видно из данных, CPU и HDD отображаются по разному на одном и том же компьютере на разных версиях протектора…

Вопрос: Как можно преобразовать HWID с версии “2.13” на версию “3.0.9”?

P.S. → Проблема очень сильно стоит ребром, так как около 5000 клиентов не могут зайти в игру.

  • А снять привязку по железу не могу, так как моментально взломают игроков…

P.S. → Мне нужен какой-то алгоритм конвертации HWID из старой версии в новую.

  • Прощу помощи, так как из-за этого все планы перехода летят к черту…

“zHlXsykzzzYDOFDEknQ2tkanjoU=” и “5BDK2SkzzzYPIjuVknQ2tkanjoU=” - это не серийные номера, а HWID, которые вы получаете через VMProtectGetCurrentHWID. Осталось понять как при этом используется VMProtectSetSerialNumber?

Здравствуйте.
Нет, пользоваться Api я умею.
Извините, была ночь и я по усталости и нервности перепутал названия функций…
Речь идёт о функции: “VMProtectGetCurrentHWID”.

Описываю ситуацию:

  1. Клиент на своём компьютере запускает лаунчер.exe(Программу).
  2. Он подключается к серверу авторизации через сокеты накрытые AES-256 шифрованием.
  3. Во время подключения он передаёт следующие данные: Login, Password, IP, HWID.
  • Функция: “VMProtectGetCurrentHWID”;
  1. На стороне сервера я должен сравнить его текущий HWID с тем HWID, который сохранен в базе.
  2. Если HWID’ы совпадают - то пропускаю его дальше.
  • Система фильтров подключения по HWID.
  • Сверяю HWID’ы я не как строки, а разбиваю на части и сравниваю только CPU/HOST/HDD. (Ethernet меня не интересует)

P.S. → Проблема заключается в том, что если взять версию “2.13” и “3.0.9”, запустить на одном и том же компьютере - то HWID’ы будут разные. (VMProtectGetCurrentHWID)

  • Причем именно по составной базе!
  • Причем смена значение происходит только в блоках CPU и HDD!

Пример: (Один и тот же компьютер; Я осуществляю проверку только по: CPU/HOST/HDD)

  1. “2.13” - zHlXsykzzzYDOFDEknQ2tkanjoU=
    – [1] CPU - B35779CC
    – [2] HOST - 36CF3328
    – [3] HDD - C4503800
  2. “3.0.9” - 5BDK2SkzzzYPIjuVknQ2tkanjoU=
    – [1] CPU - D9CA10E4
    – [2] HOST - 36CF3328
    – [3] HDD - 953B220C

    \

Вопрос: Как можно сделать конвертацию HWID с версии “2.13” на версию “3.0.9”?

  • XOR или + и ещё какие-то операции…

Проблема в том, что вы стали использовать недокументированную структуру HWID в своих собственных целях. Если бы вы использовали HWID по его прямому предназначению при генерации конечных серийников, то у вас бы не возникло такой проблемы.

В любом случае вы не сможете “сконвертировать” новые HWID в старый формат, т.к. используются совершенно разные алгоритмы получения самих идентификаторов.