我使用JD-GUI对一个.jar文件进行了反编译,并且很多包被奇怪地命名为a
,b
,c
,d
等等上。对于类来说也是如此,因此一些.class
文件也被命名为a.class
,b.class
等等。
我不相信开发人员以这样的方式命名包或Java文件,以至于他们以后无法识别每个文件的作用。我认为这是因为其他一些技术问题。有人可以清楚这个问题吗?
答案 0 :(得分:1)
您反编译的Jar可能会使用ProGuard保护:
默认情况下,编译后的字节码仍然包含很多调试信息:源文件名,行号,字段名,方法名,参数名,变量名等。这些信息可以直接反编译字节码和反向工程整个计划。有时,这是不可取的。像ProGuard这样的混淆器可以删除调试信息并用无意义的字符序列替换所有名称,这使得对代码进行反向工程变得更加困难。它进一步压缩代码作为奖励。除了异常堆栈跟踪中给出的类名,方法名和行号外,该程序在功能上保持等效。
仍然可以对程序进行逆向工程,但这样做通常是非法的,然后重复使用代码(至少在美国,我所经历过的唯一一个国家),因为它和#39; sa违规行为。使用此类工具的人几乎总是不会编写开源软件。