安卓逆向_22( 一 ) --- Xposed【 Android Studio + Xposed 实现简单的 hook 】

 

From:使用渗透测试框架 Xposed 框架 hook 调试 Android APP:https://www.freebuf.com/articles/terminal/56453.html

Xposed框架分析:https://blog.csdn.net/zjx839524906/article/details/81046844

xposted框架 原理

Xposed框架之函数Hook学习:https://www.cnblogs.com/csnd/p/11800719.html

如何看待阿里开源的 dexposed 框架?:https://www.zhihu.com/question/31894163

Epic——ART上的Dexposed(无侵入式Hook框架):https://bbs.pediy.com/thread-222931.htm

【搬砖】无需 Root 也能使用 Xposed:https://www.52pojie.cn/thread-679501-1-1.html

 

Android中Xposed框架篇—利用Xposed框架实现拦截系统方法:http://www.520monkey.com/archives/895

 

关键字:xposed hook:https://www.baidu.com/s?wd=xposed%20hook

 

 

1. 什么是 hook

 

hook 本质就是劫持函数调用,但由于处于 linux 用户态,每个进程都有自己独立的进程空间,所以必须先注入到所要 hook 的进程空间,修改其内存中的进程代码,替换其过程表的符号地址。

Android 中一般通过 ptrace 函数附加进程,然后向远程进程注入 so 库,从而达到监控以及远程进程关键函数挂钩。

Hook 的难点在于寻找函数的入口点、替换函数,这就涉及到函数的连接与加载机制。

Android 中一般存在两种 hook:sdk hook,ndk hook。native hook 的难点在于理解 ELF 文件与学习 ELF 文件,Java 层 Hook 则需要了解虚拟机的特性与 java 上的反射使用。另外还存在全局 hook,即结合 sdk hook 和 ndk hook,xposed 就是一种典型的全局 hook 框架。

 

 

2. Xposed

 

xposed 原理

Xposed 是 Android 平台下的一个著名hook框架,其原理是通过修改替换 /system/bin/app_process 程序控制 zygote 进程,使app_process 在启动过程中加载 xposedBrider.jar 包,从而完成对 zygote 进程以及其创建的虚拟机劫持。基于 xposed 框架可以制作出许多功能强大的模块,其在功能不冲突的情况下同时运作。

 

Xposed 工程

Xposed 源码地址为:https://github.com/rovo89
Xposed 文件下载地址为:http://dl-xda.xposed.info/framework/

工程主要包括 5 部分:

  • Xposed:独立实现了一版 Xposed版的 zyogte,即生成用来替换 /system/bin/app_process 的可执行文件,该文件在系统启动时在 init.rc 中被调用,启动 Zygote 进程,init.zygote.rc 中源码如下:
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-serverclass mainsocket zygote stream 660 root systemonrestart write /sys/android_power/request_state wakeonrestart write /sys/power/state ononrestart restart mediaonrestart restart netd
  • XposedBridge:Xposed 框架的 Java 部分,编译输出为 XposedBridge.jar (编写 hook 需要导入)为开发者提供接口
  • android_art:Xposed 框架的 C++ 部分,对 XposedBridge 的补充
  • XposedTools:框架编译工具,因为 Xposed 和 XposedBridge 编译依赖于 Android 源码,而且还有一些定制化的东西。
  • XposedInstaller:Xposed 插件管理和功能选择应用,界面如下图所示,

    其功能包括启动 Xposed 框架,下载和启用指定插件,或禁用插件等。

 

 

Xposed 框架

 

Xposed Framework 是一个很强大的渗透测试框架,本文中讲述如何用 Xposed Framework hook 一个Android APP中的一个方法并绕过登录验证。

 

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
For Android 5.0 or higher (Lollipop/Marshmallow), these versions don't work! Use this instead:
http://forum.xda-developers.com/showthread.php?t=3034811
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

Xposed Framework 原理简述

Xposed Framewrork 也使用了模块化的扩展模式,可以通过编写模块来满足不同的需求,比如有一个模块叫 3dot menu,可以在每一个 APP 界面中添加一个三点按钮,20MP sensor for Superior Auto 可以扩展 sony 相机,所有 Xposed Framework 能够实现的功能都是通过模块的方式实现的,这里提供了一些例子模块:example modules。

如果想了解更多关于 Xposed Framework 的详情,出门右转 :Xposed Framework

Zygote 是 Android 的核心,每打开一个 app,Zygote 就会 fork 一个虚拟机实例来运行 app,Xposed Framework 深入到了 Android 核心机制中,通过改造 Zygote 来实现一些很牛逼的功能。Zygote 的启动配置在 /init.rc 脚本中,由系统启动的时候开启此进程,对应的执行文件是 /system/bin/app_process,这个文件完成类库加载及一些函数调用的工作。

