是否可以将.NET 2.0二进制文件(* .exe)反编译为某种可读代码?或者如果没有,只需从中提取一些信息(例如方法名称,调试信息等)?
答案 0 :(得分:15)
答案 1 :(得分:3)
将exe放入ILDASM或Dot Net Reflector应该可以解决问题。
答案 2 :(得分:1)
搜索Lutz Roeder,你会发现:
答案 3 :(得分:1)
我将引用自己的question earlier today:
你永远无法恢复精确 因为没有相同的来源 有关保存的元数据 编译代码。
但是你可以从中重新创建代码 汇编代码。
如果你是的话,请查看这本书 对这些事情感兴趣:逆转: 逆向工程的秘密。
修改
有些编译器 - 101,如果你是的话 用另一个单词定义编译器 而不像“编译器”那样技术性, 它会是什么?
答案:翻译
编译器翻译语法/ 你写的另一个短语 C编译器转换为的语言 装配甚至机器代码。 C#代码 被翻译成IL等等。
你拥有的可执行文件只是一个 翻译原文/ 语法,如果你想“逆转它” 因此,“将其翻译回来” 很可能没有得到相同的结构 正如你在开始时那样。
更真实的例子是if 你从英语翻译成德语 从德语回到英语, 最大的信号结构 可能是不同的,其他的话可能会 被使用但意义,背景, 很可能没有改变。
编译器/同样如此 翻译如果你从C到ASM, 逻辑是一样的,它只是一个 不同的阅读方式(和 当然是优化的。)
关于C#,你已经获得了许多很棒的工具,比如Reflector。但是,如果代码被混淆,您将无法阅读它。
答案 4 :(得分:0)
是。首先,所有.net库都有类型信息的清单。可以使用反射或使用反射器等工具来查询问题。查看您需要查看的类的system.reflection命名空间。