在 Strings.xml 与代码中存储字符串是不是会使逆向工程变得更加乏味?

Posted

技术标签:

【中文标题】在 Strings.xml 与代码中存储字符串是不是会使逆向工程变得更加乏味?【英文标题】:Does storing strings in Strings.xml vs code make reverse engineering more tedious?在 Strings.xml 与代码中存储字符串是否会使逆向工程变得更加乏味? 【发布时间】:2019-02-07 11:02:07 【问题描述】:

对应用程序进行逆向工程的人能否轻松/自动将 getString(R....) 调用替换为 Strings.xml 中存储的相应字符串值?我很确定答案是肯定的,考虑到即使 android Studio 也会通过 getString(R...) 调用暗示 Strings.xml 的内容。

我问的原因是我想知道在 xml 资源文件中存储具有随机名称的字符串是否比简单地将它们硬编码在代码中提供任何“安全”优势。我知道使用 Strings.xml 可以翻译我不感兴趣的等。

该应用程序是完全独立的,不会从服务器获取数据,因此我无法在客户端之外隐藏任何内容。

即使我的代码被混淆了,我也不希望通过允许某人简单地阅读整个代码(或链接到 Strings.xml)的消息而泄露太多的逻辑和上下文。

我知道要阻止一个坚定的人对应用程序进行逆向工程是不可能的,但如果我可以做一些简单的事情来降低它的吸引力,我会全力以赴。

谢谢!

【问题讨论】:

【参考方案1】:

不,它没有。隐藏字符串的可靠方法之一是编码和解码。很好解释here。

【讨论】:

以上是关于在 Strings.xml 与代码中存储字符串是不是会使逆向工程变得更加乏味?的主要内容,如果未能解决你的问题,请参考以下文章

使用strings.xml和翻译

在 strings.xml 中存储十六进制颜色值

使用strings.xml 在数据库上存储多语言值的最佳方法?

将 strings.xml 资源值分配给 MainActivity 中的字符串失败

为啥源码中的strings.xml中有msgid属性

在 android strings.xml 中引用字符串数组