当系统中安装了 Xposed Framework 之后,会对 app_process 进行扩展,也就是说,Xposed Framework 会拿自己实现的 app_process 覆盖掉 Android 原生提供的 app_process 文件,当系统启动的时候,就会加载由 Xposed Framework 替换过的进程文件,并且,Xposed Framework 还定义了一个 jar 包,系统启动的时候,也会加载这个包:

/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar

环境要求

  • 1. Rooted Device / Emulator (已 root 的手机或者模拟器)
  • 2. Xposed Installer ( 通过 Xposed Installer.apk 安装 xposed
  • 3. Testing Android App

Xposed Framework 就是一个 apk 包,下载到后用下面的命令安装到手机上:

adb install <xposed-installer-you-just-downloaded>.apk

现在安装 Xposed 比较方便,因为 Xposed 作者开发了一个 Xposed Installer App,下载后按照提示傻瓜式安装(前提是 root 手机)。其实它的安装过程是这个样子的:首先探测手机型号,然后按照手机版本下载不同的刷机包,最后把 Xposed 刷机包刷入手机重启就 好。刷机包下载 里面有所有版本的刷机包。

刷机包解压打开里面的 文件 构成是这个样子的:

Xposed 原理简介及其精简化:https://www.jianshu.com/p/6b4a80654d4e

META-INF/                           里面有文件配置脚本 flash-script.sh 配置各个文件安装位置。
system/bin/                         替换zygote进程等文件
system/framework/XposedBridge.jar   jar包位置
system/lib system/lib64             一些so文件所在位置
xposed.prop                         xposed版本说明文件

所以安装 Xposed 的过程就上把上面这些文件放到手机里相同文件路径下。

通过查看文件安装脚本发现:Xposed 就是修改替换了 /system/bin/app_process 文件,app_process 是 zygote 的进程文件。所以 Xposed 通过替换的 zygote 进程实现了控制手机上所有 app 进程。因为所有 app 进程都是由 Zygote fork 出来的。

Xposed 的基本原理是修改了 ART/Davilk 虚拟机,将需要 hook 的函数注册为 Native 层函数。当执行到这一函数时,虚拟机会优先执行 Native层函数,然后再去执行 Java层函数,这样完成函数的 hook。

安装好之后,打开 Xposed ,下面是截图:

Modules 下面是一些可用的模块

 

 

3. 模块实现一个模块

 

一个Xposed模块 就是 一个 Android app。

  • 如果你只是 hook,那么可以选择 add no activity
  • 但是如果有和自身app交互,那么就选择 empty activity

 

实现模块要完成下面几个步骤

  • 1. 实现 IXposedHookLoadPackage接口
  • 2. 指定要 hook 的包名 ( 这里是 com.attify.vuln )
  • 3. 判断当前加载的包是否是指定的包 ( 在接口方法中判断)
  • 4. 指定要 hook 的方法名
  • 5. 实现 beforeHookedMethod方法afterHookedMethod方法 ( hook的具体功能 )

下图是模块的核心代码,上述各项都已经具备

这里的包名是com.attify.vuln,

if(lpparam.packageName.equals("com.attify.vuln"))

上面这一行代码指定了只有当 com.attify.vuln 这个包加载的时候,才会触发一系列的 hook 行为,当这行为触发的时候,de.robv.android.xposed.XposedHelpers 类的 findAndHookMethod 方法就会被调用,并在适当的时候执行前置方法(beforeHookedMethod)和后置方法(afterHookedMethod),这里绕过验证方法只需要让传递到 checkLogin 方法的两个参数相等即可,so easy。当 checkLogin 方法被调用前调用我们实现的模块,并执行前置函数,就可以使得传递给 checkLogin 函数的两个参数相等。

 

最后环节

把我们实现的模块安装到设备上,如下图:

勾选我们刚才安装的模块,并重启系统,等系统重启之后,打开样例 app,在输入密码的地方输入任意字符,因为我们实现的那个模块会执行

param.args[1] = param.args[0];

这行代码,所以输入任意密码都会通过验证,如下图

整个模块执行过程的 log 信息可以在 Xposed log 中查看到,如下图

由日志可以看到,hook 的关键代码 (前置函数) 执行前,checkLogin 方法的两个参数是不同的,而在后置函数执行的时候,两个参数已然相等了:)

[参考来源 attify,译/实习编辑 吴知,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)]shi

 

 

4. 示例

 

示例 1:Android Studio + Xposed 实现简单的 hook

 

************************ 这三个示例重点看,理解 xposed 的 hook **********************************

  • 1. Android Studio + Xposed实现简单的hook(详细篇):https://www.52pojie.cn/thread-873366-1-1.html
  • 2. Xposed 使用经验:https://www.52pojie.cn/thread-728459-1-1.html
  • 3. Android逆向Hook学习——第一篇:Xposed:https://www.52pojie.cn/thread-873013-1-1.html

