Pro Tip: Don't do this. I did this with my app and got CONSTANT support emails about my app's license keys not working because the user updated their BIOS. It happened quite a lot (well, about 10 emails per month from different users) and just became too much hassle to deal with. I don't know if they were just saying it to get extra free keys or not (likely), so I switched to an email-based key (using their PayPal email) and left it at that. That way the key still works if their BIOS is "upgraded", and they're less likely to share their key because spammers will get their valid email address. It also removed the work at my end to send out new keys every month.
Also, calling WMIC in your app is a trigger for anti-virus apps and can give it a false-positive. Personal experience.
BarryG wrote: Mon Oct 14, 2024 8:54 am
Pro Tip: Don't do this. I did this with my app and got CONSTANT support emails about my app's license keys not working because the user updated their BIOS. It happened quite a lot (well, about 10 emails per month from different users) and just became too much hassle to deal with. I don't know if they were just saying it to get extra free keys or not (likely), so I switched to an email-based key (using their PayPal email) and left it at that. That way the key still works if their BIOS is "upgraded", and they're less likely to share their key because spammers will get their valid email address. It also removed the work at my end to send out new keys every month.
Also, calling WMIC in your app is a trigger for anti-virus apps and can give it a false-positive. Personal experience.
Hello Barry, thanks for comments and help. Right is not the best practic to protect, i think DriveGUID combined with another unique ID is better
Iftranslation=Error: reply="Sorry, Im Spanish": Endif
This is also not a safe way to do it. Calling an external command with no absolute path means that you could simply write your own `wmic` command, put it in the working directory and it will return whatever you want it to return.
Better use an API for that and if you need to load it dynamically, use absolute paths.
And yes, I know that someone could replace `wmic` in system folders too but that's at least a bit less likely.
The english grammar is freeware, you can use it freely - But it's not Open Source, i.e. you can not change it or publish it in altered way.
WMIC is deprecated as of Windows 10, version 21H1; and as of the 21H1 semi-annual channel release of Windows Server. This utility is superseded by Windows PowerShell for WMI; see Chapter 7 - Working with WMI. This deprecation applies only to the WMIC utility. Windows Management Instrumentation (WMI) itself is not affected. Also see Windows 10 features we're no longer developing.
But as you can see the serial and uuid numbers are not accessible without becoming root. And you can see the difference between `board_serial` and `product_serial`. The latter also shows "To be filled by O.E.M." on my PC because I built it by myself and no OEM was involved in any way. But `board_serial` contains the correct serial number of my mainboard.
The english grammar is freeware, you can use it freely - But it's not Open Source, i.e. you can not change it or publish it in altered way.
Oreans Code Virtualizer supports PB across Windows, Linux, and MacOS. Put a server license check in it with a embedded x.509 for TLS and a xor cipher in the VM incase they hook calls to TLS buffers. An attacker can't just patch some jumps or intercept network calls to crack your product..
Even this will be defeated the second your product gets an audience, though.. You'd need something like Intel SGX across all CPUs to actually keep someone from opening up a binary and reverse engineering important parts of it.. This is why you can't play UHD blueray on non-SGX processors; AACS 2.x code isn't decrypted till in a Intel SGX enclave loaded by a licensed player software.. AMD has a SGX equivalent called Presidio, but nobody uses it for anything..