I am actually working for the side of software protection. But in order to properly protect my source code ( be it .Net or C++), I would need to understand what is achievable ( and not achievable) from hacker's point of view .I can protect/obfuscate/encrypt/virtualize my code all the way I want, but when the source code is loaded into the memory, it will have to be unprotected in order to run. So at this point of time, can hacker dump the source code out from the memory, and thus recover my source code in full, unadulterated fashion? If yes, how this can be done? Using what tools?Edit: from my finding, it seems that this is doable, and there are protection tools that can prevent this, such as Agile.Net:Method Level Code Encryption - Encrypts all the MSIL code and keeps it  in a secure storage. When the assembly is loaded Agile.NET binds to  the .NET runtime engine and manages decrypting the MSIL on a per  method basis. Agile.NET creates a runtime environment that executes  the original MSIL code by decrypting one method at a time, this  important virtue minimizes the exposure of MSIL code in memory thus  prevents dumping the code from physical memory.But I have no idea how, can anyone shed some lights on this?
Is it possible ( or how) to dump source code/machine code from memory?
c++;memory;.net