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

Android 反编译在Appcelerator中创建的.apk文件并获取.js文件,android,apk,appcelerator,decompiler,appcelerator-titanium,Android,Apk,Appcelerator,Decompiler,Appcelerator Titanium,是否有任何方法可以使用Appcelerator从compiled.apk创建的代码访问.js文件? 我丢失了一个项目的源代码,现在只有.apk文件,不想重写整个代码。 提前感谢可能是你最好的选择。它使用一系列技术来反编译.apk文件。您可以尝试创建一个新文件夹,并复制到要解码的.apk文件上。将此.apk文件的扩展名重命名为.zip(例如,从filename.apk重命名为filename.zip)并保存它。导出后,现在您可以访问classes.dex文件等。此外,在资产文件夹中,您将获得资源。

是否有任何方法可以使用Appcelerator从compiled.apk创建的代码访问.js文件? 我丢失了一个项目的源代码,现在只有.apk文件,不想重写整个代码。
提前感谢可能是你最好的选择。它使用一系列技术来反编译.apk文件。

您可以尝试创建一个新文件夹,并复制到要解码的.apk文件上。将此.apk文件的扩展名重命名为.zip(例如,从filename.apk重命名为filename.zip)并保存它。导出后,现在您可以访问classes.dex文件等。此外,在资产文件夹中,您将获得资源。尽管按照这个过程无法获取.js文件。你可以使用这个网站。但它仍然会为您提供java双编译

取决于Tianium应用程序的构建方式。如果是仿真器构建,那么是的,您可以获得JavaScript文件。如果apk来自设备或dist build,则否

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

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


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

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

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

AssetCryptImpl文件将包含名为initAssetBytes的私有方法,该方法返回一大块数据作为CharBuffer,其中包含所有资产文件的加密数据。另一个名为initAssets的方法将包含所有原始资产文件名以及每个资产文件的范围

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

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

如果您想要一键式解决方案:

您可以使用名为ti_recover的工具

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

npm install ti_recover
然后从终端/命令行使用它:

ti_recover apkfile.apk outputdir

你看过apk资产文件夹吗?@sbumb:看过。JS文件将不可见。无法反编译已编译的JS文件。@e-info128,无法编译或反编译JavaScript文件。从安全角度来看,最好的办法就是模糊处理。您可以在此处找到更多信息:。混淆是一个不可逆转的过程。完成后,除非您有原始源代码,否则无法返回。Appcelerator是一个hibrid框架,其控制器用Javascript编写,在编译应用程序时,js文件将被编译并使用rsa证书分发。该网站只反编译本机文件,这是一项伟大的工作,但不能从框架中清除所有预编译的资产。对于使用dex2jar、apktool、cfr、adus和ti recover的完整反编译apk i。无法反编译编译的js文件