回答
反射就是这样做的...所以是的,这是可能的,假设你有正确的上下文(解析类型令牌等)。
但是,就像使用Reflector一样,反向工程代码可能与原始代码完全不同,但它具有相同的语义(如果代码生成器中没有错误)。
是的,使用.NET Reflector。
Mono.Cecil能提供一些分析功能:
http://www.mono-project.com/Cecil
不知道是否可以分析纯粹的IL代码。
来自该网站:“简单的英语,与塞西尔,你可以加载现有的管理组件”。所以,需要一个组件。 – Oded 2010-10-17 19:53:01
不知道它这会工作,但ILDASM听起来是正确的:
MSIL反是一个配套工具MSIL汇编程序(Ilasm.exe)。 Ildasm.exe需要一个包含Microsoft中间语言(MSIL)代码的可移植可执行文件(PE),并创建一个适合作为Ilasm.exe输入的文本文件。
请注意文件是一个PE文件的要求,所以对于任何实际操作,这仍然基本上是一个托管程序集。
由于这些指令的低水平,他们不一定会直接对应于高层次的代码 - 甚至反射器不会给你确切的原代码。
您可能需要编写自己的工具才能实现此目的,因为程序集将包含一些可能需要的信息(例如引用的程序集)。
总之,你不能把“一块CIL代码”反编译成高级语言。抛开高级语言,你甚至无法正确反编译它。因为,CIL并不仅仅意味着一堆指令,有些指令还有作为操作数的变量。 Metatokens只是一些对象(类型,方法,字符串等)的整数引用。这些信息存储在程序集中。即使我们忽略了这些信息,也存在另一个问题:异常处理。没有“尝试”和“捕捉”说明(但有最终等)。要确定try-catch/finally块,你需要再次组装。因为这些信息以汇编形式存储为偏移长度对(块边界存储)。
- 1. 逆向工程汇编代码
- 2. 逆向工程汇编代码到C
- 3. 如何进行逆向工程算法?
- 4. 如何对这里使用的编码/解码方法进行逆向工程?
- 5. 逆向工程的某些可嵌入代码的可行性
- 6. 针对java的逆向工程工具
- 7. 逆向工程
- 8. 无法使用Hibernate对java类进行逆向工程更改
- 9. 逆向工程日期到一些编码的数字
- 10. 对Google SVG代码进行反向工程
- 11. Visual Basic工具(UML代码或逆向工程)
- 12. 逆向工程一个字符串掩码/模糊函数
- 13. 逆向工程ORM
- 14. 逆向工程C++
- 15. 逆向工程VaultRemoveItem
- 16. @SequenceGenerator - allocationSize,使用Eclipse进行逆向工程Hibernate工具
- 17. 带休眠逆向工程的类代码
- 18. 从c代码到顺序图的逆向工程
- 19. UML中使用ecplise的逆向工程代码
- 20. 使用弹簧进行休眠的逆向工程
- 21. 怎样才能实现Java字节码加密(防止逆向工程)
- 22. Java逆向工程教程
- 23. MSIL代码问题
- 24. 将C++ Linux二进制文件转换为伪C++代码。逆向工程
- 25. 数据结构的逆向工程
- 26. 是否有可能在Rational Rose中逆向工程C#代码?
- 27. 异常,而使用STAR UML逆向工程Java代码
- 28. 逆向工程C#解决方案生成获得源代码
- 29. 逆向工程黑盒串行协议
- 30. 考虑进行逆向工程/反汇编
你的意思只是一堆不属于程序集的'msil'指令吗? – Oded 2010-10-17 19:46:57
使用反射器拆解反射器,并看它是如何做到的。 – 2010-10-17 19:54:54