Home Upgrade Search Memberlist Extras Hacker Tools Award Goals Help Wiki Contact

.NET 

Best way to make executed app harder to crack?

Hey guys,

Currently I got a launcher that is being used to download the programs from the server.

How could I make the executed app require data from my main application without writing stuff to hard drive or smth like that (easilly tampered).
(Dec 26, 2017 12:42 AM)zonne Wrote:  Hey guys,

Currently I got a launcher that is being used to download the programs from the server.

How could I make the executed app require data from my main application without writing stuff to hard drive or smth like that (easilly tampered).

Launcher to upload something encrypted to your site, app to download and decrypt it and do some checks.

There are a loads of ways to do this and everyone will have different opinions on it.

Thanks
[Image: 8Wj7xYL.gif]
Signature Created by Gσđfαtђα
(Dec 26, 2017 12:42 AM)zonne Wrote:  Hey guys,

Currently I got a launcher that is being used to download the programs from the server.

How could I make the executed app require data from my main application without writing stuff to hard drive or smth like that (easilly tampered).

Authenticate. Be sure the one that will access those data is the one that you allowed to.
[Image: signaturetwo.png]
Implement server authentication which uses SSL. Don't rely on data from the server even if it's encrypted data, encrypt the network traffic.
Getting Started: C/C++
[C/C++/.NET/x86 ASM - Automation Programmer]
(Dec 27, 2017 09:01 AM)0xDEAD10CC Wrote:  Implement server authentication which uses SSL. Don't rely on data from the server even if it's encrypted data, encrypt the network traffic.

This. Use asymmetric encryption to encrypt the traffic.

And if you want to protect DLLs you can load them (encrypted) from a server into memory and run them from there. To protect executables you need to obfuscate them, or move code server sided.
dont waste your time in memory you have all clear and can be easy dumped
[Image: bitcoin.png] Be Nice For Once 15hVUVz7xA4kazHdk2BuErENGCskVwjYXP
(Dec 27, 2017 03:17 PM)HFDone Wrote:  dont waste your time in memory you have all clear and can be easy dumped

Even more easily than from a file. It is about making it harder, not impossible. By your logic you shouldn't do anything at all since it will get cracked eventually.
(Dec 27, 2017 03:17 PM)HFDone Wrote:  dont waste your time in memory you have all clear and can be easy dumped

How about obfuscation? A private one for a private individual so even though it was dumped, it will make the re take much longer just to read a function?
[Image: signaturetwo.png]
(Dec 27, 2017 03:17 PM)HFDone Wrote:  dont waste your time in memory you have all clear and can be easy dumped

Not if you are loading it as an assembly with reflection. There are ways to make sure the original bytes are never exposed in memory.

Have a look at AppDomain.SetData/GetData.
You can store things in one assembly and retrieve them from another.
https://msdn.microsoft.com/en-us/library....110).aspx
https://msdn.microsoft.com/en-us/library....110).aspx
[Image: PVoDiqS.png]
(Dec 27, 2017 06:39 PM)Cecilia Wrote:  Not if you are loading it as an assembly with reflection. There are ways to make sure the original bytes are never exposed in memory.

Have a look at AppDomain.SetData/GetData.
You can store things in one assembly and retrieve them from another.
https://msdn.microsoft.com/en-us/library....110).aspx
https://msdn.microsoft.com/en-us/library....110).aspx

You can always dump memory or even just decompile the assemblies and grab what the retrieved data is supposed to be...



.NET Security is not witchcraft, it's really simple : Pattern, Attacker, Server



If you rely only on the simple [Computer-Software] pattern you loose total control of your security system : all the data is


on the customer's computer at the same time. Even the data we might not want him to own, such as algorithms, decoding

keys, credentials and other sensitive data. 



The attacker needs to change the code of your program in accordance with what he understand about how to crack your application.

The attacker will inspect login routines, encryption keys, messages in the file and re-code your application so the login process will

be voided : remove the necessity of a login on a software and all it's data is freely accessible, to anyone, i.e it makes it cracked.


The key is to make our basic pattern more complexe, by adding parameters to the schema so the attacker will have to work a lot

more in order to access the data. To do this we are gonna need a [computer-software-server]pattern, a third-part place that will 

run Windows and that will be able to let us run our licencing process in a locked room not accessible for attackers. A black box. 


Concretely what you will do is to put sensitive code on the server such as strings containing decoding keys, static algorithms...

What you can do is also to use the server to store some needed informations for your file to run, so you can compare its MD5,

and use it's MD5 as a decoding keys. The goal is to use the server a lot, to make the server supports the file and to make the 

file broken without the server.
Assert failure(PID 10704 [0x000029d0], Thread: 10960 [0x2ad0]): pBuffer != NULL
(Dec 27, 2017 08:48 PM)Aristocles Wrote:  
You can always dump memory or even just decompile the assemblies and grab what the retrieved data is supposed to be...



.NET Security is not witchcraft, it's really simple : Pattern, Attacker, Server



If you rely only on the simple [Computer-Software] pattern you loose total control of your security system : all the data is


on the customer's computer at the same time. Even the data we might not want him to own, such as algorithms, decoding

keys, credentials and other sensitive data. 



The attacker needs to change the code of your program in accordance with what he understand about how to crack your application.

The attacker will inspect login routines, encryption keys, messages in the file and re-code your application so the login process will

be voided : remove the necessity of a login on a software and all it's data is freely accessible, to anyone, i.e it makes it cracked.


The key is to make our basic pattern more complexe, by adding parameters to the schema so the attacker will have to work a lot

more in order to access the data. To do this we are gonna need a [computer-software-server]pattern, a third-part place that will 

run Windows and that will be able to let us run our licencing process in a locked room not accessible for attackers. A black box. 


Concretely what you will do is to put sensitive code on the server such as strings containing decoding keys, static algorithms...

What you can do is also to use the server to store some needed informations for your file to run, so you can compare its MD5,

and use it's MD5 as a decoding keys. The goal is to use the server a lot, to make the server supports the file and to make the 

file broken without the server.

https://msdn.microsoft.com/en-us/library....110).aspx

I certainly agree with the rest.
You can protect the bytes and then wipe the pe headers on the loaded module.
Although yeah, perfectly possible to simply decompile it and grab the shit.
[Image: PVoDiqS.png]


Possibly Related Threads...
Thread / Author Replies Views Last Post
[Python] by sid123Jun 20, 2022 11:31 AM 3 171 Jun 20, 2022 11:31 AM
Last Post: dinosaur770
[C#] by RedirectMeSep 14, 2021 08:49 AM 8 290 Sep 14, 2021 08:49 AM
Last Post: RedirectMe
[C#] by PitbullT0rJun 15, 2021 03:39 AM 5 312 Jun 15, 2021 03:39 AM
Last Post: Mistercoenkel