查看 Xposed 的 log

不能导入模块参考:

       Why Xposed cannot load module?:https://forum.xda-developers.com/xposed/xposed-load-module-t3771921

The thing is you are including Xposed API into your module which is not OK. Yo have to configure the gradle for Xposed lib to be "provided" not "compiled".

*****************************************************************************************************

 

 

示例 2 :crackme 的 Hook 并打印用户名和密码

 

Form:https://www.bilibili.com/video/BV1UE411A7rW?p=73

https://www.52pojie.cn/thread-232658-1-1.html

Android入门破解题目(EX05_01_.apk、Crackme02.apk、CrackMe-F1F2.apk)
        https://blog.csdn.net/m0_38071863/article/details/102931100

第一个Android crackme:https://www.cnblogs.com/flycat-2016/p/5521979.html

示例破解程序

工程目录:

示例 hook 代码:

hook 后,无论输入什么,都可以注册成功,因为hook 修改了返回值,使返回值一直是 true

 

hook 系统函数(拦截系统函数),篡改 IMEI 号:( getDeviceId 函数没有参数 )

 

去优酷广告

 

 

示例 3:Hook 人人直播.apk

 

From( hook解密算法 ):https://www.bilibili.com/video/BV1UE411A7rW?p=75

"人人直播" 登录协议分析:https://www.cnblogs.com/LuLuLuHao

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TED演讲 | 2100年,神经学家如何研究人类大脑?

“本文来源于药明康德微信公众号&#xff08;ID&#xff1a;WuXiAppTecChina&#xff09;”除非我们弄清楚如何在健康人体中获得神经元的电活动&#xff0c;否则不会在理解人类大脑或疾病方面取得任何进展。 Were not going to make any progress towards understanding the hu…

安卓逆向_24( 一 ) --- Hook 框架 frida( Hook Java层 和 so层) )

From&#xff1a;Hook 神器家族的 Frida 工具使用详解&#xff1a;https://blog.csdn.net/FlyPigYe/article/details/90258758 详解 Hook 框架 frida ( 信抢红包 )&#xff1a;https://www.freebuf.com/company-information/180480.html APP逆向神器之Frida【Android初级篇】…

最前线丨新零售结果、AT暗战,今年的618都讲了哪些故事

来源&#xff1a;36Kr今年的618成了巨头们验收新零售成果的好时机。618源于2010年&#xff0c;最初为京东店庆。2013年天猫加入618大促&#xff0c;苏宁、国美紧随其后。此后&#xff0c;618成为电商价格战的战场&#xff0c;也成为全网狂欢的节日。618今年已经走到底第9个年头…

什么是RUP

一、RUP产生的背景 UML能够用来为系统进行面向对象建模&#xff0c;但是并没有指定应用UML的过程&#xff0c;它仅仅是一种语言&#xff0c;它是独立于任何过程的。如果想要成功的应用UML一个好的过程是必要的。合理的过程能够有效的测度工作进度&#xff0c;控制和改善工作效率…

动态 | DeepMind 首次披露旗下专利申请情况

来源&#xff1a;AI科技评论摘要&#xff1a;作为一家顶尖的人工智能研究公司&#xff0c;DeepMind 近年来申请了一堆国际专利&#xff0c;但是具体到专利内容和申请数量就不得而知了。近日&#xff0c;DeepMind首次披露了一系列国际专利&#xff0c;这些专利涉及了现代机器学习…

Frida Android hook

From&#xff1a;https://eternalsakura13.com/2020/07/04/frida/ 开发环境配置 ( IDE 智能提示 frida )&#xff1a; 下载 nodejs&#xff1a; https://nodejs.org/zh-cn/download/npm install types/frida-gum 见过的较好的frida笔记&#xff1a; https://kevinspider.gith…

寒武纪宣布完成B轮融资 整体估值达25亿美元

来源&#xff1a;网易智能摘要&#xff1a;6月20日&#xff0c;芯片领域公司寒武纪宣布完成数亿美元的B轮融资&#xff0c;由中国国有资本风险投资基金、国新启迪、国投创业、国新资本联合领投。中金资本、中信证券投资&金石投资、TCL资本、中科院科技成果转化基金跟投。原…

安卓模拟器 Genymotion 安装

Form&#xff1a;https://www.runoob.com/w3cnote/android-tutorial-genymotion-install.html Linux (Ubuntu) 下的 Android 模拟器&#xff1a;Genymotion&#xff1a;https://blog.csdn.net/qq_25978793/article/details/49923579 Android 模拟器 Genymotion 安装使用教程详解…

辩论届人机大战:IBM新AI完胜人类冠军!

