It is the same problem as trying to get C++ back out of raw disassembled binaries.
With patience you can probably do it. There are some disassemblers that can let you interpret the bytecode with more human-friendly instruction names. With a bit of effort you could probably take the compiled shader object bytecode and turn the disassembly back into something approaching HLSL in structure, but without the names beyond the parameter name mapping.
Most of the time when people ask about it, it's legally, morally, or academically questionable like trying to open stuff they don't have rights to, but sometimes there are useful legitimate reasons to do it. It is far easier to just start with the original source than to disassemble and then attempt to de-compile the compiled binaries.