代码之家  ›  专栏  ›  技术社区  ›  Fabio Milheiro

是否可以将dll转换为源代码?

  •  5
  • Fabio Milheiro  · 技术社区  · 14 年前

    是否可以将DLL库转换回源代码?

    不是说我想这样做,但我需要将我正在编写的软件的一些非关键部分外包出去,但我不想让其他人复制到目前为止我拥有的一切。

    各个dll中的代码不是整个代码。我设法只在库中包含必要的代码,但我仍然不希望其他人复制我的代码。

    我应该担心吗?

    3 回复  |  直到 14 年前
        1
  •  8
  •   Oded    14 年前

    可能吗?对。

    容易的?这要看情况而定。

    如果您已经在.NET中编写了DLL, decompilation 是一个快照,使用类似 Reflector ,除非你有 obfuscated 您的代码。

    即使这不是.NET代码,它仍然是可能的,尽管困难得多。如果你用现有的工具混淆了你的代码,你会让事情变得更加困难。

    一般来说,如果你把你的代码(编译或不编译)给某人,他们 能够从程序集/字节码中反编译它,即使它是模糊的。

    这并不总是容易的,而且通常会付出太多的努力。这真的取决于你有多偏执,你的代码对第三方有多重要。

    无法抵御真正坚定的攻击者。他们可能要花上几年时间,但如果他们真的下定决心,他们会解决的。

        2
  •  5
  •   Mark Byers    14 年前

    调用从编译代码中恢复源代码的过程 decompilation 而且,根据程序所用的语言,可以取得更好或更差的结果。

    为了保护自己免受反编译,可以使用 obfuscator 它通过修改二进制文件使其更难反编译来工作。模糊器使用的技术的一个例子是用无意义的名称(例如,a001、a002,…)替换二进制文件中可见的成员的名称,这样分解后的代码就没有意义了。有些人甚至为这些名称使用关键字(例如for,while,…),这样一个幼稚的反编译程序将产生甚至无法编译的代码。它们还可以使用其他技术,如加密字符串,以便在查看二进制文件时不可读。

    模糊并不是一种完美的防御。一个才华横溢、意志坚定的对手可能能够恢复一些与原始源代码相当相似的东西,即使你使用了模糊处理。

        3
  •  2
  •   Daniel MoÅ¡mondor    14 年前

    试着认为你的代码可以被任何人重写,因为一旦你开始接受你的项目的承包商,这个想法就会公开。

    你有什么,他没有:知道怎么做生意。如果你担心他会这样做,向他求婚,你不会有任何疑问。

    所以我建议你不要担心这里的技术问题。