2010-06-23 70 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的體內