Search code examples
obfuscationdecompilingdeobfuscationsmartassemblyde4dot

Can Smart Assembly 7+ strings be deobfuscated?


I am planning on using Smart Assembly 7+ for obfuscating my .NET C# library. But when I look through some forums I came across that there are even programs to deobfuscate DLLs protected with Smart Assembly, particularly programs like de4dot.

So I tried to deobfuscate my program using de4dot, and I got most of my logic decompiled successfully to my surprise. But thankfully the strings were not decompiled.

They were in the form of Class24.getString_0(5050)

If the strings cannot be decompiled properly by any deobfuscator, then it is enough to protect my core logic. But I am paranoid that maybe I did not use the deobfuscator properly and there are ways to deobfuscate strings even(but I tried running the deobfuscator commands for strings, as stated in the repo wiki).

Basically my question is, can I be certain that strings obfuscated by the SmartAssembly cannot be decompiled by any deobfuscator program in the market.

Also, any good suggestions for obfuscating the .NET libraries are also welcomed.

Thank You All!


Solution

  • In order for your code to run, the computer must understand it. There is no way around that. If the CLR can understand your code, there is no reason that a de-obfuscator cannot understand your code either.

    Plus, computers are much stupider than humans. If a computer can understand your code, then a human definitely can.

    The typical approaches to protecting your code, are:

    • Don't give the customers your code. Run it on your own computer and give them access to it. (That's the "Google approach".)

    • Give the customers a computer that you control 100% with your code pre-installed. (That's the "PlayStation approach".)

    • Don't do business with criminals. Copying your code is illegal pretty much everywhere. Circumventing protections in your code is illegal in several countries, including some of the biggest markets (e.g. the US). Reverse engineering your code may be legal, but only under very strict circumstances. (E.g. in the EU, reverse engineering is only legal for purposes of interoperability, and only if you refuse to make the information required for interoperability available under reasonable and non-discriminatory terms.)

    • Offer your customers extra services that your competitors, even if they were stealing your code, don't or cannot offer. For a lot of companies, the mere fact of "having someone they can sue" is already reason enough to buy the original software from the original vendor. Criminals are lazy, that's why they are criminals. They will never understand the problem domain as deeply as you do, simply because they are too lazy to put in the work, so they will never be able to provide enhancements, consulting, support, or bug fixes as well, as fast, and as precise as you can.