转载

Lobotomy:Android逆向工程框架(Part1)

如果大家有关注之前发过的有关Android安全方向的文章,那么rotlogix你应该不会陌生。他热衷于移动安全事业,玩二进制的大牛,该系列文章是对其自己编写的Lobotomy框架的一份指南,该框架也可以说是rotlogix对技术的沉淀吧!

在他的个人博客之中不乏许多适合新人上手的文章,之前我也有翻译过几篇:

《 滥用Android ClipData会有什么后果 》

《 UC浏览器:ZipInputStream引发的思考 》

概述

在该系列文章中,我们会涉及到 Lobotomy 所拥有的许多不同的特性,以及当我们对Android应用进行评估和逆向分析时该如何去使用这款工具。

加载

Lobotomy的设计初衷就是让使用者能够将一个Android应用无缝的加载到它的控制台环境,无须退出Lobotomy就能够执行不同的操作。这是通过提供一个全局实例将应用加载到整个框架中实现的,当一个新的应用加载进来就会替换之前的应用,在我平常的工作中就经常用到这个Loader。

这个Loader有以下功能:

加载包含classes.dex的APK文件 加载不包含classes.dex的APK文件 仅加载classes.dex

Lobotomy尝试说明每个你将会使用到的特性,例如你仅仅加载一份classes.dex文件,你是不能例举组件的。因为例举组件是从位于APK文件中的AndroidManifest.xml推导出来的。

通常,如果你从Google Play商店中下载一份Android应用,使用下面这个命令应该非常方便:

(lobotomy) loader /Users/rotlogix/Android-Browser-Research/thunder-web-browser/apk/thunder-browser.apk [2015-12-26 10:36:30.149971] Loading : /Users/rotlogix/Android-Browser-Research/thunder-web-browser/apk/thunder-browser.apk

然而,假设你只是想对classes.dex进行操作,我们可以先解压APK文件,之后发送以下命令:

. .. ...  extracting: res/drawable-xxhdpi/menu_quit_pressed.png  extracting: res/drawable-xxhdpi/menu_screenshot_normal.png  extracting: res/drawable-xxhdpi/menu_screenshot_pressed.png  extracting: res/drawable-xxhdpi/menu_setting_normal.png  extracting: res/drawable-xxhdpi/menu_setting_pressed.png  extracting: res/drawable-xxhdpi/navigator_bg_rectangle_with_corner.9.png  extracting: res/drawable-xxhdpi/notify_search.png  extracting: res/drawable-xxhdpi/notify_search_icon.png  extracting: res/drawable-xxhdpi/powered_by_google_dark.png  extracting: res/drawable-xxhdpi/powered_by_google_light.png  extracting: res/drawable-xxhdpi/setting_back.png  extracting: res/drawable-xxhdpi/setting_icon_right.png  extracting: res/drawable-xxhdpi/website_delete.png   inflating: classes.dex
(lobotomy) loader dex /Users/rotlogix/Android-Browser-Research/thunder-web-browser/apk/classes.dex [2015-12-26 10:40:15.757531] Loading : /Users/rotlogix/Android-Browser-Research/thunder-web-browser/apk/classes.dex

现在就让我们执行一个请求加载APK操作,而不只是classes.dex:

(lobotomy) loader dex /Users/rotlogix/Android-Browser-Research/thunder-web-browser/apk/classes.dex [2015-12-26 10:40:15.757531] Loading : /Users/rotlogix/Android-Browser-Research/thunder-web-browser/apk/classes.dex (lobotomy) profiler [2015-12-26 10:41:28.451238] Module not available! [2015-12-26 10:41:28.451280] You cannot run the profiler module  without a loaded APK

Lobotomy迅速反应,让你得知当前加载的文件类型在该模块下是不能够使用的。现在如果你只想对classes.dex应该该模块,为了执行该操作Lobotomy将继续按照要求进行:

(lobotomy) surgical [2015-12-26 10:48:44.717386] Available functions: [2015-12-26 10:48:44.717422] storage [2015-12-26 10:48:44.717432] crypto [2015-12-26 10:48:44.717438] logging [2015-12-26 10:48:44.717444] ipc [2015-12-26 10:48:44.717449] zip [2015-12-26 10:48:44.717454] native [2015-12-26 10:48:44.717459] socket [2015-12-26 10:48:44.717464] ssl [2015-12-26 10:48:44.717470] certkey [2015-12-26 10:48:44.717475] Enter 'quit' to exit [2015-12-26 10:48:44.717481] Enter 'list' to show available functions [2015-12-26 10:48:44.717487] Enter function:

操作演示

Lobotomy:Android逆向工程框架(Part1)

总结

在Part1中,我们讲解了在开始评估以及逆向分析之前,如何加载不同的文件类型到Lobotomy。在Part2中,我们会介绍Lobotomy为应用程序分享,以及列举所提供的模块。

*参考来源: rotlogix ,编译/FB小编鸢尾,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

正文到此结束
Loading...