来源&#xff1a;智东西导语&#xff1a;6月18日&#xff0c;IBM的AI系统Project Debater首次与人类进行现场公开辩论。Project Debater能够理解对方观点&#xff0c;并有针对性地做出清晰的反驳&#xff0c;最终成功战胜人类辩手。6月19日消息&#xff0c;美国时间6月18日&…

没有人能阻止程序员将电脑上的一切搬到网页上

操作系统模拟&#xff08;OS Simulator&#xff09; Web QQ Q版的界面&#xff0c;看起来大体上是模拟Mac OS而不是Windows&#xff0c;不过那些桌面Widget又是Windows的展品。也算是取各家所长。使用他的唯一理由可能就是在没有QQ的电脑上用QQ吧 Windows 3.1 Windows 95(感谢大…

一篇文章带你领悟 Frida 的精髓(基于安卓8.1)

转载&#xff08;一篇文章带你领悟Frida的精髓&#xff08;基于安卓8.1&#xff09;&#xff09;&#xff1a;https://www.freebuf.com/articles/system/190565.html 《Frida操作手册》&#xff1a;https://github.com/hookmaster/frida-all-in-one Frida github 地址&#x…

神经元之间是如何形成“社交网络”的

来源&#xff1a;中科院神经科学研究院摘要&#xff1a;我们的大脑中存在着亿万个神经元&#xff0c;在神经科学领域有一个非常重要的问题&#xff0c;就是一个神经元是如何在这亿万个神经元中选择与某一些神经元形成突触联系的。演讲者&#xff1a;中国科学院神经科学研究所徐…

毕马威:2018全球科技创新报告(附PDF下载)

来源&#xff1a;走向智能论坛摘要&#xff1a;日前&#xff0c;毕马威发布《2018全球科技创新报告》&#xff0c;报告显示&#xff0c;我们如今正处在一个科技创新爆发的时代&#xff0c;人工智能、机器人和物联网必将会影响全球的商业&#xff0c;那些不主动去抓住未来趋势的…

GWT(Google Web Tookit) Eclipse Plugin的zip下载地址(同时提供GWT Designer下载地址)

按照Eclipse Help->Install new software->....(这里是官方安装文档&#xff1a;http://code.google.com/intl/zh-CN/eclipse/docs/install-eclipse-3.6.html) 的方法安装失败&#xff0c;界面始终显示Pedding状态&#xff0c;很长时间都没反映&#xff0c;无奈之下&…

《卫报》长文解读机器的崛起:人类越来越无法掌控它们

来源&#xff1a;网易智能摘要&#xff1a;技术正开始以智能和不可预知的方式运作&#xff0c;连它的创造者都无法捉摸。正当机器越来越多地改变全球事件时&#xff0c;我们该如何重新控制它们呢&#xff1f;《卫报》网站今日撰文详述了机器的崛起。技术正开始以智能和不可预知…

Android 逆向分析大全

转载&#xff1a;Android 逆向分析大全&#xff1a;https://www.jianshu.com/p/a12d04fc748f 1. 概述 1.1 分析步骤 通用逆向分析步骤 1. 了解该模块正向编程相关方法2. 使用apktool解密apk&#xff0c;得到资源、jni模块等文件3. 从apk提取出dex文件&#xff0c;使用dex2jar转…

美国智库报告:自动驾驶对社会、经济与劳动力的影响

来源&#xff1a;资本实验室在过去几年中&#xff0c;从政府到企业&#xff0c;自动驾驶的开发和应用已经成为新的投入重点。自动驾驶汽车在道路安全、生产率、燃料消耗和自然环保等方面的预期进步也充分吸引了公众的想象力和注意力。SAFE&#xff08;Securing America’s Futu…

一篇文章带你搞懂 DEX 文件的结构

From&#xff1a;https://blog.csdn.net/sinat_18268881/article/details/55832757 Dex文件格式详解&#xff1a;https://www.jianshu.com/p/f7f0a712ddfe dex文件解析(第三篇)&#xff1a;https://blog.csdn.net/tabactivity/article/details/78950379 深入理解DEX文件格式…

Google AI 研发医疗新模型,预测死亡率比医院高出10%

&#xfeff;&#xfeff;编译 | 姗姗出品 | 人工智能头条&#xff08;公众号ID&#xff1a;AI_Thinker&#xff09;摘要&#xff1a;Google 开发了一种新型算法——读取了这名女性的175,639个数据点——并对死亡风险进行了评估&#xff0c;结果为 19.9%。几天后这位女士去世了…

互联网如何“升级”制造业?《“人工智能+制造”产业发展研究报告》发布

来源&#xff1a;腾讯研究院摘要&#xff1a;过去两年&#xff0c;消费升级、智慧零售、智慧城市等概念成了大众讨论的热点。过去两年&#xff0c;消费升级、智慧零售、智慧城市等概念成了大众讨论的热点。除了这些概念是新经济的增长点之外&#xff0c;另一个原因是当这些概念…