I brought up a point about obfuscation in another question to which someone replied "obfuscation doesn't stop much".
Rather than start a debate in comments on there, I wanted serious community answers as to how safe my code is when obfuscated with X, Y or Z obfuscator, and if any obfuscation tools truly get the job done.
I'm also interested in any explanation given to garner some basic understanding of how an obfuscator works.
From my understanding, obfuscation cannot prevent reflection and detecting methods etc. but it makes the code within the methods less readable by skewering variable names. Is that wrong? What else does it do?