How to make the application only work on 64 bit systems.
-
how do I make my application work only for 64 bit systems and cannot work on 32 bit windows systems, I use the MinGW64 setting to create my application.
what do you mean exactly ? AFAIK 32bit Windows don't support 64bit apps anyway. Compatibility only goes the other way 64bit systems can run apps for 32bit architecture.
-
what do you mean exactly ? AFAIK 32bit Windows don't support 64bit apps anyway. Compatibility only goes the other way 64bit systems can run apps for 32bit architecture.
-
@SamiV123 I'll explain a little bit, I just want my application to only work for 64 bit windows systems and not work on 32 bit windows systems, I hope you understand what I mean.
-
@Blackzero
No, we don't know what you mean any better, you are just repeating your question. And did you read @SamiV123's answer anyway, which tells you?@JonB I see 64 bit applications are very difficult to crack or unpack, I want to make it like that, make an application based on 64 bits so that it cannot or make it difficult for crackers to break it, I am studying what exactly is 64 bits whether the application itself only works on a 64 bit system or how, Why do I want to make a system like that because I want to make my own keygen license and use the 64 bit system to make it difficult for crackers, I hope you understand what I mean, because I have only been learning cpp for a few months and understand cpp code but do not fully understand the configuration of software made from cpp and qt, and before that in python.
-
@JonB I see 64 bit applications are very difficult to crack or unpack, I want to make it like that, make an application based on 64 bits so that it cannot or make it difficult for crackers to break it, I am studying what exactly is 64 bits whether the application itself only works on a 64 bit system or how, Why do I want to make a system like that because I want to make my own keygen license and use the 64 bit system to make it difficult for crackers, I hope you understand what I mean, because I have only been learning cpp for a few months and understand cpp code but do not fully understand the configuration of software made from cpp and qt, and before that in python.
@Blackzero You have a 64-bit compiler, you build for 64-bit, done.
-
@JonB I see 64 bit applications are very difficult to crack or unpack, I want to make it like that, make an application based on 64 bits so that it cannot or make it difficult for crackers to break it, I am studying what exactly is 64 bits whether the application itself only works on a 64 bit system or how, Why do I want to make a system like that because I want to make my own keygen license and use the 64 bit system to make it difficult for crackers, I hope you understand what I mean, because I have only been learning cpp for a few months and understand cpp code but do not fully understand the configuration of software made from cpp and qt, and before that in python.
@Blackzero said in How to make the application only work on 64 bit systems.:
64 bit applications are very difficult to crack or unpack
Lol
-
@Blackzero You have a 64-bit compiler, you build for 64-bit, done.
-
Download the pre-compiled Qt version for MinGW with the Qt online installer.
-
64 bit might have a few more instructions than 32 bit (which means crackers need to know a few more instructions), but this is deterring no one from cracking your software.
Usually, somewhere in your software is code to check if the license key is valid (some sort of
if
statement). The easiest way to crack software is to just replace this one single instruction in the executable.One way against that is to sign your software and when started check the signature again to check if the executable has been tampered with (here, you should read up on "reproducible builds"). However, this is also just another
if
statement inside your code and thus can also be cracked in the same way as the key validation.This means that you need to encrypt your software entirely and decrypt it when it needs to be run. Even then, at some point the software sits inside your memory and smart people will still figure out how to tamper with the RAM in that case (there is some technology inside x86 chips called ASLR which makes it harder). Maybe some form of just-in-time decryption (similar to JIT compilers) might help here. And: Never leak your encryption key! Make sure it never stays inside memory and is not visible inside your executable! If people have your key, they can decrypt your software.
I'm just saying: If you don't want your software to be cracked, you have to be smarter than a bunch of crackers together. What you want to do is so complicated that I bet nobody in this forum (myself included) knows how to write such strong protection against cracking. And 64 bit has nothing to do with this. If you really want this kind of protection you would have to buy some commercial product that has all this figured out for you.
-
@JonB I see 64 bit applications are very difficult to crack or unpack, I want to make it like that, make an application based on 64 bits so that it cannot or make it difficult for crackers to break it, I am studying what exactly is 64 bits whether the application itself only works on a 64 bit system or how, Why do I want to make a system like that because I want to make my own keygen license and use the 64 bit system to make it difficult for crackers, I hope you understand what I mean, because I have only been learning cpp for a few months and understand cpp code but do not fully understand the configuration of software made from cpp and qt, and before that in python.
@Blackzero said in How to make the application only work on 64 bit systems.:
I am studying what exactly is 64 bits
Side note:
If your assumption that 64bit apps are more secure comes from the fact that more bits in an encryption process guarantee higher security (which is actually the case), then this is simply wrong.
You can not compare the x86/x64 instruction set with 128b, 256b or whatever length of security key encryption bits and therefore think "my x64 app is safer" (at whatever level). -
64 bit might have a few more instructions than 32 bit (which means crackers need to know a few more instructions), but this is deterring no one from cracking your software.
Usually, somewhere in your software is code to check if the license key is valid (some sort of
if
statement). The easiest way to crack software is to just replace this one single instruction in the executable.One way against that is to sign your software and when started check the signature again to check if the executable has been tampered with (here, you should read up on "reproducible builds"). However, this is also just another
if
statement inside your code and thus can also be cracked in the same way as the key validation.This means that you need to encrypt your software entirely and decrypt it when it needs to be run. Even then, at some point the software sits inside your memory and smart people will still figure out how to tamper with the RAM in that case (there is some technology inside x86 chips called ASLR which makes it harder). Maybe some form of just-in-time decryption (similar to JIT compilers) might help here. And: Never leak your encryption key! Make sure it never stays inside memory and is not visible inside your executable! If people have your key, they can decrypt your software.
I'm just saying: If you don't want your software to be cracked, you have to be smarter than a bunch of crackers together. What you want to do is so complicated that I bet nobody in this forum (myself included) knows how to write such strong protection against cracking. And 64 bit has nothing to do with this. If you really want this kind of protection you would have to buy some commercial product that has all this figured out for you.
@SimonSchroeder Very good post. But how to do the following?
Make sure it never stays inside memory and is not visible inside your executable! If people have your key, they can decrypt your software. -
@SimonSchroeder Very good post. But how to do the following?
Make sure it never stays inside memory and is not visible inside your executable! If people have your key, they can decrypt your software.@JoeCFD I'm no security expert. Because this is so complicated, I suggested in the previous post to just buy a commercial product that has this figured out. The first part I know how to do (in theory): The key should never stay in memory means you need to overwrite the physical bytes in memory right after you have used the key. With the other part I am not sure how to do this exactly. More specifically, I should have written not to expose the key as "plain text" (or possibly rather "plain bytes") in your executable. I remember something like this in the context of the Blu Ray encryption keys. Those were stored plainly in some commercial player software which meant people could steal them for open source software as well. I don't know how to do this correctly. With my limited understanding of security the only thing I could do is to obfuscate all of this as much as possible. But, obfuscation is not security.
-
@JoeCFD I'm no security expert. Because this is so complicated, I suggested in the previous post to just buy a commercial product that has this figured out. The first part I know how to do (in theory): The key should never stay in memory means you need to overwrite the physical bytes in memory right after you have used the key. With the other part I am not sure how to do this exactly. More specifically, I should have written not to expose the key as "plain text" (or possibly rather "plain bytes") in your executable. I remember something like this in the context of the Blu Ray encryption keys. Those were stored plainly in some commercial player software which meant people could steal them for open source software as well. I don't know how to do this correctly. With my limited understanding of security the only thing I could do is to obfuscate all of this as much as possible. But, obfuscation is not security.
@SimonSchroeder Thank you for your explanation. It is tricky to do this.