dnSpyEx / dnSpy

Unofficial revival of the well known .NET debugger and assembly editor, dnSpy
GNU General Public License v3.0
6.2k stars 415 forks source link

Debugger ARM #231

Open EugeneSunrise opened 10 months ago

EugeneSunrise commented 10 months ago

Problem Description

Debugger for ARM64 exe don't work

Proposal

What about adding debugger support for ARM64?

Alternatives

No response

Additional Context

No response

ElektroKill commented 10 months ago

I have no experience at all with Windows and ARM64 nor do I have access to a machine with such architecture. Could you perhaps more information like if you running dnSpy on Windows for ARM64 via the compatibility layer and trying to debug an ARM64 executable or if your configuration is different than this? What version of Windows are you using? Could you perhaps provide a minimum reproduction ARM64 .NET binary?

The more information you provide about the hardware and software configuration on your end the better as I currently have no access to any ARM64 WIndows compatible hardware!

EugeneSunrise commented 10 months ago

Thanks for the reply, Sir! My current configuration is Parallels Windows 11 ARM64 (MacBook Pro ARM --> Installed vitual machine(Parallels))

Debugger and decompilation of x86/x64 applications works fine, ARM application debugger raises an exception at the start of debugging (no matter what debug arguments were written and what mode was selected) - exception text "CLR debugger error occurred. Destroy the debugger process and try again." HR: 0x80070057 Error: 0x00000000

nadrojisk commented 1 week ago

I am having a similar issue with VMware Fusions on an M1 Mac running Windows 11 ARM64. It is an x64 Binary that I'm trying to debug.

13:59:25.046 Couldn't patch debugger detection functions:
13:59:25.062    kernel32.dll!IsDebuggerPresent: Couldn't find a block to patch
13:59:25.062    kernel32.dll!CheckRemoteDebuggerPresent: Couldn't find a block to patch
13:59:25.062    kernel32.dll!CloseHandle: Couldn't find a block to patch
13:59:26.366 The program '[0x1418] DebugMe.exe' has exited with code 0 (0x0).
EugeneSunrise commented 1 week ago

I am having a similar issue with VMware Fusions on an M1 Mac running Windows 11 ARM64. It is an x64 Binary that I'm trying to debug.


13:59:25.046 Couldn't patch debugger detection functions:

13:59:25.062  kernel32.dll!IsDebuggerPresent: Couldn't find a block to patch

13:59:25.062  kernel32.dll!CheckRemoteDebuggerPresent: Couldn't find a block to patch

13:59:25.062  kernel32.dll!CloseHandle: Couldn't find a block to patch

13:59:26.366 The program '[0x1418] DebugMe.exe' has exited with code 0 (0x0).

Maybe your binary has anti-debug? Cuz x64/x86 binaries works good in dnspy using debug on windows arm, problem in debugging arm64 binaries

nadrojisk commented 1 week ago

Sorry, I realized a few minutes after posting it was a different issue. However, I think it still is an ARM issue.

The code I built is just a simple helloworld, however, I'll make a new issue to not hijack your thread lol.