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.
我正在使用一个非常流行的免费软件EazFuscator,它有一个很好的命令行实用程序。
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:
我尝试的另一件事是混淆DLL的一个我的程序使用:
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?
首先我想知道,不管EazFuscator程序是什么,是否可以混淆.DLL和.EXE文件?它通常不应该破坏它们吗?
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.
注意:我的程序中确实有一些反映,也许这就是问题的原因。但我不能百分之百确定。
6 个解决方案
#1
6
There is Dotfuscator community edition, which you could try.
有Dotfuscator community edition,您可以尝试一下。
In general obfuscators are not supposed to break the apps they obfuscate. You should contact the manufacturer if you can reproduce the issue.
一般来说,obfuscators不应该破坏他们混淆的应用程序。如果你可以重现这个问题,你应该联系制造商。
#2
4
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.
大多数模糊化工具都有允许您管理模糊化级别的设置——比如类型名、方法名、字符串等等。由于工具对原始IL代码所做的这些更改,您的混淆级别可能导致IL代码被破坏。检查可用的设置,并尝试避免其中的一些设置。
#3
2
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.
如果您正在使用反射,那么混淆工具可能会破坏您的代码。在模糊化类型名称期间,通常会更改它们,因此您的反射可能不会像预期的那样工作,尤其是当您按名称引用类型时。使用像reflector这样的工具来查看混淆的程序集,你就可以看到发生了什么。
#4
2
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...
我正在使用FxProtect,它是免费的混淆器。高级专业版也有,但不是免费的。你可以试一试……
net模糊处理
#5
0
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.
运行对源代码的混淆,然后将其编译成可交付的。
#6
0
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.
CLISecure在过去很适合我(甚至在混合模式的程序集)…但是我们不会在代码库中使用任何反射。
#1
6
There is Dotfuscator community edition, which you could try.
有Dotfuscator community edition,您可以尝试一下。
In general obfuscators are not supposed to break the apps they obfuscate. You should contact the manufacturer if you can reproduce the issue.
一般来说,obfuscators不应该破坏他们混淆的应用程序。如果你可以重现这个问题,你应该联系制造商。
#2
4
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.
大多数模糊化工具都有允许您管理模糊化级别的设置——比如类型名、方法名、字符串等等。由于工具对原始IL代码所做的这些更改,您的混淆级别可能导致IL代码被破坏。检查可用的设置,并尝试避免其中的一些设置。
#3
2
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.
如果您正在使用反射,那么混淆工具可能会破坏您的代码。在模糊化类型名称期间,通常会更改它们,因此您的反射可能不会像预期的那样工作,尤其是当您按名称引用类型时。使用像reflector这样的工具来查看混淆的程序集,你就可以看到发生了什么。
#4
2
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...
我正在使用FxProtect,它是免费的混淆器。高级专业版也有,但不是免费的。你可以试一试……
net模糊处理
#5
0
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.
运行对源代码的混淆,然后将其编译成可交付的。
#6
0
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.
CLISecure在过去很适合我(甚至在混合模式的程序集)…但是我们不会在代码库中使用任何反射。