C# (MSIL) 到 native X86 代码?

标签 c# assembly compilation x86 cil

首先我想说我的目标是将 MSIL 转换为 native X86 代码。我对我的程序集仍然需要安装 .net 框架感到满意。 NGEN 不是我想要的,因为您仍然需要原始程序集。

我遇到了 ilasm ,我想知道的是这就是我想要的,这会生成纯汇编代码吗?

我看过其他项目,如 mono(不支持我的应用程序使用的一些关键功能)和 .net 链接器,但它们很简单,只是用 .net 框架制作一个 EXE,这不是我想要的.

到目前为止,任何研究都得出了……你做不到。我真的不确定为什么 JIT 在加载 MSIL 程序集时会这样做。我有自己的理由想要这个,所以我想我的问题归结为这个。

  1. 我发布的链接是否有帮助?

  2. 有什么东西可以将 MSIL 转换为 x86 程序集吗?

最佳答案

有各种第三方代码保护包可用,它们通过加密隐藏 IL,并使用特殊的引导加载程序对其进行打包,该引导加载程序仅在运行时解包。如果您担心代码的反汇编,这可能是一个选择,尽管这些第三方软件包中的大多数也已经被破解(不幸的是,这在某种程度上是不可避免的。)假设这是您的基本目标,简单的混淆最终可能同样有效.

与“预编译”IL 相关的主要挑战之一是您最终会在 native 代码中包含固定地址引用。当加载 native 代码以在 CLR 下执行时,这些又需要“重新基于”。这意味着您需要的不仅仅是编译的逻辑;您还需要所有必要的引用上下文信息,以便在加载代码时对固定引用进行 rebase 。它不仅仅是缓存代码。

关于C# (MSIL) 到 native X86 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12960847/

相关文章:

C# 在 JSON 对象中序列化 JSON 对象

linux - 汇编 - 为什么 strtol 破坏 %rcx 寄存器?

c - 是什么导致了短 C 代码中的段错误?

hyperlink - Angular 指令编译顺序

c# - 反序列化 XML 文件而不将其全部加载到内存中

c# - 在 C# 中从 List<T> 中选择 N 个随机元素的算法

c# - .Net 中的并行性是否可以接管 CPU 并可能拒绝为其他进程提供服务?

使用 gcc 编译 PowerPC 二进制文件并限制可用寄存器

c - get_sp() 函数如何工作?

c++ - 在虚拟机上使用 OpenCV 重建 C++ 程序