android - 反编译在 Appcelerator 中创建的 .apk 文件并获取 .js 文件

标签 android apk appcelerator decompiler appcelerator-titanium

有什么方法可以从已编译的 .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/

相关文章:

钛合金 - 如何将 View 从 0 高度设置为 "auto"

多次成功连接后,Android GATT 服务返回 Null

java - 位图代替 Drawable

android - 从内存下载并安装应用程序 (apk) - 无需 SD 卡

android - 我可以推送更新以播放我的原生应用程序的商店吗(而前一个构建是在 ionic 上开发的)

android - 有人有钛的示例 Android 模块吗?

android - Appcelerator [错误] : Invalid "--device-id" value

android - 每次我尝试导出签名的 apk 时,ADT 都会排除一堆类

java - 在代码中更改 Android 设备名称

android - 为什么需要CERT.SF文件来验证android中的apk?