使用ProGuard进行模糊处理时,是否使用了SourceFile,LineNumberTable使得生成的apk更容易进行逆向工程?

wir*_*bly 29 java android proguard

我发现自己在报告的堆栈跟踪中需要更多细节,但我担心通过包含额外的数据(通过使用-keepattributes SourceFile,LineNumberTable),我使我的应用程序更容易进行逆向工程.是这样的,如果是这样,多少钱?

Eri*_*une 40

ProGuard手册>示例>生成有用的混淆堆栈跟踪

SourceFile属性是必需的,因为Oracle/Sun的Java虚拟机在堆栈跟踪中不包含行号,这是您真正想要的(并且它本身是无害的).我没有检查Android的Dalvik虚拟机是否属实.

至于解决方案,ProGuard可以保留SourceFile属性,但用你选择的无意义字符串替换它的内容,例如

-renamesourcefileattribute SourceFile
Run Code Online (Sandbox Code Playgroud)

字符串的值对于解释堆栈跟踪并不重要.选择像"SourceFile"这样的字符串可以避免增加类文件大小,因为根据定义,此字符串已经存在.

  • @mP上面的配置保留SourceFile属性,但替换其内容。然后,JVM将打印出完整的堆栈跟踪,但带有混淆的名称。在ProGuard为开发人员生成的映射文件的帮助下,这些对于调试混淆的应用程序可能很有用。 (2认同)