Dot-Net

傳送 PDB 文件是否會使 .net 中的混淆變得無用?

  • May 1, 2012

如果我使用 Eazfuscator 混淆 vb.net 程序集並啟用符號名稱加密(以便我可以使用 Eazfuscator 堆棧跟踪解碼器),如果我發送 PDB 文件,這是否有效地撤消?我想發送 PDB 文件,以便在堆棧跟踪中獲取行號,這些行號會在錯誤報告中發送回給我。

我知道我可以通過保留已發布版本的 PDB 文件來獲取行號,但這是我現在不需要的額外複雜層,我將在未來實現它。我只是想確保我沒有通過包含 PDB 文件來有效地傳送非混淆程式碼。

提前感謝您的任何建議。

PDB 不包含實際程式碼。但我有一種強烈的感覺,混淆後的 PDB 將與二進制不兼容。這是位於 PDB 內部的內容

  • 公共、私有和靜態函式地址
  • 全域變數名稱和地址
  • 參數和局部變數的名稱和偏移量在堆棧中的位置
  • 類型數據由類、結構和數據定義組成
  • Frame Pointer Omission (FPO) 數據,這是 x86 上原生堆棧行走的關鍵
  • 源文件名及其行

據我了解,混淆會破壞非公共類型、方法、參數等。因此,如果它不改變原始 IL 偏移量,顯示行號可能會起作用,但它會提供一些實際上被混淆的資訊,問題是它是否可以恢復。

如果您非常關心反混淆,我建議添加豐富的日誌記錄。

引用自:https://stackoverflow.com/questions/7243569