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的过滤 ...
随机推荐
- Java程序员必备后台前端框架--Layui【从入门到实战】(一)
layui入门使用及图标的使用 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] [编程工具:IDEA] 下载Layui与文件分析 下载直接去官网下载即可 文件分析 下载完成后,解压会 ...
- EurekaServer源码分析
Eureka Server功能 接受服务注册 接受服务心跳 服务剔除 服务下线 集群同步 获取注册表中服务实例信息 需要注意的是,Eureka Server同时也是一个Eureka Client,在不 ...
- [数据结构与算法-13]ST表
ST表 主要用来快速查询静态数据区间最大值 思路 数组\(A[i][j]\)存储数列\(\{a_i\}\)中区间\(i \in [i, i+2^j)\)的最大值 查询时只需要查询\(max\{A[i] ...
- SSRF漏洞利用之Redis大神赐予shell
0x00实验环境 1.centos靶机(IP为:192.168.11.205,桥接模式) 2.kali黑客攻击主机(IP为:192.168.172.129,NAT模式) 0x01实验原理 这段 ...
- BurpSuite 一些小技巧
拦截请求 设置不拦截下面的网站(记得保存项目,不然每次都要添加) .*\.?baidu.com|.*\.?google.com|.*\.?bcebos.com|.*\.?bdstatic.com|.* ...
- SpringBoot 访问jsp文件报错Path with "WEB-INF" or "META-INF": [WEB-INF/jsp/welcome.jsp]的解决办法
由于SpringBoot不在支持jsp,所以想使用jsp的情况下需要在pom.xml配置servlet依赖,jstl标签库和tomcat依赖.以下是我的pom.xml的配置: (ps:标记红色处为重点 ...
- c++ 反汇编 继承
单继承,父类中没有虚函数 单继承,父类存在虚函数,子类重写虚函数 单继承,父类存在虚函数,子类不新定义虚函数 单继承,父类存在虚函数,子类新定义虚函数 单继承,父类不存在虚函数,子类定义虚函数 多继承 ...
- PTA 统计二叉树叶子结点个数
6-2 统计二叉树叶子结点个数 (10 分) 本题要求实现一个函数,可统计二叉树的叶子结点个数. 函数接口定义: int LeafCount ( BiTree T); T是二叉树树根指针,函数Le ...
- 都在讲Redis主从复制原理,我来讲实践总结
摘要:本文将演示主从复制如何配置.实现以及实现原理,Redis主从复制三大策略,全量复制.部分复制和立即复制. 本文分享自华为云社区<Redis主从复制实践总结>,原文作者:A梦多啦A . ...
- 【Linux学习笔记1】-centos6.9部署django
一,centos6.9部署django 部署套件:centos6.9+nginx+mysql+uwsgi+python3+django 首先还是要明白这几个部分之间的关系(自己也是初学者,希望 ...