Shai UI
Shai UI

Reputation: 51908

Can I obfuscate a compiled .NET executable/assembly?

So I'm trying to obfuscate my program AFTER it's been compiled. I'm pretty sure that's how you do it (?)

I'm using a pretty popular freeware called EazFuscator which has a nice little command line utility.

So if I go:

Eazfuscator.NET MyProgram.exe

it'll obfuscate it successfully, and when it's done, I'll try to run my program and it crashes! (gives me some runtime exception)

Another thing I tried instead is to obfuscate one of the DLL's my program uses:

EazFuscator.NET SomeDLLMyProgramUses.dll

it'll obfuscate it successfully, but again, when I run my program crashes...

I'm wondering first off, regardless of this EazFuscator program, is it possible to obfuscate .DLL and .EXE files? and is it usually NOT supposed to break them?

Note: I do have some reflection going on in my program, and maybe that's whats causing the problem.. but I'm not 100% sure.

Upvotes: 1

Views: 6823

Answers (6)

Princi Goel
Princi Goel

Reputation: 1

Yes, we need to obfuscate our assembly after compilation. Assembly is built again by obfuscator. So we don't need to worry about compilation and building it.

I am using FxProtect which is free obfuscator. Advance Professional version is also available but it is not free. You can try it...

.Net Obfuscator

Upvotes: 2

Jon Cage
Jon Cage

Reputation: 37448

Whether or not your code is broken by obfuscation depends upon what you do in your code. If you're using reflection in there that will almost certainly be the root cause.

CLISecure has worked well for me in the past (even on mixed-mode assemblies) ...but we don't use any reflection in our codebase.

Upvotes: 0

Rohan West
Rohan West

Reputation: 9298

If you are using reflection then the obfuscation tool will probably break you code. During obfuscation type names are usually changed, therefore your reflection may not work as expected, especially if you are referring to a type by name. Use a tool like reflector to have a look at you obfuscated assembly, you will be able to see whats going on.

Upvotes: 2

Arun
Arun

Reputation: 2523

Most of the Obfuscation tools have settings that allow you to manage the level of obfuscation - like type names, method names, strings and so on. It is possible that your level of obfuscation has resulted in an IL code that is broken due to these changes that the tool performed on your original IL code. Check the settings available and attempt to avoid a few of those settings.

Upvotes: 4

i_am_jorf
i_am_jorf

Reputation: 54600

There is Dotfuscator community edition, which you could try.

In general obfuscators are not supposed to break the apps they obfuscate. You should contact the manufacturer if you can reproduce the issue.

Upvotes: 6

Perception
Perception

Reputation: 80593

No, you do not typically obsfucate your executable program. I'm sure you've been thinking about it since you posted your question and can imagine why.

Run the obfuscation on your source code then compile that into deliverable.

Upvotes: 0

Related Questions