0

目前我是一名程序员,每天使用 C# 语言开发我的应用程序。我写了我的应用程序,今天我决定反汇编我的应用程序,看看实际的汇编代码是什么样子的。

我查看了 Microsoft 文档并了解到我有一个工具可以执行此操作,即“ildasm.exe”,它是在我安装 Visual Studio 时预装的,用于将汇编代码作为中心代码查看。IL 时间(我知道 C# 与 C++ 和 C 或 Pascal 不同)

我使用了 Visual Studio 的命令行工具,它的名称是:“x64 Native Tools Command Prompt for VS 2019”,然后以管理员身份运行它来执行此操作。

然后在新打开的窗口中输入 ildasm,它会显示一个图形窗口。我选择我的应用程序将其打开,但是当我单击任何方法查看其汇编代码时,ildasm 程序会立即退出。

我再次尝试转储一个“.il”文件,以便我可以在记事本中查看它们,但即便如此,ildasm 也只是向我显示了一个进度窗口,然后立即退出。

还会生成一个“.il”文件,但是当我查看它时,它只写入了“程序集”部分(这决定了当您右键单击应用程序 > 属性并选择“详细信息”选项卡时会看到什么)

我尝试使用命令输入:

ildasm "E:\Projects_MSVS\AESEncryptDecyptFile\AESEncryptDecyptFile\bin\Debug\AESEncryptDecryptFile.exe" /out="E:\Projects_MSVS\AESEncryptDecyptFile\AESEncryptDecyptFile\bin\Debug\AESEncryptDecryptFile.exe.il"

而且和上次没什么区别,ildasm马上就退出了

它的共同点是没有显示任何消息来报告此错误,它只是停止应用程序并退出。

我真的不相信这有什么异常,所以我使用了诊断数据查看器工具进行了调查。在问题报告选项卡中搜索了一段时间后,我终于找到了它。它抛出了七个停止工作时间,这对应于我尝试渲染程序的七次。在第七份报告中(第一次尝试的意思),停止工作这个词的右侧,不再是一个勾号图标(✓)而是一个待定图标(看起来像这样:⟳),当我点击提取报告文件它只是打开 Windows 资源管理器窗口,它是一个空文件夹(此文件夹为空),我还启用了显示所有隐藏文件的选项,包括系统文件。

我发布了我使用诊断数据查看器工具的所有七个错误消息,以便于调查

这是我使用诊断数据查看器工具进行调查时得到的结果,我的每次尝试都将标记为(第 N 次尝试),并且在每次尝试中,错误报告都是分开的:

(第一次尝试):

Microsoft .NET Framework IL disassembler 

description 

Faulting Application Path: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\ildasm.exe 
Creation Time: 12/12/2021 4:16:48 PM 
Problem: Stopped working 
Status: Report queued 

Problem signature 

Problem Event Name: BEX64 
Application Name: ildasm.exe 
Application Version: 4.8.4084.0 
Application Timestamp: 5dda4186 
Fault Module Name: ildasm.exe 
Fault Module Version: 4.8.4084.0 
Fault Module Timestamp: 5dda4186 
Exception Offset: 00000000000055ae7 
Exception Code: c0000409 
Exception Data: 0000000000000005 

Extra information about the problem 
Bucket ID: (18446744073709551615) 

Files that help describe the problem 

minidump.mdmp 
WERInternalMetadata.xml 
WERInternalRequest.xml 
memory.csv 
sysinfo.txt 
AppCompat.txt 
memory.hdmp 
WERDataCollectionStatus.txt

(第二次尝试):

Microsoft .NET Framework IL disassembler 

description 

Faulting Application Path: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\ildasm.exe 
Creation Time: 12/12/2021 4:17:49 PM 
Problem: Stopped working 
Status: Report sent 

Problem signature 

Problem Event Name: BEX64 
Application Name: ildasm.exe 
Application Version: 4.8.4084.0 
Application Timestamp: 5dda4186 
Fault Module Name: ildasm.exe 
Fault Module Version: 4.8.4084.0 
Fault Module Timestamp: 5dda4186 
Exception Offset: 00000000000055ae7 
Exception Code: c0000409 
Exception Data: 0000000000000005 

Extra information about the problem 
Bucket ID: 8f47f513232a51a281bc646c0cbb3750 (1278006809499219792)

(第三次尝试):

Microsoft .NET Framework IL disassembler 

description 

Faulting Application Path: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\ildasm.exe 
Creation Time: 12/12/2021 4:19:22 PM 
Problem: Stopped working 
Status: Report sent 

Problem signature 

Problem Event Name: BEX64 
Application Name: ildasm.exe 
Application Version: 4.8.4084.0 
Application Timestamp: 5dda4186 
Fault Module Name: ildasm.exe 
Fault Module Version: 4.8.4084.0 
Fault Module Timestamp: 5dda4186 
Exception Offset: 00000000000055ae7 
Exception Code: c0000409 
Exception Data: 0000000000000005 

Extra information about the problem 
Bucket ID: 8f47f513232a51a281bc646c0cbb3750 (1278006809499219792)

(第四次尝试):

Microsoft .NET Framework IL disassembler 

description 

Faulting Application Path: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\ildasm.exe 
Creation Time: 12/12/2021 4:20:14 PM 
Problem: Stopped working 
Status: Report sent 

Problem signature 

Problem Event Name: BEX64 
Application Name: ildasm.exe 
Application Version: 4.8.4084.0 
Application Timestamp: 5dda4186 
Fault Module Name: ildasm.exe 
Fault Module Version: 4.8.4084.0 
Fault Module Timestamp: 5dda4186 
Exception Offset: 00000000000055ae7 
Exception Code: c0000409 
Exception Data: 0000000000000005 

Extra information about the problem 
Bucket ID: 8f47f513232a51a281bc646c0cbb3750 (1278006809499219792)

(第五次尝试):

Microsoft .NET Framework IL disassembler 

description 

Faulting Application Path: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\ildasm.exe 
Creation Time: 12/12/2021 4:21:33 PM 
Problem: Stopped working 
Status: Report sent 

Problem signature 

Problem Event Name: BEX64 
Application Name: ildasm.exe 
Application Version: 4.8.4084.0 
Application Timestamp: 5dda4186 
Fault Module Name: ildasm.exe 
Fault Module Version: 4.8.4084.0 
Fault Module Timestamp: 5dda4186 
Exception Offset: 00000000000055ae7 
Exception Code: c0000409 
Exception Data: 0000000000000005 

Extra information about the problem 
Bucket ID: 8f47f513232a51a281bc646c0cbb3750 (1278006809499219792)

(第六次尝试):

Microsoft .NET Framework IL disassembler 

description 

Faulting Application Path: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\ildasm.exe 
Creation Time: 12/12/2021 4:26:34 PM 
Problem: Stopped working 
Status: Report sent 

Problem signature 

Problem Event Name: BEX64 
Application Name: ildasm.exe 
Application Version: 4.8.4084.0 
Application Timestamp: 5dda4186 
Fault Module Name: ildasm.exe 
Fault Module Version: 4.8.4084.0 
Fault Module Timestamp: 5dda4186 
Exception Offset: 00000000000055ae7 
Exception Code: c0000409 
Exception Data: 0000000000000005 

Extra information about the problem 
Bucket ID: 8f47f513232a51a281bc646c0cbb3750 (1278006809499219792)

(第七次尝试,也是我最后一次尝试):

Microsoft .NET Framework IL disassembler 

description 

Faulting Application Path: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\ildasm.exe 
Creation Time: 12/12/2021 4:26:59 PM 
Problem: Stopped working 
Status: Report sent 

Problem signature 

Problem Event Name: BEX64 
Application Name: ildasm.exe 
Application Version: 4.8.4084.0 
Application Timestamp: 5dda4186 
Fault Module Name: ildasm.exe 
Fault Module Version: 4.8.4084.0 
Fault Module Timestamp: 5dda4186 
Exception Offset: 00000000000055ae7 
Exception Code: c0000409 
Exception Data: 0000000000000005 

Extra information about the problem 

Bucket ID: 8f47f513232a51a281bc646c0cbb3750 (1278006809499219792)

这是我的计算机配置(从预装在 Windows 上的系统信息工具中提取):

OS Name Microsoft Windows 11 Home Single Language 
Version 10.0.22000 Build 22000 
Other OS Description    Not Available 
OS Manufacturer Microsoft Corporation 
System Name CYBERDAY 
System Manufacturer ASUSTeK COMPUTER INC. 
System Model    VivoBook_ASUSLaptop X409FA_X409FA 
System Type x64-based PC 
System SKU   
Processor   Intel(R) Core(TM) i3-8145U CPU @ 2.10GHz, 2304 Mhz, 2 Core(s), 4 Logical Processor(s) 
BIOS Version/Date   American Megatrends Inc. X409FA.305, 1/28/2021 
SMBIOS Version  3.2 
Embedded Controller Version 255.255 
BIOS Mode   UEFI 
BaseBoard Manufacturer  ASUSTeK COMPUTER INC. 
BaseBoard Product   X409FA 
BaseBoard Version   1.0 
Platform Role   Mobile 
Secure Boot State   On 
PCR7 Configuration  Elevation Required to View 
Windows Directory   C:\Windows 
System Directory    C:\Windows\system32 
Boot Device \Device\HarddiskVolume1 
Locale  United States 
Hardware Abstraction Layer  Version = "10.0.22000.1" 
Time Zone   SE Asia Standard Time 
Installed Physical Memory (RAM) 4.00 GB 
Total Physical Memory   3.86 GB 
Available Physical Memory   306 MB 
Total Virtual Memory    11.4 GB 
Available Virtual Memory    4.55 GB 
Page File Space 7.50 GB 
Page File   C:\pagefile.sys 
Kernel DMA Protection   Off 
Virtualization-based security   Running 
Virtualization-based security Required Security Properties   
Virtualization-based security Available Security Properties Base Virtualization Support, Secure Boot, DMA Protection, Mode Based Execution Control 
Virtualization-based security Services Configured    
Virtualization-based security Services Running   
Device Encryption Support   Elevation Required to View 
A hypervisor has been detected. Features required for Hyper-V will not be displayed.

我参加了Windows 预览体验计划,我加入以获取新更新的频道是Beta 频道我安装的.NET Framework 版本是 4.8 版

非常感谢任何帮助。

4

1 回答 1

0

我终于找到了问题所在。我打开将资源嵌入到可执行文件中,显然可执行文件变得太重,无法看到 MSIL 中间运行时代码(真的很重),我关闭了将资源嵌入到可执行文件中,然后编译它,ildasm 工作。

于 2021-12-13T08:42:07.693 回答