xposed学习四:总结
xposed的学习要告一段落,接下来去学习android apk和so加固,这里我们回顾下xposed吧。
xposed是个hook框架,它是基于dalvik(确切来说是目前的版本,作者说ART也快出来了哦)的,也就是说他只是hook java函数。ok,既然xposed是个hook框架我们就来看下它是怎么搭建的呢?
xposed核心代码在core中,实际就是把java函数标识成native函数,这样在运行java函数时就是在在执行我们自己定义的native函数从而去执行hooked的callback函数(原理可以去看老罗博客中关于dalvik的分析部分)。base中的几个hooked函数构成我们xposed框架的基石,lib中的接口就是在这个时候被实现的。bese中的代码在XposedBridge.main函数中调用,具体可以去看xposed结合Zygote分析。而在lib提供xposed接口供我们去实现来编写xposed模块(本系列都分析method hook,请自行分析resources部分)。
xposed的知识点就是说这么多,其实还有很多没分析到,等以后用到了再说咯。那xposed就玩到这了吗?不不不,上文提到当前版本的xposed的核心与dalvik是紧紧相连的。在android5.0中,默认是ART虚拟机了,我们的xposed就会失效。我们可以做些什么呢?网上搜集的资料可以给大家参考下:
alibaba/dexposed:阿里团队基于xposed的ART方案
xposed就这样了,那除了它关于这个hook我们还有什么其他方案呢?
cydia substrate:注入zygote进程,采用inline hook,so也可以hook哦。
adbi:利用ptrace函数attach到进程。
上面也是2个hook框架,看简介就是知道所用到的知识点与xposed是不一样的。都很感兴趣啊,但时间有限啊,先走完全程,必定要再回来一一剖析。
好啦,作为框架它的软件开发也是需要我这种新手学习的。这里我们不看C++代码哦,只看jar里的几个类。先看xposed base中涉及到的
ZygoteInit接口我们简单我们忽略不计,来看resource和package。各自接口都有自己的handle函数和继承自callback的内部类Wrapper,且在call(Param)函数中会调用自己的handle函数。这样代码中可以不用区分这两个接口只需调用callback.call就可以去执行各自的handle函数,这也是Wrapper类名的意思所在。感觉有上图了也没什么课讲嘞,还是技术不行没墨水啊囧。
时间也不早了,到此为止吧。各位看官给点意见呐
xposed学习四:总结的更多相关文章
- TweenMax动画库学习(四)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- SVG 学习<四> 基础API
目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...
- Android JNI学习(四)——JNI的常用方法的中文API
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
- SCARA——OpenGL入门学习四(颜色)
OpenGL入门学习[四] 本次学习的是颜色的选择.终于要走出黑白的世界了~~ OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式. 无论哪种颜色模式,计算机都必须为每一个像素保存一些数 ...
- ZigBee学习四 无线+UART通信
ZigBee学习四 无线+UART通信 1) 协调器编程 修改coordinator.c文件 byte GenericApp_TransID; // This is the unique messag ...
- (转)SpringMVC学习(四)——Spring、MyBatis和SpringMVC的整合
http://blog.csdn.net/yerenyuan_pku/article/details/72231763 之前我整合了Spring和MyBatis这两个框架,不会的可以看我的文章MyBa ...
- Spring Boot 项目学习 (四) Spring Boot整合Swagger2自动生成API文档
0 引言 在做服务端开发的时候,难免会涉及到API 接口文档的编写,可以经历过手写API 文档的过程,就会发现,一个自动生成API文档可以提高多少的效率. 以下列举几个手写API 文档的痛点: 文档需 ...
- Expression Blend学习四控件
原文:Expression Blend学习四控件 Expression Blend制作自定义按钮 1.从Blend工具箱中添加一个Button,按住shift,将尺寸调整为125*125; 2.右键点 ...
- day 83 Vue学习四之过滤器、钩子函数、路由、全家桶等
Vue学习四之过滤器.钩子函数.路由.全家桶等 本节目录 一 vue过滤器 二 生命周期的钩子函数 三 vue的全家桶 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 Vue的过滤 ...
随机推荐
- 在C++中实现aligned_malloc
malloc的默认行为 大家都知道C++中可以直接调用malloc请求内存被返回分配成功的内存指针,该指针指向的地址就是分配得到的内存的起始地址.比如下面的代码 int main() { void * ...
- redhat安装python3.7
下载并解压: 1 wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz 2 tar -xzvf Python-3.7.2.tgz ...
- Python内置函数作用及解析
Python内置的函数及其用法.为了方便记忆,已经有很多开发者将这些内置函数进行了如下分类: 数学运算(7个) 类型转换(24个) 序列操作(8个) 对象操作(7个) 反射操作 ...
- python并发利器tomorrow
tomorrow是我最近在用的一个爬虫利器,该模块属于第三方的模块,使用起来非常的方便,只需要用其中的threads方法作为装饰器去修饰一个普通的函数,既可以达到并发的效果,本篇将用实例来展示tomo ...
- logging日志的使用和设置过期自动删除
一.logging的基础使用 1.logging的级别 import logging logging.debug('debug message') # 计算或者工作的细节 logging.info(' ...
- Quartz基础使用
Quartz基本组成部分: 调度器:Scheduler 任务:JobDetail 触发器:Trigger,包括SimpleTrigger和CronTrigger . using Quartz; usi ...
- ssh 免登录配置
引子 近日海淘了一个 mini-PC:Gigabyte GB-BSRE-1605,此设备虽采用 amd 嵌入式低功耗处理器,性能相比现在自己所用的设备却有不小提升,加上先前升级电脑多余一些 ssd 和 ...
- Spring与Mybatis整合配置
Mybatis核心配置文件: 配置文件内可以不写内容 <?xml version="1.0" encoding="UTF-8" ?> <!DO ...
- Python fire库使用
1.前要fire是python中用于生成命令行界面(Command Line Interfaces, CLIs)的工具 不需要做任何额外的工作,只需要从主模块中调用fire.Fire() 它会自动将你 ...
- java面试-垃圾回收器谈谈你的理解
一.垃圾回收算法: 引用计数 复制算法 标记-清除 标记-整理 二.垃圾回收的方式: 串行(Serial).并行(Parallel).并发(CMS).G1 1.串行垃圾回收器(Serial) 它为单线 ...