2015-07-08 14 views
16

Tôi đang cố gắng sử dụng JetBrains dotPeek máy chủ 1,4 biểu tượng tuy nhiên tôi đã gặp phải một số hội đồng bên thứ 3 mà thất bại, có tư cách dotPeek của:hệ DotPeek PDB cho lắp ráp mà không cần thư mục debug

Pdb has not been generated because assembly does not contain debug directory 

Sử dụng CFF Explorer tôi đã phát hiện ra rằng các assembly này có các giá trị tiêu đề "Debug Directory" Portable Executable (PE) rỗng.

Có cách nào (dễ dàng) để chỉnh sửa PE để thêm các giá trị tiêu đề của Thư mục gỡ lỗi không?

Trả lời

4

de4dot tạo mô-đun thực thi .net không hợp lệ trong mắt của dotPeek. Đó là vấn đề của dotPeek, không phải de4dot, tuy nhiên. Nhưng vì chúng ta không có nguồn của dotPeek nên chúng ta nên sửa đổi de4dot để đạt được khả năng tương tác. Sửa: de4dot.code/AssemblyModule.cs mô-đun thêm

writerOptions.WritePdb = true; 
module.CreatePdbState(); 

để de4dot.code.AssemblyModule.Save chức năng và bạn đưa vào có chức năng pdb hợp lệ trong mô-đun exe.

Để tiết kiệm thời gian, bạn có thể sử dụng dự án de4dot với bản vá của mình: https://github.com/earnol/de4dot/commit/24c6e696fb9251f7d048ac33c88c710013a649d6 Nó sẽ thêm thư mục gỡ lỗi vào tệp thực thi đầu ra. Chỉ cần xóa kết quả PDB và chạy lại dotPeek. Nó sẽ hoạt động hoàn hảo. Sử dụng một cái gì đó như: de4dot.exe -f filein.exe -o fileout.exe -fpdb

+0

Tôi đã áp dụng sửa đổi @ ainz-ooal-gown thành phiên bản de4dot mới nhất và biên soạn bản phát hành nhị phân để tải xuống: https: // github .com/djkrose/de4dot/release/tag/v3.1.41592-fpdb – Hannobo

Các vấn đề liên quan