【发布时间】:2018-01-03 08:55:42
【问题描述】:
我下载并安装了一个 Android 应用程序,我还提取了 APK,
apk 文件中是否有某种方法可以告诉您使用什么编程语言编写程序?
有什么工具可以帮助解决这个问题吗?
哪些语言可以确定,哪些不能?
【问题讨论】:
-
许多(全部?)jvm 语言都带来了它们的 stdlib 扩展。例如,如果您看到
kotlin.*命名空间的用法,则很有可能这里使用了 kotlin。
我下载并安装了一个 Android 应用程序,我还提取了 APK,
apk 文件中是否有某种方法可以告诉您使用什么编程语言编写程序?
有什么工具可以帮助解决这个问题吗?
哪些语言可以确定,哪些不能?
【问题讨论】:
kotlin.* 命名空间的用法,则很有可能这里使用了 kotlin。
通常大多数 android 应用程序都是使用以下技术构建的:---
要确定技术,需要先使用this link反编译应用程序
然后寻找“资产”文件夹。通常,资产文件夹应该出现在应用程序层次结构的最顶部。
那么你可以通过以下预测来判断应用技术:--
【讨论】:
assets文件夹是空的!
您可以进行逆向工程:(https://www.apkdecompilers.com/ 或 http://www.javadecompilers.com/apk)反编译 apk 并查看代码及其编程语言。
【讨论】:
获取具体技术的方法不是很准确,但是通过adb可以查看应用的Activity名称。
通常当您打开不同的活动或页面时,使用本机技术时,活动名称会有所不同,如下所示(Playstore 应用):
而在 Ionic 等混合应用程序中,它通常捆绑为一个,因此唯一的活动将是 MainActivity... 就像使用颤振制作的 Hamilton 应用程序一样:
【讨论】: