My experience with decompilers like Hexrays is that they do a much faster and more accurate job at figuring out typical compiler output than I can do manually.
You are right that naming stuff is the important part, which is what a decompiler lets you focus on. OOP code with lots of getters and setters is particularly irritating --- I don't want to manually decompile "mov eax, [esp+8] ; mov [ecx+12], eax" several dozen times when the decompiler can turn all of those into setters/getters for the right fields quickly and accurately.
Of course, when you are dealing with typically-obfuscated binaries like malware or DRM-related stuff, the situation is completely different.
Comments
My experience with decompilers like Hexrays is that they do a much faster and more accurate job at figuring out typical compiler output than I can do manually.
You are right that naming stuff is the important part, which is what a decompiler lets you focus on. OOP code with lots of getters and setters is particularly irritating --- I don't want to manually decompile "mov eax, [esp+8] ; mov [ecx+12], eax" several dozen times when the decompiler can turn all of those into setters/getters for the right fields quickly and accurately.
Of course, when you are dealing with typically-obfuscated binaries like malware or DRM-related stuff, the situation is completely different.