将 resources.properties 文件插入 APK - 语言兼容性

逆向工程 安卓 apk
2021-06-30 10:27:17

我正在对一个 android 应用程序进行逆向工程。我已经有一段时间没有研究这个了,但是我在编辑 APK 以处理某些语言区域时遇到了问题。

原始应用程序来自不同的国家。反编译和重新编译时,应用程序会安装,但当您尝试在手机上运行它时会出错。这包括如果我只做 apktool d 然后 apktool b。通过 log cat 我收到此异常:

引起:java.util.MissingResourceException:找不到包“j.bc.l.resources.resources.resources_en_US”的资源,键“”

来自 ResourceBundle.getBundle 调用。通过此页面,我假设这是与解决不同语言的资源相关的问题。

我认为问题在于它默认搜索应用程序中不存在的路径,因此它找不到文件并且应用程序崩溃。我解压了 apk 文件,在 j.bc.l.resources 中有一个 resources.properties 文件,但没有可以搜索的 resources_en_US 目录。

所以在这一点上,因为我需要对应用程序进行更改,所以我假设我需要在该目录中放置一个带有新属性文件的 resources_en_US,但我不知道如何将其修补到应用程序中。我无法解压缩和重新压缩,因为据我所知它弄乱了标题,因此 apktool 和安装将失败。

所以我需要一种方法将 resources.properties 文件放入正确的位置以正确解析。代码中没有对 resources_en_US 的任何引用,所以我假设让它工作的唯一方法是将目录修补到应用程序中并重建它。但如果有更简单的方法来解决这个问题,我也可以接受。

1个回答

为了让它发挥作用,我不得不使用我原始帖子中留下的评论的组合。正如我在该主题中提到的,该问题看起来像是资源包没有正确包含的问题。我最好的猜测是原始编译设置使得默认资源包与此处记录的不同无论这是语言兼容性问题,还是 Eclipse(或他们过去构建的任何东西)在幕后所做的事情。

在任何情况下,我都将 resources.properties 文件从 resources\ 中取出,并将其复制到 resources\resources_en_US 中,根据抛出的异常。应用程序从属性文件中读取的常量/参数看起来没什么特别的(而且都是英文的),所以我不必对其进行任何更改。

在此之后我删除每META-INF文件夹位置,然后rezipped并用默认的调试重要的迹象:

jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore debug.keystore theApp.apk androiddebugkey

在那之后,一切都是犹太洁食,所以只需按照正确的顺序组合一切。