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

2015-12-28 +6 236750人围观 ,发现 5 个不明物体 头条工具

如果大家有关注之前发过的有关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)

发表评论

已有 5 条评论

取消
Loading...

特别推荐

推荐关注

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php