c++ – How can I view a Visual Solution PE32 executable file?


I want to open a PE32 executable (i.e. .acm, .ax, .cpl, .dll, .drv, .efi, .exe) from my visual studio’s binary folder (debug or release). I am aware of dotPeek and I know that it is hard to decompile C++ source but I don’t really want to know the source code for a specific DLL. I am also aware of dependency walker and similar sorts of file but it usually gives me inaccurate results. In one stackoverflow post, I saw someone using Microsoft’s built-in tool to decompile their source.

0x00425C50  push        %ebp  
0x00425C51  mov         %ebp,  %esp  
0x00425C53  sub         %esp, 104h  
0x00425C59  push        %ebx  
0x00425C5A  push        %esi  
0x00425C5B  push        %edi  
0x00425C5C  lea         %edi, (%ebp-104h)  
0x00425C62  mov         %ecx, 41h  
0x00425C67  mov         %eax, 0CCCCCCCCh  
0x00425C6C  rep stos    dword ptr es:(%edi)  
0x00425C6E  mov         %eax, dword ptr (__security_cookie (042C004h))  
0x00425C73  xor         %eax, %ebp  
0x00425C75  mov         dword ptr (%ebp-4), %eax  
0x00425C78  mov         %ecx, offset _07D9089F_linearsearch@cpp (042E027h)  
0x00425C7D  call        @__CheckForDebuggerJustMyCode@4 (042126Ch)  
0x00425C82  mov         dword ptr (arr), 2  
0x00425C89  mov         dword ptr (%ebp-18h), 3  
0x00425C90  mov         dword ptr (%ebp-14h), 4  
0x00425C97  mov         dword ptr (%ebp-10h), 0Ah  
0x00425C9E  mov         dword ptr (%ebp-0Ch), 28h  
0x00425CA5  mov         dword ptr (target), 0Ah  
0x00425CAC  mov         dword ptr (size), 5  
0x00425CB3  push        0Ah  
0x00425CB5  mov         %eax, dword ptr (size)  
0x00425CB8  push        %eax  
0x00425CB9  lea         %ecx, (arr)  
0x00425CBC  push        %ecx  
0x00425CBD  call        search (0421401h)  
0x00425CC2  add         %esp, 0Ch  
0x00425CC5  mov         dword ptr (result), %eax  
0x00425CC8  cmp         dword ptr (result), 0FFFFFFFFh  
0x00425CCC  jne         main+93h (0425CE3h)  
0x00425CCE  push        offset string "Item not found." (0429BD4h)  
0x00425CD3  mov         %eax, dword ptr (__imp_std::cout (042D0D0h))  
0x00425CD8  push        %eax  
0x00425CD9  call        std::operator<<<std::char_traits<char>> (0421208h)  
0x00425CDE  add         %esp, 8  
0x00425CE1  jmp         main+0BCh (0425D0Ch)  
0x00425CE3  mov         %esi, %esp  
0x00425CE5  mov         %eax, dword ptr (result)  
0x00425CE8  push        %eax  

How is this possible as it looks like an accurate diassembly. I tried using ildasm.exe but it just says

cannot find entry point or CLR header

EDIT: If I am not clear, is there any visual studio built-in software that can decompile PE32 executables like above?