当前位置: 首页 > 软件库 > 手机/移动开发 > >

xHook

针对 Android 平台 ELF 的 PLT hook 库
授权协议 MIT
开发语言 Java C/C++
所属分类 手机/移动开发
软件类型 开源软件
地区 国产
投 递 者 解修然
操作系统 Android
开源组织 爱奇艺
适用人群 未知
 软件概览

概述

xhook 是一个针对 Android 平台 ELF (可执行文件和动态库) 的 PLT (Procedure Linkage Table) hook 库。

xhook 一直在稳定性和兼容性方面做着持续的优化。

特征

  • 支持 Android 4.0 (含) 以上版本 (API level >= 14)。

  • 支持 armeabi,armeabi-v7a,arm64-v8a,x86 和 x86_64。

  • 支持 ELF HASH 和 GNU HASH 索引的符号

  • 支持通过正则表达式批量设置 hook 信息。

  • 需要 ROOT 权限。

  • 不依赖于任何的第三方动态库。

  • 纯 C 的代码。比较小的库体积。

编译

你需要 google NDK 来编译 xhook。
https://developer.android.com/ndk/downloads/index.html

最新版本的 xhook 在开发和调试中使用的 NDK 版本是 r16b

  • 编译动态库 (libxhook.so 和其他的用于测试的动态库)

./build_libs.sh
  • 把动态库安装到 Demo 工程的 libs 目录中

./install_libs.sh
  • 清除动态库

./clean_libs.sh

Demo

cd ./xhookwrapper/
./gradlew assembleDebug
adb install ./app/build/outputs/apk/debug/app-debug.apk
  • 大概原理是:先读取/proc/self/maps文件内容 正则匹配找到so文件路径和加载基址, 解析elf格式找到要hook的函数的地址替换成自己指定的函数地址//xh_core.c static void xh_core_refresh_impl() { char                     line[512]; FILE                    *fp; uintpt

  • 背景 xhook注册了close方法,但是在android10上,还是无法拦截java层close一个io流 调研FileoutputStream是怎么关闭文件的 FileoutputStream.java public void close() throws IOException { synchronized (closeLock) { if (closed) { return; } clos

  • //简单的需求可以调用Unicorn对虚拟内存进行修改 public void patchVerify(){ int patchCode = 0x4FF00100; // emulator.getMemory().pointer(module.base + 0x1E86).setInt(0,patchCode); } //HOOZZ public void HookMD

 相关资料
  • Microsoft Windows Apache的使用 此文阐述如何在Windows平台上安装、配置和运行Apache2.0 参见:在Microsoft Windows上使用Apache 编译Apache 此文会指出在Windows平台上编译Apache以前必须了解的许多要点。 参见:在Microsoft Windows平台上编译Apache 其他平台 Novell NetWare 此文阐述如何在

  • 本文将介绍了如何设置 SDK 环境来部署 Cordova 应用到 Android 设备上,以及在你的开发流程中如何选择使用 Android 命令行工具。不管你是以平台为中心的工作流程还是跨平台(命令行界面)的工作流程都需要安装 Android SDK。 需求及支持 Cordova 开发 Android 需要 Android SDK,可以安装在 OS X, Linux 或 Windows 操作系统。

  • 工具准备 Android Studio v3.0+, 下载参见:Google 中国开发者网站 cocos2d-x v3.17,下载后解压,下载参见:Cocos 官网页面 配置步骤: 完成 Android Studio 安装,进入欢迎界面,选择 Import project(Gradle, Eclipse ADT, etc.)。选择目录 cocos2d-x root/tests/cpp-tests/

  • XHook 可轻松的修改 XHR 的请求和响应。主要用于: Cache requests in memory, localStorage, etc. Insert authentication headers S3 Request Signing, see S3 Hook Simulate responses Create fake transparent backends for testing

  • 这个指南展示如何安装SDK环境以便可以部署Cordova App在Android设备上,以及如何选择使用以Android为中心命令行工具在你的开发工作流中。 不管你是使用以平台为中心的shell工具还是跨平台的Cordova命令行你都需要安装Android SDK。要比较两种开发路径,请参见概述。要获取CLI的详细介绍请参见Cordova CLI 参考. 要求和支持情况 Cordova支持Andr

  • 我的电话有问题。当我想用以下命令添加平台时出错: > {http_解析器:'1.0',节点:'0.10.26',v8:'3.14.5.9',ares:'1.9.0-DEV',uv:'0.10.25',zlib:'1.2.3',模块:'11',openssl:'1.0.1e',npm:'1.4.3'} 道路已经确定 $echo$PATH /usr/lib/lightdm/lightdm:/usr/本