解压缩在Appcelerator中创建的.apk文件并获取.js文件

时间:2016-01-18 11:27:32

标签: android apk appcelerator decompiler appcelerator-titanium

有没有办法从编译过的.apk中使用Appcelerator创建的代码获取.js文件? 我丢失了一个项目的源代码,现在只有.apk文件,并且不想重写整个代码。 提前谢谢

4 个答案:

答案 0 :(得分:2)

取决于Titanium应用程序的构建方式。如果它是一个模拟器构建,那么是的,你可以获得JavaScript文件。如果apk来自设备或dist构建,那么没有。

对于设备和dist构建,Titanium缩小并加密所有JavaScript,然后在编译之前将其注入Java代码。

因此,如果你有一个来自模拟器构建的apk,你可以将.apk重命名为.zip并解压缩,JS文件就在那里。

有一点需要注意的是,如果您的应用是合金应用,那么您将只获得已编译的Alloy代码,而不是原始的Alloy代码。这意味着您将找不到任何.xml视图,.tss样式等。

答案 1 :(得分:1)

如果您想手动执行此操作:

在该应用程序的发行版中,Titanium将所有资产放入名为AssetCryptImpl的Java类中,您必须反编译apk并在源代码中查找该类文件。

AssetCryptImpl文件将包含一个称为initAssetsBytes的私有方法,该方法将以CharBuffer的形式返回一大块数据,其中包含所有资产文件的加密数据。另一种称为initAssets的方法将包含所有原始资产文件名,并且还包含每个资产文件的范围。

资产数据在ECB模式下使用AES加密,资产数据中的最后16个字节是解密密钥。资产解密方法实现在JNI库内部,但不难重写。 filterDataInRange将调用本机代码来解密资源。

您可以通过实现轻松地重写filterDataInRange方法,该方法将获取密钥并解密资源数据并将其写入文件。并编写一个方法,该方法将通过initAssets方法为HashMap中的每个文件名调用readAsset。

如果要一键式解决方案:

您可以使用名为ti_recover的工具。

使用节点包管理器安装它:

npm install ti_recover

比从终端/命令行使用它

ti_recover apkfile.apk outputdir

答案 2 :(得分:-1)

This Website可能是您最好的选择。它使用一系列技术来反编译.apk文件。

答案 3 :(得分:-1)

您可以尝试制作新文件夹并复制要解码的.apk文件。将此.apk文件的扩展名重命名为.zip(例如,从filename.apk重命名为filename.zip)并保存。在执行之后,现在您可以访问classes.dex文件等。另外,在Asset文件夹中,您将获得资源。虽然您无法通过此过程获取.js文件。您可以使用此http://www.javadecompilers.com/apk网站。但它仍然会给你一个java双编译。