Dot-Net
傳送 PDB 文件是否會使 .net 中的混淆變得無用?
如果我使用 Eazfuscator 混淆 vb.net 程序集並啟用符號名稱加密(以便我可以使用 Eazfuscator 堆棧跟踪解碼器),如果我發送 PDB 文件,這是否有效地撤消?我想發送 PDB 文件,以便在堆棧跟踪中獲取行號,這些行號會在錯誤報告中發送回給我。
我知道我可以通過保留已發布版本的 PDB 文件來獲取行號,但這是我現在不需要的額外複雜層,我將在未來實現它。我只是想確保我沒有通過包含 PDB 文件來有效地傳送非混淆程式碼。
提前感謝您的任何建議。
PDB 不包含實際程式碼。但我有一種強烈的感覺,混淆後的 PDB 將與二進制不兼容。這是位於 PDB 內部的內容:
- 公共、私有和靜態函式地址
- 全域變數名稱和地址
- 參數和局部變數的名稱和偏移量在堆棧中的位置
- 類型數據由類、結構和數據定義組成
- Frame Pointer Omission (FPO) 數據,這是 x86 上原生堆棧行走的關鍵
- 源文件名及其行
據我了解,混淆會破壞非公共類型、方法、參數等。因此,如果它不改變原始 IL 偏移量,顯示行號可能會起作用,但它會提供一些實際上被混淆的資訊,問題是它是否可以恢復。
如果您非常關心反混淆,我建議添加豐富的日誌記錄。