Получение информации о серийном номере

Issues related to VMProtect
ROPOX
Posts: 5
Joined: Mon May 29, 2017 5:51 am

Получение информации о серийном номере

Postby ROPOX » Mon May 29, 2017 5:59 am

Итак вопрос в следующем, мне необходимо получить информацию о серийном номере своего проекта так, как это делает VMProtect когда импортируешь серийник в проект, но средствами своего приложения, может подскажете куда смотреть?

Admin
Site Admin
Posts: 1259
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Получение информации о серийном номере

Postby Admin » Mon May 29, 2017 6:46 am

VMProtectSetSerialNumber + VMProtectGetSerialNumberData

ROPOX
Posts: 5
Joined: Mon May 29, 2017 5:51 am

Re: Получение информации о серийном номере

Postby ROPOX » Mon May 29, 2017 8:42 am

Bad HWID и инфу не выдает, так как HWID привязан к другому компу и серийник изначально не проходит проверку на моем компе.
Upd:
Версия компилятора VMP 2.13.5

Admin
Site Admin
Posts: 1259
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Получение информации о серийном номере

Postby Admin » Mon May 29, 2017 10:08 am

Вы что хотите сделать (какую решаете задачу)?

ROPOX
Posts: 5
Joined: Mon May 29, 2017 5:51 am

Re: Получение информации о серийном номере

Postby ROPOX » Mon May 29, 2017 1:28 pm

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

Admin
Site Admin
Posts: 1259
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Получение информации о серийном номере

Postby Admin » Tue May 30, 2017 5:18 am

Если честно, то я не могу понять в чем проблема. Есть старая БД, есть новая БД - вы не знаете как залить данные из старой БД в новую?

ROPOX
Posts: 5
Joined: Mon May 29, 2017 5:51 am

Re: Получение информации о серийном номере

Postby ROPOX » Wed May 31, 2017 10:56 am

Не, я то знаю как сделать, но гораздо проще получить всю инфу прям из серийника, метод выше работает только при условии отсутствия привязки к железу.
[offtop]
Да и еще хотелось бы иметь выбор, к чему вязать, а еще лучше вместе с этим сделать возможным подключение своих алгоритмов генерации HWID.[/offtop]

Admin
Site Admin
Posts: 1259
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: Получение информации о серийном номере

Postby Admin » Wed May 31, 2017 2:00 pm

Скрипт на LUA, который показывает данные из серийника:

Code: Select all

-- parse key file
local key_found = false
local key = nil
local command_line = vmprotect.commandLine()
for _, arg in ipairs(command_line) do
   if (key_found == true) and (not key) then
      local stream = io.open(arg, "r")
      if not stream then
         error("key file not found")
      end
      key = stream:read("*all")
      stream:close()
   end
   if (arg == "-key") then
      key_found = true
   end
end
if key then
   local licenses = vmprotect.core():licenses()
   local license = licenses:itemBySerialNumber(key)
   if not license then
      license = licenses:importLicense(key)
   end
   if not license then
      error("Status: Invalid")
   end

   local info = license:info()
   if not info then
      error("Status: Invalid")
   end
   print("Customer Name: ", info:customerName())
   print("Customer Email: ", info:customerEmail())
   if license:blocked() then
      error("Status: Blocked")
   end
   if bit32.btest(info:flags(), 4) then
      local dt = info:expireDate("%Y%m%d")
      print("Expire Date: ", dt)
      if os.date("%Y%m%d") > dt then
         error("Status: Expired")
      end
   end
   if bit32.btest(info:flags(), 8) then
      local max_build_date = info:maxBuildDate("%Y%m%d")
      print("Max Build Date: ", max_build_date)
      if os.date("%Y%m%d") > max_build_date then
         error("Status: Expired")
      end
   end
   print("Status:", "Success")
end


Запуск протектора:

Code: Select all

VMProtectCon "" -key FILE_WITH_SERIAL_NUMBER -pf FILE_WITH_LICENSING_PARAMETERS


По поводу собственных алгоритмов генерации HWID - вы можете уже сейчас использовать поле UserData под ваш собственный HWID и проверять его после VMProtectSetSerialNumber:

Code: Select all

if (VMProtectSetSerialNumber(serial) == SERIAL_STATE_SUCCESS) {
   bool is_valid_hwid = false;
   VMProtectSerialNumberData sd = {0};
   if VMProtectGetSerialNumberData(&sd, sizeof(sd)) {
      // check your HWID here
   }
   if (!is_valid_hwid)
      VMProtectSetSerialNumber(NULL); // clear serial number inside VMProtect
}

ROPOX
Posts: 5
Joined: Mon May 29, 2017 5:51 am

Re: Получение информации о серийном номере

Postby ROPOX » Thu Jun 01, 2017 1:56 am

Ну вот, попробую, если будут вопросы отпишусь.
Спасибо!


Return to “Technical questions”

Who is online

Users browsing this forum: No registered users and 1 guest