移动安全入门教程--Xposed篇

移动安全入门教程--Xposed篇

Written By Killshadow Rights

移动安全入门教程--Xposed篇一、术语介绍1. Xposed2. Zygote3.Hook技术4. 反射二、环境准备三、编写第一个Xposed插件1. 用AS新建一个空项目

一、术语介绍

1. Xposed

image

Xposed Framework 为来自国外XDA论坛(forum.xda-developers.com)的rovo89自行开发的一个开源的安卓系统框架。

GitHub地址

能够让Android设备在没有修改源码的情况下修改系统中的API运行结果可实现对java层任意HOOK,比如修改IMEI、IMSI、ICCID这些全球唯一的身份标志。HOOK三方应用:微信、QQ、实现抢红包、自动回复。

Xposed框架的原理是修改系统文件,替换了/system/bin/app_process可执行文件,在启动Zygote时加载额外的jar文件(/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar),并执行一些初始化操作(执行XposedBridge的main方法)。然后我们就可以在这个Zygote上下文中进行某些hook操作。

There is a process that is called "Zygote". This is the heart of the Android runtime. Every application is started as a copy ("fork") of it. This process is started by an /init.rc script when the phone is booted. The process start is done with /system/bin/app_process, which loads the needed classes and invokes the initialization methods.

This is where Xposed comes into play. When you install the framework, an extended app_process executable is copied to /system/bin. This extended startup process adds an additional jar to the classpath and calls methods from there at certain places. For instance, just after the VM has been created, even before the main method of Zygote has been called. And inside that method, we are part of Zygote and can act in its context.

The jar is located at /data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar and its source code can be found here. Looking at the class [XposedBridge] (https://github.com/rovo89/XposedBridge/blob/master/src/de/robv/android/xposed/XposedBridge.java), you can see the main method. This is what I wrote about above, this gets called in the very beginning of the process. Some initializations are done there and also the modules are loaded (I will come back to module loading later).

项目 说明
Xposed Xposed框架的native部分(主要是改性app_process二进制文件)
XposedInstaller Xposed框架的Android端本地管理,环境架构搭建,以及第三方module资源下载的工具。
XposedBridge Xposed向开发者提供的API与相应的工具类库

2. Zygote

Zygote本身是一个应用层的程序,和驱动、内核模块之类的没关系,可以认为是Android framework大家族的祖先。详见

在Android中,zygote是整个系统创建新进程的核心进程。zygote进程在内部会先启动Dalvik虚拟机,继而加载一些必要的系统资源和系统类,最后进入一种监听状态。

在之后的运作中,当其他系统模块(比如AMS)希望创建新进程时,只需向zygote进程发出请求,zygote进程监听到该请求后,会相应地fork出新的进程,于是这个新进程在初生之时,就先天具有了自己的Dalvik虚拟机以及系统资源。

zygote进程是由init进程启动起来,由init.rc 脚本中关于zygote的描述可知:zygote对应的可执行文件就是/system/bin/app_process,也就是说系统启动时会执行到这个可执行文件的main()函数里。

3.Hook技术

Hook 英文翻译过来就是「钩子」的意思,那我们在什么时候使用这个「钩子」呢?在 Android 操作系统中系统维护着自己的一套事件分发机制。应用程序,包括应用触发事件和后台逻辑处理,也是根据事件流程一步步地向下执行。而「钩子」的意思,就是在事件传送到终点前截获并监控事件的传输,像个钩子钩上事件一样,并且能够在钩上事件时,处理一些自己特定的事件。

image

Hook 的这个本领,使它能够将自身的代码「融入」被勾住(Hook)的程序的进程中,成为目标进程的一个部分。API Hook 技术是一种用于改变 API 执行结果的技术,能够将系统的 API 函数执行重定向。在 Android 系统中使用了沙箱机制,普通用户程序的进程空间都是独立的,程序的运行互不干扰。这就使我们希望通过一个程序改变其他程序的某些行为的想法不能直接实现,但是 Hook 的出现给我们开拓了解决此类问题的道路。当然,根据 Hook 对象与 Hook 后处理的事件方式不同,Hook 还分为不同的种类,比如消息 Hook、API Hook 等。

转载自:https://www.jianshu.com/p/4f6d20076922 作者:落英坠露

4. 反射

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制(注意关键词:运行状态)换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。

详见

二、环境准备

  1. 一部安卓机(已经获得root权限,并开启开发者模式,usb调试选项打开)或者虚拟机

  2. 安装虚拟机

    推荐海马(画质高,清晰度好,流畅),夜神(用户多),接下来以海马安装为例(看到有个师傅一直搞安卓虚拟机, 于是我也想掺和帮帮忙, 费了不少功夫...移动安全玩下来的,都是爱折腾的大佬啊!)

    官方链接 百度云链接(密码:md0g)

    1. 安装好之后首先修改配置:
    image
    2. 进入模拟器里的设置,连续多次点击"版本号",进入开发者模式,并打开"开发者选项":

在设置里配置

进入开发者选项打开usb调试

3. 找到海马模拟器安装目录,能看到adb.exe:
4. 打开powershell或cmd,到该目录下,运行adb.exe(千万不要用自己安装的adb!!!否则进不了adb shell, 原因是:端口冲突 or 版本不一样. 有位师傅重新下载了一个adb.exe替代掉原来的自己安装的adb,有点麻烦不推荐)

  1. 安装APK

    XposedInstaller.apk(密码:u65c)

  2. 安装Android Studio(后续编写Xposed插件需用)

    官方下载:http://www.android-studio.org

  3. Xposed Framework

    XposedBridgeApi-20150213.jar(密码:9odw) 官网下载

    XposedMain.java(密码:aqg3)

  4. 安装IDA7.0

    IDA_Pro_v7.0and_Hex-Rays_Decompiler(ARMx64,ARM,x64,x86).zip(密码:vuus)

  5. 安装AndroidKiller

    AndroidKiller_v1.3.1.zip(密码:dl2k)

  6. 额外推荐一个很基情的"绿色"网站:

    http://www.androiddevtools.cn

三、编写第一个Xposed插件

1. 用AS新建一个空项目

一路next下去,进入AS,将下载好的XposedBridgeApi-20150213.jar导入到lib。

推荐链接

https://www.2cto.com/kf/201609/550043.html

https://www.csdn.net/article/2015-08-14/2825462

http://blog.csdn.net/niubitianping/article/details/52571438

推荐书籍

移动应用安全

链接:https://pan.baidu.com/s/1o9DEzrG 密码:55m4

linux二进制分析

暂无扫描版,想往深的学,买实体书吧

Android开发书籍推荐:从入门到精通系列学习路线书籍介绍

https://www.diycode.cc/wiki/androidbook

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,044评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,650评论 2 59
  • 安全博客 > 技术研究 > 浅谈android hook技术 浅谈android hook技术 您当前的位置:...
    光剑书架上的书阅读 6,125评论 0 8
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    wgl0419阅读 6,256评论 1 9
  • 在接近明日的最后几分钟,我才从困境中醒来,一时恍惚间想起了今天没有记下些什么。连着两天下雨未出门,已然感觉隔绝于世...
    Me0327阅读 402评论 0 0