簡體   English   中英

是否可以對在反編譯過程中變得混亂的反編譯的C#代碼進行反向工程?

[英]Is it possible to reverse engineer decompiled C# code that has become jumbled during the decompiling process?

我一直負責一個我們在C#/ ASP.net中完成的工作中使用的項目,但是在我之前從事該項目的人員並未備份他的任何源代碼,而他的本地計算機除外。機器不再運行,基本上沒有可用的源代碼。 我已經使用dotPeek / dnSpy嘗試以可讀格式獲取某些代碼,但是許多反編譯文件都具有或多或少不可讀的由編譯器生成的代碼。

例如:

if (_Page_Views_Shared__Layout_cshtml.<Execute>o__SiteContainer0.<>p__Site3 == null)
{
                _Page_Views_Shared__Layout_cshtml.<Execute>o__SiteContainer0.<>p__Site3 = CallSite<Func<CallSite, object, object, object>>.Create(Binder.BinaryOperation(CSharpBinderFlags.None, ExpressionType.NotEqual, typeof(_Page_Views_Shared__Layout_cshtml), new CSharpArgumentInfo[]
                {
                    CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null),
                    CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.Constant, null)
}

有沒有辦法弄清楚這些編譯器生成的位試圖完成什么並將其重寫以嘗試恢復所有源,或者我只是把它拆下來重新開始更好嗎?

這是一個很好的問題! 在我的職業生涯中,我也遇到過類似的情況。 dotPeek非常適合反編譯代碼,但是肯定有一些限制。

我在這里發現了類似的問題: 逆向工程asp.net Web應用程序

如果您無法恢復原始信號源,聽起來像Reflector可能是您需要執行的操作。

https://marketplace.visualstudio.com/items?itemName=vs-publisher-306627.NETReflectorVisualStudioExtension

更好地了解應用程序的工作方式,然后重寫不容易反編譯的組件,從功能的角度保持您的能力。

不幸的是,答案是沒有。 這將涉及為您重命名變量,方法和屬性。 至少代碼似乎沒有被混淆,這會使您變得更加棘手。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM