在proguard混淆后Android字符串变成随机数
Posted
技术标签:
【中文标题】在proguard混淆后Android字符串变成随机数【英文标题】:Android Strings turn to random number after proguard Obfuscation 【发布时间】:2011-05-24 17:58:37 【问题描述】:我刚刚在 Eclipse 中使用了新的 ProGuard 工具来混淆我的应用程序。我使用dex2Jar 和JD-GUI 对其进行反编译以检查发生了什么。
我注意到 R 类中的所有内容都已转换为如下所示的随机数。
new SimpleCursorAdapter(localActivity, 2130903058, localCursor, arrayOfString, arrayOfInt);
2130903058 是一个布局文件。字符串和数组得到相同的处理。
反编译后的代码中没有R类,去哪了?对原始字符串的引用在哪里?
【问题讨论】:
【参考方案1】:所有引用都是整数。如果您查看R.string
,您会注意到所有成员都是int
s。这是因为它们是指向实际字符串的指针。例如,android.R.string.cancel
始终为17039360
,它指向字符串Cancel
。 ProGuard 所做的是将这些引用替换为它们所代表的实际数字,因此如果您使用android.R.string.cancel
,它将替换为17039360
。
编辑:没有 R 类,因为它不再需要(所有对它的引用都已被替换)。
【讨论】:
以上是关于在proguard混淆后Android字符串变成随机数的主要内容,如果未能解决你的问题,请参考以下文章
将新的 Google 登录添加到 Android 应用程序后的 Proguard 混淆问题
使用 Proguard 混淆 Cordova Android 应用程序似乎无济于事
使用 Proguard 混淆后的 SuperNotCalledException