2015-07-03 49 views
1

這是我的問題。我有用C#編寫的.exe文件。我無法訪問原始源代碼或pdb文件。如何在語句級別獲得C#應用程序的執行跟蹤?

我想要獲取語句級別的方法內執行的內容的跟蹤。我知道C#源代碼轉換爲CIL並在運行時進一步編譯。

我發現.NET分析器提供由方法,返回值和參數值組成的執行跟蹤。我發現的一些工具是:dotTraceredgate ANTS,telerik justTrace,Runtime Flow

我想獲得每條語句等價的CIL命令的跟蹤。 我知道可以進一步編譯器優化,可以修改CIL代碼或不同類型的編譯託管代碼(short info)。

一種自動添加日誌記錄的方法是PostSharp,但對我的情況再次提供了一個太高級的視圖。

據我所知,CLRProfiler爲方法入口和出口點等提供了API方法。沒有API來跟蹤執行的語句。

我到目前爲止的想法是在CIL級別手動編寫代碼注入器,如此處所述(part-1part-2),其中每個語句都將打印等效的CIL代碼。

有沒有人有更好的主意或意識到任何類似的工具? 對於二進制程序集,Intel Pin可以提供類似的功能。

更新

我不想簡單地閱讀源代碼,我希望看到的是執行了什麼。 我很清楚所有反編譯器。 我在混淆和反混淆的背景下這樣做。例如,如果我有一個計算fibonnacci數字的方法,並且它應用了控制流模糊處理和其他混淆方法,則僅僅閱讀源代碼是不夠的。我想看看如何執行該方法。我需要動態追蹤

+2

爲什麼不使用反編譯器? – Nasreddine

+0

這個帖子後面的東西看起來很麻煩 –

+0

@Nasreddine請閱讀更新後的問題。感謝您的詢問 –

回答

1

如果您只是想要進行逆向工程,那麼您可以使用dotPeek等更好的運氣,它可以讓您將IL轉換爲可讀的C#。

如果可執行文件被混淆了,那麼分析和反編譯對你來說無論如何都不會幫助你。

0

ILDASM.exe可以爲您提供大部分您正在尋找的內容。它與VS打包在一起。

+0

@ cipri.l爲了響應您的更新,我不確定關於exe,但我確信dll動態跟蹤,您可以使用pdb文件來完成。你可能想看看pdb。 –

+0

伊姆拉感謝您的意見。我沒有pdb文件。 –

+0

ILDasm如何在這裏提供幫助?它只是給你原始的IL,它並沒有告訴你在運行時執行了什麼。 – svick

1

對於你的,你只需要反編譯應用程序[使用一些反編譯器,如telerik,ILOgic,dotpeek e.t.c],然後將一些跟蹤到你想要檢查的方法。 [可能使用log4net或簡單的buliltin trace]。 已經做了很多時間這些類型的東西