如果大家有关注之前发过的有关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:
操作演示
总结
在Part1中,我们讲解了在开始评估以及逆向分析之前,如何加载不同的文件类型到Lobotomy。在Part2中,我们会介绍Lobotomy为应用程序分享,以及列举所提供的模块。
*参考来源: rotlogix ,编译/FB小编鸢尾,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)