有什么方法可以从已编译的 .apk 中使用 Appcelerator 创建的代码访问 .js 文件? 我丢失了其中一个项目的源代码,现在只有 .apk 文件,不想重写整个代码。 提前致谢
最佳答案
如果您想手动执行此操作:
在应用程序的发布版本中,Titanium 将所有 Assets 放入名为 AssetCryptImpl 的 Java 类中,您必须反编译 apk 并在源代码中查找该类文件。
AssetCryptImpl 文件将包含名为 initAssetsBytes 的私有(private)方法,它返回一大块数据作为 CharBuffer,其中包含所有 Assets 文件的加密数据。另一个称为 initAssets 的方法将包含所有原始 Assets 文件名以及每个 Assets 文件的范围。
Assets 数据在 ECB 模式下使用 AES 加密, Assets 数据的最后 16 个字节是解密 key 。 Assets 解密方法实现在 JNI 库中,但不难重写。 filterDataInRange 将调用 native 代码来解密资源。
您可以轻松地重写 filterDataInRange 方法,使用您的实现,它将获取 key 并解密资源数据并将其写入文件。并编写一个方法,该方法将从 HashMap 的 initAssets 方法中为每个文件名调用 readAsset。
如果您想要一键式解决方案:
您可以使用名为 ti_recover 的工具。
使用节点包管理器安装它:
npm install ti_recover
比从终端/命令行使用它:
ti_recover apkfile.apk outputdir
关于android - 反编译在 Appcelerator 中创建的 .apk 文件并获取 .js 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34853618/