Nếu tôi NGen một hội đồng, nó là bình thường mà ildasm vẫn disassembles nó?Chúng ta có thể tháo rời (sử dụng ILDasm) một hội đồng NGen-ed không?
Ok. Tôi đã viết một thư viện lớp HelloWorld và dll tiếp theo được đặt tên là NGenILDasmTest.dll. -> mục tiêu cho fw Net 4.
Từ Vs 2010 dấu nhắc lệnh, tôi đã làm
gacutil -i NGenILDasmTest.dll
tôi có thể thấy việc lắp ráp cài đặt trong GAC. Và tôi chạy ildasm vì vậy tôi có thể xem IL. Cho đến nay rất tốt.
Sau đó, tôi chạy
ngen NGenILDasmTest.dll
(tôi không chỉ định bất kỳ tùy chọn cho ngen). Và hội đồng này đã được biên soạn thành công. Tôi nằm đó với một tên NGenILDasmTest.ni.dll trong thư mục
C:\Windows\Assembly\NativeImages_v4.0.30319_32\NGenILDasmTest\81d49dd4c7df22fb3df530402b58ffc9
Bây giờ, khi tôi chạy ildasm như dưới đây
ildasm "C:\Windows\Assembly\NativeImages_v4.0.30319_32\NGenILDasmTest\81d49dd4c7df22fb3df530402b58ffc9\NGenILDasmTest.ni.dll"
tôi có thể xem nội dung của hội Ngen-ed. Điều này có bình thường không ?.
Về mặt kỹ thuật, Ngen tạo ra các nguyên tắc CPU gốc cho IL (và dường như đặt nó dưới C: \ windows \ Assembly \ NAtiveImages_V4. ##### _ 32 - trong trường hợp của tôi). Nếu đúng như vậy, tôi vẫn có thể thấy hội đồng NGen-ed như IL bằng ILDasm như thế nào?
Hãy giúp tôi hiểu rằng 'điều gì đó' mà tôi thiếu ở đây.
+1, điều này có vẻ chính xác. –
@vcsjones Tôi đồng ý! Liên kết đó trong câu trả lời của bạn giải thích tất cả. Kỹ thuật đảo ngược thực sự. Trong khi đó tôi đã thử xây dựng bởi NGenILDasmTest.dll trong cả hai/phát hành và/chế độ gỡ lỗi tách biệt. Điều đó dường như không tạo ra bất kỳ sự khác biệt nào. Một điều nữa được quan sát là hội đồng gốc NGenILDasmTest.dll có kích thước 5KB như Explorer cho thấy nó, và cụm lắp ráp Ngen-ed NGenILDasmTest.ni.dll là 10KB. Nếu không có suy nghĩ thứ hai, điều đó làm cho tôi tin rằng tuyên bố "Hội An NGEN'ed là IL cộng với mã nguồn gốc". – gmaran23