2010-06-23 37 views
1

如果不使用源代码,只是基于二进制代码,是否有一种方法(确定必须使用CodeDom,但如果没有CodeDom,就会很好用)通过反射来判断一个方法的body是否有if结构?从查看二进制代码中检测代码片段

+1

什么平台/语言?从上下文我会猜测.NET,但也可能是其他。 – Oded 2010-06-23 18:44:08

+0

是的,一个“if”本质上是一个分支,这高度依赖于编程语言和建筑,我的问题是最终目标是什么? – BobbyShaftoe 2010-06-23 18:46:10

+0

是的,它是.NET,语言是C#。 – 2010-06-23 18:49:39

回答

0

如果是.Net,则抓取reflector

更新
看到您的评论之后,我觉得有很多的信息,从你的问题遗漏。特别是,写入二进制文件的语言是什么?你在问如何反编译给定的.Net二进制文件,或者你在问如何使用.net来反编译用其他语言编写的,不基于.Net框架的二进制文件?

如果是后者,那么反射将不允许您确定存在哪些代码。

如果前者,那么我很疑惑。反射器的目的是反编译.net二进制文件......在这一点上,您可以直观地检查if语句是否确实存在于所讨论的方法中。

+0

我已经使用反射器多年了。这对我有什么帮助? – 2010-06-23 18:50:04

0
  1. 反编译(由Chris作为决定)
  2. 运行通过代码解析器的反编译的代码(C#2.0参见例如CS分析器:http://csparser.codeplex.com/
  3. 使用解析器输出,以获得信息所需的,如存在令牌Y在方法Z的体内