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

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

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

Post by ROPOX »

Итак вопрос в следующем, мне необходимо получить информацию о серийном номере своего проекта так, как это делает VMProtect когда импортируешь серийник в проект, но средствами своего приложения, может подскажете куда смотреть?
Admin
Site Admin
Posts: 2566
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post by Admin »

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

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

Post by ROPOX »

Bad HWID и инфу не выдает, так как HWID привязан к другому компу и серийник изначально не проходит проверку на моем компе.
Upd:
Версия компилятора VMP 2.13.5
Admin
Site Admin
Posts: 2566
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post by Admin »

Вы что хотите сделать (какую решаете задачу)?
ROPOX
Posts: 5
Joined: Mon May 29, 2017 5:51 am

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

Post by ROPOX »

Переезжаю на новую платформу, что бы в ручную не перебивать в новую БД пользователей, мне необходимо получить имеющийся у пользователя ключ, считать с него информацию, занести в новую БД на стороне сервера.
Admin
Site Admin
Posts: 2566
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post by Admin »

Если честно, то я не могу понять в чем проблема. Есть старая БД, есть новая БД - вы не знаете как залить данные из старой БД в новую?
ROPOX
Posts: 5
Joined: Mon May 29, 2017 5:51 am

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

Post by ROPOX »

Не, я то знаю как сделать, но гораздо проще получить всю инфу прям из серийника, метод выше работает только при условии отсутствия привязки к железу.
[offtop]
Да и еще хотелось бы иметь выбор, к чему вязать, а еще лучше вместе с этим сделать возможным подключение своих алгоритмов генерации HWID.[/offtop]
Admin
Site Admin
Posts: 2566
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

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

Post by Admin »

Скрипт на 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: Получение информации о серийном номере

Post by ROPOX »

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