-
-
[翻译]对一个安卓应用的逆向
-
发表于: 2020-9-4 18:22 16769
-
原文链接 https://epic.blog/reverse-engineering/2020/07/27/reverse-engineering-android-app.html
翻译:看雪翻译小组
ID:Linger
在这个可爱而炎热的七月,我想带你踏上我的逆向工程之旅,穿越Android的高山和反编译的山谷。倒上一杯冷饮,享受这次旅行。
接下来我想演示如何逆向工程一个Android应用程序,以及你可以使用什么工具来实现这一点——即使没有Android手机。
这个演示使用的应用程序叫做Krk Bike,这是一个可以从谷歌Play store下载的移动应用程序,它会向你展示克罗地亚Krk岛上的许多自行车道。我想在一张整洁的地图上看到所有的自行车道。我们怎么能从这个应用程序中得到这些数据呢?
当在手机上打开这个应用程序时,它看起来是这样的:
这款应用本身就有详细的路线,包括路径、图片和联系人,它甚至还有一个小的“导航模块”,可以在你行走的过程中引导路线。这是一款相当不错的漂亮的应用程序。显然,亲爱的读者,你会在某个时候选择你自己的目标,但是这个对我来说很有趣。这绝对是尽可能熟悉这个应用程序的良好第一步。
首先,你需要了解Android应用程序是如何构建和分发的。通常,Android开发者在Android Studio的帮助下开发自己的应用程序,并对其进行编译、签名,然后将“apks”上传到谷歌Play Store。关于为初学者构建Android应用程序并将其提供给最终用户的过程的更详细的解释可以在Android文档页面(创建一个Android项目)中找到。
等一下,你可能想问✋如何应用程序编译,甚至他们如何运行?
既然你已经问了。简而言之。通常,Android应用程序的编译是分几个阶段进行的。第一阶段;根据您的源代码,可以用Java编译器或Kotlin编译器编译成Java字节码。这些编译器会吐出.class文件。然后,.class文件被送入DX (DEX编译器- d8)。DEX编译器吐出运行在Android设备上的DEX)字节码,它允许你在应用程序代码中使用Java 8语言特性。DEX字节码是Dalvik虚拟机(简称DVM)实际运行你的应用程序的东西。
现在;如果你了解Android的话。你可能会说:“对不起,Oto(博主名字)!”旧新闻!自从Kitkat之后DVM就被淘汰了。“你是对的!”Dalvik已经被一些更神奇的东西所取代——叫做Android Runtime(简称ART)。但核心概念是相同的,只是更好而已。
好吧;构建安卓应用的下一步是将其打包到APK中。An Android Package Kit(简称APK)是Android操作系统用于分发和安装移动应用程序的包文件格式。可以把它看作一个附加了更多元信息的包,可看作时一个复杂化的Java .jar或Debian的.deb包。
在开发者成功构建这些APK后,他们会将其“推送”到设备或谷歌Play商店。如果继续这个开发过程,那通常是通过adb在命令行(或Android Studio将在后台使用类似的东西)。如果是生产版本,则开发者会用他们的密钥通过Android Studio或通过CLI直接使用apksigner签署这些东西。Android系统使用证书作为一种识别应用程序作者并在应用程序之间建立信任关系的手段。
好了,现在你知道了应用程序是如何构建、打包和推送到存储的……
有多种方法可以获得任何Android应用程序的APK。最简单的方法是使用收集这些APK的多个镜像站点中的一个。有时他们会自动处理,有时——正如我通过优步谷歌(uber)搜索技巧发现的那样——他们只是让人手动抓取 APKs。举几个例子如:apkpure.com, evozi APK Downlowder和apkmirror.com。这些网站没有什么缺点;最重要的是,并不是所有的apk在谷歌游戏商店是可用的。需要注意的是这是一个镜像站点,没有办法确保这些apk和应用程序是没有被修改的。尽管很困难,但注入恶意代码并通过这些或类似的站点传播是可能的。
哦,是的。那样的话,你可以做我做的事。你可以
1:在您的机器上安装Oracle VirtualBox。
2:从OSBoxes.org获得Android-x86操作系统映像(点击这个链接)。
3: 启动Android 镜像,然后进入谷歌play商店,…
4:然后安装你想看的应用程序。
5:应用程序安装后,下载一个名为MyAppSharer的应用程序。
我将目标应用程序的APK存储在/storage/emulated/0/中
6: 此时,您可以在您的机器上安装Android工具,然后使用adb通过以下命令将apk拉到主机上。或者你可以创造性地在模拟器中通过MyAppSherer app给自己发apk。(lol)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
- [翻译]对一个安卓应用的逆向 16770
- [翻译]DNS 隧道滥用 10484
- [翻译]Windows本地管理访问和组策略 6214
- [翻译]通过SSL证书来曝出Tor服务的公共IP地址 5983
- [翻译]针对微软活动目录的高级攻击:检测和缓解 6982