Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java proguard是否可以混淆静态字符串常量?_Java_Android_Obfuscation_Proguard - Fatal编程技术网

Java proguard是否可以混淆静态字符串常量?

Java proguard是否可以混淆静态字符串常量?,java,android,obfuscation,proguard,Java,Android,Obfuscation,Proguard,proguard是否会混淆静态字符串常量 根据我对手册中模糊处理选项的阅读,答案是否定的 字符串文字模糊处理理论上是可能的,但有必要使用一个特殊的类加载器,在从类文件读取字符串文字时对其进行模糊处理。这会很棘手。除此之外,它并没有取得多大的成就,因为有人可以通过运行附加了Java调试器的应用程序轻松恢复原始字符串。ProGuard所做的(如果正确配置)是内嵌字符串常量。混淆它们没有多大意义,想想看,字符串常量可以用来向用户表示消息,如果混淆了它会有什么好处?不,ProGuard不加密字符串常量(

proguard是否会混淆静态字符串常量

根据我对手册中模糊处理选项的阅读,答案是否定的


字符串文字模糊处理理论上是可能的,但有必要使用一个特殊的类加载器,在从类文件读取字符串文字时对其进行模糊处理。这会很棘手。除此之外,它并没有取得多大的成就,因为有人可以通过运行附加了Java调试器的应用程序轻松恢复原始字符串。

ProGuard所做的(如果正确配置)是内嵌字符串常量。混淆它们没有多大意义,想想看,字符串常量可以用来向用户表示消息,如果混淆了它会有什么好处?

不,ProGuard不加密字符串常量()

但是有一些商业产品可以帮助你做到这一点。 我建议使用,因为它具有检查调用上下文和完整性控制功能,这使得逆向工程尽可能困难。IMHO Stringer是目前市场上最好的Java和Android字符串加密机

另见


注意:我是Licel LLC的首席执行官。Stringer Java混淆器的开发人员。

ProGuard不会混淆字符串常量,正如其。它最近专门针对Android的封闭源代码同级,提供了额外的应用程序保护技术,如字符串加密和类加密


(我是ProGuard和DexGuard的开发人员)

您不必使用自定义类加载器,只需在类中插入函数即可在运行时解读字符串。泽利克斯·克拉斯马特就是这么做的。当然,如果您知道自己在做什么,就很容易绕过它,但模糊处理只会有助于阻止临时用户。+1 DexGuard是用于保护应用程序中字符串的商业产品。就我个人而言,我使用位移位操作,但对于必须抵抗攻击者的值,我不主张使用位移位操作。@语法对于必须抵抗攻击者的值,我根本不主张进行模糊处理。如果这些字符串如此重要,它们甚至不应该出现在代码中。我还没有看到一个字符串加密不容易破解的Java模糊器,我已经看过很多了。正如我所说:P我不主张对任何不允许黑客访问的东西使用模糊处理。我将我的安卓计费API公钥进行了位移,我并不太担心人们是否会打破混淆并访问它。如何避免所有类都出现显式字符串,而不是只在定义它们的地方进行“翻译”?我的意思是:类A定义了公共静态字符串MYCONS=“no session”,但实际上这是在类B中看到的,而不是someView.setText(A.MYONCS)ProGuard非常耗时,如果不构建apk,我们是否可以运行应用程序并查看错误,因为我面临的问题是它在构建apk中工作,而在发布apk中没有任何工作,因此我不知道如何捕获错误这是使用
build.gradle
文件进行简单字符串隐藏的示例:@OleksiiKropachov I上面的评论应该作为答案发布,因为它有帮助。Proguard不要混淆静态字符串@OleksiiK。gist.github.com URL已更改?@github昵称已更改:Proguard用于使编译后的代码难以阅读和理解,如果方法的每个点向用户显示纯文本用户消息,我认为每行代码都很容易理解。如果在像我这样的情况下,我log.debug(“fun()”)在编译代码中显示每个方法的开头,那么剥离方法名是毫无用处的!所以这是一个大问题。…。@sarah.ferguson您也可以。Stringer Java混淆器是非free@sarah.ferguson是的,商业产品天生就不是免费的。