![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android Hook
Omni-Space
专注Android, Mobile Security and AI
展开
-
全能Android HOOK框架 JNI NATIVE JAVA ART DALVIK
OneHook目前比较流行的几个安卓HOOK方案,都有功能上的欠缺,有的不支持art模式,有的不支持jni层,有的不支持侵入HOOK。所以OneHook诞生了!这是一个同时支持ART和Dalvik两种模式,理论上支持安卓4.0.3以上所有版本,同时支持JAVA和NATIVE层,使用全局注入技术的侵入式HOOK框架。本框架不需要额外的安装,可以静态编译到自己的APP中转载 2018-01-17 07:06:34 · 4951 阅读 · 0 评论 -
android linker 浅析
Android 的加载/链接器linker 主要用于实现共享库的加载与链接。它支持应用程序对库函数的隐式和显式调用。对于隐式调用,应用程序的编译与静态库大致相同,只是在静态链接的时候通过--dynamic-linker /system/bin/linker 指定动态链接器,(该信息将被存放在ELF文件的.interp节中,内核执行目标映像文件前将通过该信息加载并运行相应的解释器程序linker.)转载 2017-09-28 05:10:50 · 558 阅读 · 0 评论 -
ELF文件装载链接过程及hook原理
ELF文件格式解析可执行和可链接格式(Executable and Linkable Format,缩写为ELF),常被称为ELF格式,在计算机科学中,是一种用于执行档、目的档、共享库和核心转储的标准文件格式。ELF文件主要有四种类型:可重定位文件(Relocatable File) 包含适合于与其他目标文件链接来创建可执行文件或者共享目标文件的代码和数据。可执行文件(Execut转载 2017-09-28 05:09:10 · 2597 阅读 · 0 评论 -
全能HOOK框架 JNI NATIVE JAVA ART DALVIK
OneHook目前比较流行的几个安卓HOOK方案,都有功能上的欠缺,有的不支持art模式,有的不支持jni层,有的不支持侵入HOOK。所以OneHook诞生了!这是一个同时支持ART和Dalvik两种模式,理论上支持安卓4.0.3以上所有版本,同时支持JAVA和NATIVE层,使用全局注入技术的侵入式HOOK框架。本框架不需要额外的安装,可以静态编译到自己的APP中转载 2017-06-29 14:46:29 · 3122 阅读 · 0 评论 -
Android插件化原理解析——ContentProvider的插件化
目前为止我们已经完成了Android四大组件中Activity,Service以及BroadcastReceiver的插件化,这几个组件各不相同,我们根据它们的特点定制了不同的插件化方案;那么对于ContentProvider,它又有什么特点?应该如何实现它的插件化?与Activity,BroadcastReceiver等频繁被使用的组件不同,我们接触和使用ContentProvider的转载 2017-06-16 06:51:21 · 626 阅读 · 0 评论 -
Android 插件化原理解析——Service的插件化
在 Activity生命周期管理 以及 广播的管理 中我们详细探讨了Android系统中的Activity、BroadcastReceiver组件的工作原理以及它们的插件化方案,相信读者已经对Android Framework和插件化技术有了一定的了解;本文将探讨Android四大组件之一——Service组件的插件化方式。与Activity, BroadcastReceiver相比,转载 2017-06-16 06:49:23 · 1391 阅读 · 0 评论 -
Android插件化原理解析——广播的管理
在Activity生命周期管理 以及 插件加载机制 中我们详细讲述了插件化过程中对于Activity组件的处理方式,为了实现Activity的插件化我们付出了相当多的努力;那么Android系统的其他组件,比如BroadcastReceiver,Service还有ContentProvider,它们又该如何处理呢?相比Activity,BroadcastReceiver要简单很多——广播的转载 2017-06-16 06:47:30 · 458 阅读 · 0 评论 -
Android 插件化原理解析——插件加载机制
上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务;通过Hook AMS和拦截ActivityThread中H类对于组件调度我们成功地绕过了AndroidMAnifest.xml的限制。但是我们启动的『没有在AndroidManifet.xml中显式声明』的Activity和宿主程序存在于同一个Apk中;转载 2017-06-16 06:44:51 · 709 阅读 · 0 评论 -
Android 插件化原理解析——Activity生命周期管理
之前的 Android插件化原理解析 系列文章揭开了Hook机制的神秘面纱,现在我们手握倚天屠龙,那么如何通过这种技术完成插件化方案呢?具体来说,插件中的Activity,Service等组件如何在Android系统上运行起来?在Java平台要做到动态运行模块、热插拔可以使用ClassLoader技术进行动态类加载,比如广泛使用的OSGi技术。在Android上当然也可以使用动态加载技术,转载 2017-06-16 06:41:31 · 748 阅读 · 0 评论 -
Android插件化原理解析——Hook机制之Binder Hook
Android系统通过Binder机制给应用程序提供了一系列的系统服务,诸如ActivityManagerService,ClipboardManager, AudioManager等;这些广泛存在系统服务给应用程序提供了诸如任务管理,音频,视频等异常强大的功能。插件框架作为各个插件的管理者,为了使得插件能够无缝地使用这些系统服务,自然会对这些系统服务做出一定的改造(Hook),使得插件的转载 2017-06-16 06:40:04 · 609 阅读 · 0 评论 -
Android插件化原理解析——Hook机制之动态代理
使用代理机制进行API Hook进而达到方法增强是框架的常用手段,比如J2EE框架Spring通过动态代理优雅地实现了AOP编程,极大地提升了Web开发效率;同样,插件框架也广泛使用了代理机制来增强系统API从而达到插件化的目的。本文将带你了解基于动态代理的Hook机制。阅读本文之前,可以先clone一份 understand-plugin-framework,参考此项目的dynamic-转载 2017-06-16 06:38:13 · 586 阅读 · 0 评论 -
浅谈android hook技术
前言在测试android过程中,能对函数进行hook能帮助更加深入的进行测试,本文简单介绍了hook框架xposed和frida,从简单的小例子做了简单的演示,算是自己的学习的过程,是个入门的过程。xposed框架xposed,主页:http://repo.xposed.info/module/de.robv.android.xposed.insta转载 2017-04-24 16:06:33 · 2020 阅读 · 0 评论 -
Xposed注入实现分析及免重启定制
Xposed的实现解析Xposed简介Xposed已经作为Android的Java层Hook大哥好多年了,不仅仅是安全研究者和逆向工程师手中的神器,还拥有着很多的插件开发者,在官方仓库收录的插件也已经超过了1000+个,而其服务的用户以各搞机论坛用户为主,也是不尽其数。Xposed的代码是完全开源的,并且代码量也不算很大,对于安全研究者来说呢,我觉得研究一下Xposed转载 2018-01-17 07:12:46 · 2332 阅读 · 0 评论 -
无需Root也能使用Xposed!
Xposed是Android系统上久负盛名的一个框架,它给了普通用户任意 DIY 系统的能力;比如典型的微信防撤回、自动抢红包、修改主题字体,以及模拟位置等等等等。不过,使用Xposed的前提条件之一就是需要Root。随着Android系统的演进,这一条件达成越来越难了;那么,能不能不用Root就可以享用Xposed的功能呢?我们想一下,Xposed为什么需要Root?从现在的实现来看,因为X...转载 2018-01-17 07:28:09 · 24261 阅读 · 2 评论 -
进阶Frida--Android逆向之动态加载dex Hook(三)
前段时间看到有朋友在问在怎么使用frida去hook动态加载的dex之类的问题,确实关于如何hook动态加载的dex,网上的资料很少,更不用说怎么使用frida去hook动态加载的dex了。(frida的官方文档已经无力吐槽...)后来偶然的情况下发现了一道CTF题目可以作为很好的案例,所以花了很多心思将文章写下来分享给大家,涉及的内容比较多,我打算用上下篇将frida hook动态加载的dex的...转载 2018-08-09 07:09:39 · 2499 阅读 · 0 评论 -
初识Frida--Android逆向之Java层hook (二)
目录初识Frida--Android逆向之Java层hook (二) apk的安装与分析 流程分析 hook点分析 JavaScript代码构造与执行 0x00 hook getMac() 0x01 计算秘钥Ke...转载 2018-08-09 07:07:56 · 1095 阅读 · 0 评论 -
Android开源框架源码鉴赏:VirtualAPK
文章目录一 VirtualAPK的初始化流程二 VirtualAPK的的加载流程三 VirtualAPK启动组件的流程3.1 Activity3.2 Service3.3 Broadcast Receiver3.4 Content Provider更多Android开源框架源码分析文章请参见Android open framwork analysis。从2012年开...转载 2018-04-08 04:00:31 · 566 阅读 · 0 评论 -
滴滴开源Android插件化框架VirtualAPK原理分析
概述 滴滴出行公司的首个对外开源项目 - VirtualAPK。地址:github.com/didi/Virtua… 滴滴自行研发了这款插件化框架,功能全面、兼容性好,还能够适用于有耦合的业务插件,这就是VirtualAPK存在...转载 2018-04-07 13:29:03 · 282 阅读 · 0 评论 -
Hook技术--Activity的启动过程的拦截
1、寻找Hook点的原则Android中主要是依靠分析系统源码类来做到的,首先我们得找到被Hook的对象,我称之为Hook点;什么样的对象比较好Hook呢?自然是容易找到的对象。什么样的对象容易找到?静态变量和单例;在一个进程之内,静态变量和单例变量是相对不容易发生变化的,因此非常容易定位,而普通的对象则要么无法标志,要么容易改变。我们根据这个原则找到所谓的Hook点。2、寻找Hook点通常点击一...转载 2018-04-06 12:38:01 · 302 阅读 · 0 评论 -
aapt2 适配之资源 id 固定
前言资源id的固定在热修复和插件化中极其重要。在热修复中,构建patch时,需要保持patch包的资源id和基线包的资源id一致;在插件化中,如果插件需要引用宿主的资源,则需要将宿主的资源id进行固定,因此,资源id的固定在这两种场景下是尤为重要的。而在Android Gradle Plugin 3.0.0中,默认开启了aapt2,原先aapt的资源固定方式public.xml也将失效,必须寻找一...转载 2018-04-02 14:16:06 · 2998 阅读 · 0 评论 -
replugin源码解析之replugin-host-gradle(宿主的gradle插件)
前言replugin-host-gradle 是 RePlugin 插件框架中的宿主gradle插件,主要用于在宿主应用的编译期常规构建任务流中,插入一些定制化的构建任务,以便实现自动化编译期修改宿主应用的目的。RePlugin 是一套完整的、稳定的、适合全面使用的,占坑类插件化方案,由360手机卫士的RePlugin Team研发,也是业内首个提出”全面插件化“(全面特性、全面兼容、全面使用)的...转载 2018-04-09 12:38:50 · 596 阅读 · 0 评论 -
replugin源码解析之replugin-plugin-gradle(插件的gradle插件)
前言replugin-plugin-gradle 是 RePlugin 插件框架中提供给replugin插件用的gradle插件,是一种动态编译方案实现。主要在插件应用的编译期,基于Transform api 注入到编译流程中, 再通过Java字节码类库对编译中间环节的 Java 字节码文件进行修改,以便实现编译期动态修改插件应用的目的。RePlugin 是一套完整的、稳定的、适合全面使用的,占坑...转载 2018-04-09 12:38:46 · 992 阅读 · 0 评论 -
[Android]用架构师角度看插件化(1)-Replugin入门剖析
多谢一直以来的支持,组件化的内容,应该会有一段时间不再更新,一些非常关键的技术将会在我将要出版的组件化书籍中提及。组件化模块化的开发适合于中小型企业的业务叠加,和代码重用。而插件化的开发将组件化和模块的功能完全解耦出来。在国内的开发环境,插件化是用户体验和开发周期的产物,我们要做的是顺应潮流,正如我组件化&模块化&插件化演进中分析一样。Replugin,滴滴出品的VirtualAp...转载 2018-04-09 12:38:41 · 299 阅读 · 0 评论 -
[Android]用架构师角度看插件化(2)-Replugin 唯一hook点
Replugin,为何我选择要研究这个的插件呢?很大的原因是因为它的介绍中说明,他只会有一个hook点。一.Hookhook点是什么?我们入门Android的时候,一定会看到过这个图,但是你确定深刻了解到这个图的吗?我们试着换着思维,用组件化的角度去看这张图,你会发现其层级依赖关系,与组件化的工程是非常类似的。(当然你看得角度不同,我只能说是类似)倘若你用插件的思想来看,我们上层的众多应用(App...转载 2018-04-08 12:46:31 · 403 阅读 · 0 评论 -
[Android]用架构师角度看插件化(3)-Replugin 需要占坑跳转?
一.占坑什么是占坑?为什么要占坑?Android插件化中,从一个插件Activity跳转到不同插件的Activity的时候,是否可以能正常跳转成功?声明Activity需要配置什么?声明Activity是需要AndroidManifest中声明,但是插件是依赖于宿主的,插件声明了Activity,但是插件的AndroidManifest信息,是无法动态配置到宿主里面的。那AndroidManife...转载 2018-04-08 12:44:39 · 634 阅读 · 0 评论 -
企业壳的反调试及Hook检测分析
1.写在开始最近在学习梆梆壳,在调试的过程中遇到了反调试,很是苦恼,而且每次调试都会被中断,朋友发了篇帖子【1】介绍了其中的一个反调,学习后收获颇多,给我指明了方向,接下来再对其他反调试进行补充,若有疏漏之处请各位大佬批评指正。2.反调试之时间线程检测启动调试后是对帖子【1】的验证,过程大致如下:运行brpt.py后一路F9,...#下断点# 内存中获取转载 2018-02-03 16:09:22 · 1770 阅读 · 0 评论 -
利用FRIDA攻击Android应用程序(二)
在本系列文章的第一篇中,我们已经对Frida的原理进行了详细的介绍,现在,我们将演示如何通过Frida搞定crackme问题。有了第一篇的内容作为基础,理论上讲这应该不是什么难事。如果你想亲自动手完成本文介绍的实验的话,请下载 OWASP Uncrackable Crackme Level 1 (APK)BytecodeViewerdex2jar当然转载 2017-04-24 16:04:39 · 1361 阅读 · 0 评论 -
利用FRIDA攻击Android应用程序(一)
前言直到去年参加RadareCon大会时,我才开始接触动态代码插桩框架Frida。最初,我感觉这玩意还有点意思,后来发现这种感觉是不对的:应该是非常有意思。您还记得游戏中的上帝模式吗?面对本地应用程序的时候,一旦拥有了Frida,也就拥有了这种感觉。在这篇文章中,我们重点介绍Frida在Android应用方面的应用。在本文的第二篇中,我们将会介绍如何利用Frida来应付Android环境下转载 2017-04-24 16:01:34 · 4275 阅读 · 2 评论 -
Android上玩玩Hook?
在中国互联网这片弱肉强食的丛林中,封闭抄袭是垄断巨头的通行证,创新是弱小创业者的墓志铭。了解Hook还没有接触过Hook技术读者一定会对Hook一词感觉到特别的陌生,Hook英文翻译过来就是“钩子”的意思,那我们在什么时候使用这个“钩子”呢?我们知道,在Android操作系统中系统维护着自己的一套事件分发机制。应用程序,包括应用触发事件和后台逻辑处理,也是根据事件流程一步步的向转载 2016-03-09 09:34:43 · 548 阅读 · 0 评论 -
美团Android资源混淆保护实践
前言Android应用中的APK安全性一直遭人诟病,市面上充斥着各种被破解或者汉化的应用,破解者可以非常简单的通过破解工具就能对一个APK进行反编译、破解、汉化等等,这样就可以修改原有代码的逻辑、添加新代码、添加或修改资源、或者更有甚者植入病毒等等,从而破坏原有APK的安全和用户体验,最终伤害到用户和原有的开发者。而事物都是有两方面的,有矛就有盾,针对Android应用安全的各种方案应运而转载 2016-03-07 18:53:24 · 477 阅读 · 0 评论 -
美团Android DEX自动拆包及动态加载简介
概述作为一个android开发者,在开发应用时,随着业务规模发展到一定程度,不断地加入新功能、添加新的类库,代码在急剧的膨胀,相应的apk包的大小也急剧增加, 那么终有一天,你会不幸遇到这个错误:生成的apk在android 2.3或之前的机器上无法安装,提示INSTALL_FAILED_DEXOPT方法数量过多,编译时出错,提示: Conversion to Dalvik for转载 2016-03-07 18:50:55 · 469 阅读 · 0 评论 -
Android 热修复 HotFix 混淆apk生成patch包方案
android 热修复框架目前了解的有qq空间分包方案的HotFix 和Nuwa,还有阿里开源的AndFix和Dexposed.https://github.com/dodola/HotFixhttps://github.com/jasonross/Nuwahttps://github.com/alibaba/AndFixhttps://github.com/alibaba/d转载 2016-03-07 18:39:31 · 959 阅读 · 0 评论 -
Android 插件框架实现思路及原理
插件框架实现思路及原理一、技术可行性a) apk的安装处理流程i. apk会copy到/data/app;ii. 解压apk中的class.dex,并对其进行优化,获得odex(即JIT)。最后保存到/data/dalvik_cache;iii. 还有一些权限和包信息,会缓存到/data/system中的packages.list和packages.xml中。b)转载 2016-03-07 18:28:36 · 398 阅读 · 0 评论 -
Android框架攻击之Fragment注入
为了适应越来越大的设备屏幕,Android在3.X后引入了Fragment概念,作用是可以在一个屏幕上同时显示多个Activity,以达到充分利用屏幕的目的。关于Fragment的使用说明,可以阅读《Android Fragment完全解析,关于碎片你所需知道的一切》。其中,Fragment有一个很强大的功能,就是可以动态加载。这样可以让整个界面的开发更加灵活,可以根据不同的场景动态加加载不同转载 2016-03-07 18:25:58 · 944 阅读 · 0 评论 -
进击的Android Hook 注入术《五》
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[-]继续BinderProxy原理获取AMS引用获取JavaBBinder替换mObject对象示例四最后继续在Android,几乎所有的IPC通讯都是通过Binder,可以说Binder在Android中占据着非常重要的地位。IPC通讯一般涉及client和server两部分,转载 2016-03-07 18:23:15 · 734 阅读 · 0 评论 -
进击的Android Hook 注入术《四》
目录(?)[-]继续注入之后示例三输出最后继续在前《一》、《二》、《三》里已经把注入的技术介绍完了,这章开始说注入之后需要做的事情。如果对注入技术已经比较熟悉了,那么可以直接看本章,否则建议先把前三章阅读一遍会比较好。注入之后完成了注入,那只是万里长征的第一步。众所周知,Android的应用进程,都是由Zygote孵化的子进程,每个进程都转载 2016-03-07 18:22:01 · 642 阅读 · 0 评论 -
进击的Android Hook 注入术《三》
目录(?)[-]继续Component Injection原理示例二comdemohostcomdemoinject绕过ClassLoader双亲委托输出最后继续在《二》详细介绍了通过ptrace实现注入的技术方案,在这个章节里,我再介绍一种Android上特有的注入技术,我命其名为——Component Injection。顾名思义,这种方式是转载 2016-03-07 18:20:26 · 1661 阅读 · 0 评论 -
进击的Android Hook 注入术《二》
目录(?)[-]继续注入分类本质目的过程示例一Host代码libmysoso代码调用示例代码继续在《一》里,我把基本思路描述了一遍,接下为我们先从注入开始入手。注入分类我们平时所说的代码注入,主要静态和动态两种方式静态注入,针对是可执行文件,比如平时我们修改ELF,DEX文件等等,相关的辅助工具也很多,比如转载 2016-03-07 18:19:08 · 714 阅读 · 0 评论 -
进击的Android Hook 注入术《一》
目录(?)[-]写在前面短信拦截场景问题解决方案问题来了基本思路写在前面这个系列本来是在公司的一个分享,内容比较多,所以就把这个PPT重新组织整理成博客,希望对大家学习有所帮助。我会先以一个”短信拦截“作为例子,抛出问题,并提出了一种基于”注入“的技术方案达到提高拦截优先级,接着再重点讲解注入的技术细节。最后,我会跟大家分享一个我业余时间开发注入框架转载 2016-03-07 18:16:58 · 734 阅读 · 0 评论 -
Android Hook Java的的一个改进版本
目录(?)[-]Hook Java的的一个改进版本改进点一更简单地修改java方法为本地方法改进点二方法回调避免线程安全问题最后Hook Java的的一个改进版本《注入安卓进程,并Hook java世界的方法》这篇好文相信大家都看这,里面所提到的方法估计大家也都试过。不过里面的所用的方法,我发现有两个可以改进的地方。改进点一:更简单地修改java方法为本地方转载 2016-03-07 18:15:42 · 947 阅读 · 0 评论