混淆通过替换符号名称(方法、字段等)为难以阅读的名称来实现。因此,在反编译后,你会得到一个Java文件,但是这个Java代码是无用的。 方法名已经改变了,所以使用反射查找将不起作用(除非测试代码使用了混淆的方法名-这不是一项容易的工作)
混淆可以将私有方法重命名为任何它想要的(无法对公共方法这样做,因为其他包可能会依赖它)。反射的危险在于您拥有表示方法名称的字符串;混淆器无法检测到该字符串引用了私有方法,因此可以自由地对方法进行重命名。