【发布时间】:2011-01-21 06:05:27
【问题描述】:
当我启动一个 .NET exe 时会发生什么?我知道 C# 被编译为 IL 代码,我认为生成的 exe 文件只是一个启动器,它启动运行时并将 IL 代码传递给它。但是怎么做?过程有多复杂?
IL 代码嵌入在 exe 中。我认为它可以从内存中执行而无需将其写入磁盘,而普通的exe则不是(好的,是的,但它非常复杂)。
我的最终目标是提取 IL 代码并编写我自己的加密启动器,以防止脚本小子在 Reflector 中打开我的代码并轻松窃取我的所有课程。好吧,我不能完全阻止逆向工程。如果他们能够检查内存并捕捉到我将纯 IL 传递给运行时的那一刻,那么它是否是 .net exe 并不重要,是吗?我知道有几种混淆器工具,但我不想弄乱 IL 代码本身。
编辑:所以似乎不值得尝试我想要的。他们无论如何都会破解它......所以我会寻找一个混淆工具。是的,我的朋友也说过,将所有符号重命名为无意义的名称就足够了。而且逆向工程毕竟不会那么容易。
【问题讨论】:
-
请参阅 MSDN,了解具体的
CorBindToRuntimeEx函数和一般的 CLR 非托管 API。 -
只是好奇:您是否考虑过使用混淆器来阻止逆向工程?它并不完美……但它几乎是开箱即用的
-
@David:.NET 未被解释。你从哪里得到那个的想法? IL 代码被即时编译成机器语言,并针对运行它的机器进行了优化。这与解释完全相反!
-
我真的很想看到一些这种惊人的超级秘密代码,很多人认为它非常重要,不能被窥探。甚至 .NET Framework 本身也基本上是完全开放的。这里一定有一些令人兴奋的东西。
-
@JDMX:当然,他们得到了完整的源代码……没有文档、变量名或任何其他有助于真正理解翻译后的 IL 的东西。如果这就是某人敲诈你的全部,我不得不相信逆向工程几乎同样容易。
标签: c# .net reverse-engineering managed cil