Android中的hook框架:epic简介
epic是Android中的一个开源的hook框架,目前最新版本是:0.11.2,项目地址:https://github.com/tiann/epic。
epic框架的优点有:
1.可以hook普通方法、构造方法、系统方法。
2.手机系统无需root。
集成方式如下:
1.在项目主module的build.gradle中添加依赖:
implementation 'com.github.tiann:epic:0.11.2'
2.如果需要在app启动时就开始hook,请在Application的onCreate方法中调用如下逻辑:
import de.robv.android.xposed.DexposedBridge;
import de.robv.android.xposed.XC_MethodHook;private void startHook() {XC_MethodHook hook = new XC_MethodHook() {@Overrideprotected void beforeHookedMethod(MethodHookParam param) throws Throwable {super.beforeHookedMethod(param);Object hookObj = param.thisObject;String clsName = "unknownClass";if (hookObj != null) {clsName = hookObj.getClass().getName();}String mdName = "unknownMethod";if (param.method != null) {mdName = param.method.getName();}Log.d(TAG, "beforeHookedMethod: " + clsName + "-" + mdName);}@Overrideprotected void afterHookedMethod(MethodHookParam param) throws Throwable {super.beforeHookedMethod(param);Object hookObj = param.thisObject;String clsName = "unknownClass";if (hookObj != null) {clsName = hookObj.getClass().getName();}String mdName = "unknownMethod";if (param.method != null) {mdName = param.method.getName();}Log.d(TAG, "afterHookedMethod: " + clsName + "-" + mdName);}};try {// hook系统方法DexposedBridge.hookAllMethods(BluetoothLeScanner.class, "startScan", hook);// hook系统方法DexposedBridge.hookAllMethods(Thread.class, "run", hook);// hook构造方法DexposedBridge.hookAllConstructors(Thread.class, hook);} catch (Throwable t) {t.printStackTrace();}
}
注:
1.要使用epic的hook功能,需要依赖libepic.so库文件。但此库文件不支持默认cpu架构:armeabi。如果app仅支持armeabi架构的话,需要在编译时将armeabi-v7a架构的库文件打包入app中。否则app运行会因为找不到库文件而崩溃。
2.在hook方法时,尤其是hook系统方法时,非常有必要加try、catch Throwable异常捕获。因为可能会遇到在hook时由于访问权限等问题而导致抛出异常,进而崩溃。而即使加上异常捕获,有时也会遇到直接在native层出现异常,try、catch无法捕获的问题,那就没法解决了,这一点要注意。
Android中的hook框架:epic简介相关推荐
- Android 进阶 教你打造 Android 中的 IOC 框架 【ViewInject】 (下)
上一篇博客我们已经带大家简单的吹了一下IoC,实现了Activity中View的布局以及控件的注入,如果你不了解,请参考:Android 进阶 教你打造 Android 中的 IOC 框架 [View ...
- android hook 实例,代码实例分析android中inline hook
以下内容通过1.实现目标注入程序,2.实现主程序,3.实现注入函数,4.thumb指令集实现等4个方面详细分析了android中inline hook的用法,以下是全部内容: 最近终于沉下心来对着书把 ...
- android中使用tmf框架插件化开发的问题
android中使用tmf框架插件化开发的问题 最近项目开发使用的是tmf框架,其中大多数都是通过源生和H5交互的方式来实现的,大体实现和别的三方框架是一样的,需要按照tmf的官方文档引入一些lib和 ...
- 每天学习一个Android中的常用框架——0.目录
文章目录 1.前言 2.环境 3.目录 3.1 持久化 3.1.1 Litepal 3.1.2 GreenDao 3.1.3 Realm 3.1.4 DBFlow 3.2 网络传输 3.2.1 OkH ...
- Android 中的ORM框架
在android 中,内置了sqlite数据库,java web 中,用惯了Hibernate ,想找找android中是否也有类似的orm框架,后来在开源中国看到了orman,这是一个很不错的框架. ...
- android hook红包接口,Xposed框架实现Android中的Hook
Hook.jpg 前几天受高人指点意外发现了开启Android世界的新大陆,就是这个叫Hook(''钩子'')的东西.听起来很神奇,周末抽时间研究了一番,发现确实是一个值得去研究的技术. 什么是 Ho ...
- android中volley通信框架简介
1. 什么是Volley? 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient ...
- 【Android 逆向】substrate 框架 ( substrate 简介 | substrate 相关文档资料 )
文章目录 一.substrate 简介 二.substrate 相关文档资料 一.substrate 简介 substrate 官网 : http://www.cydiasubstrate.com s ...
- Android平台下hook框架adbi的研究(下)
上篇中,我大致介绍了一下如何将一个dlopen()的调用插入到指定进程的执行序列中去. 但是,光插入这个没用,还没有具体解决如何hook进程中指定函数的问题.这个任务就要交给dlopen()函数加载进 ...
最新文章
- nopi 的使用记录
- 从输入 URL 到页面加载完成的过程中都发生了什么
- Ext分区文件恢复工具extundelete
- 前端性能测试详细分析(二)
- golang基础-chan的select操作、定时器操作、超时控制、goroutine中使用recover
- 详解ISA2006三种客户端
- CentOS服务器上部署 oracle10gr2
- 水滴石穿C语言之指针、数组和函数
- Qt学习笔记-OpenGL做正方体并旋转
- OJ1000: A+B Problem
- python字符串_python的字符串怎么拼接
- 网页下载CAB文件总结
- “我很迷茫很焦虑,需要你的建议”|她在百度内网发了个求助帖
- python_激光点云变换到图像平面
- 安装PyTorch详细过程
- android 如何编译.so,Android源码中编译自己的so库
- 【C语言题解】将数字金额翻译成中文大写金额
- 工控系统 SCADA(监控和数据采集)系统简介
- C++中string类下的begin,end,rbegin,rend的用法
- Android性能优化系列之Bitmap图片优化