【Android 逆向】ART 函数抽取加壳 ③ ( 禁用 dex2oat 操作 HOOK 点介绍 | 集成 InLineHook )
2023-09-14 09:07:29 时间
在
- 【Android 逆向】ART 函数抽取加壳 ① ( ART 下的函数抽取恢复时机 | 禁用 dex2oat 机制源码分析 )
- 【Android 逆向】ART 函数抽取加壳 ② ( 禁用 dex2oat 简介 | TurboDex 中禁用 dex2oat 参考示例 )
两篇博客中 , 简单介绍了 禁用 dex2oat 机制 的原理 , 下面开始 实现 dex2oat 禁用功能 ;
一、禁用 dex2oat 操作 HOOK 点介绍
dex2oat 机制 的实现流程中 , 其中需要调用 exec_utils.cc 源码中的 ExecAndReturnCode 函数 , 在 ExecAndReturnCode 函数 中调用了 execve 函数 , 源码片段如下 :
int ExecAndReturnCode(std::vector<std::string>& arg_vector, std::string* error_msg) {
if (envp == nullptr) {
execv(program, &args[0]);
} else {
execve(program, &args[0], envp);
}
return -1;
}
源码地址 : http://aospxref.com/android-8.0.0_r36/xref/art/runtime/exec_utils.cc#ExecAndReturnCode ;
二、集成 InLineHook
在上个章节介绍的 exec_utils.cc 源码 编译后的二进制代码被封装到了 libc 库 中 ;
禁用 dex2oat 机制 , 需要 HOOK libc 库中的 execve 函数 , HOOK Java 代码 , 使用静态代理 或 动态代理 模式即可 , HOOK C 语言中的代码需要使用 InLineHook , 这里先集成 InLineHook ;
将 相关源码拷贝到 app\src\main\cpp\ 目录下 , 主要源码结构如下 :
│ CMakeLists.txt
│ native-lib.cpp
│
└─hook
│ inlineHook.c
│ relocate.c
│ relocate.h
│ TKHooklib.h
│
├─dlfcn
│ dlfcn_compat.c
│ dlfcn_compat.h
│ dlfcn_nougat.c
│ dlfcn_nougat.h
│
└─include
inlineHook.h
在 CMakeLists.txt 构建脚本中 , 进行如下配置 :
add_library(
# 设置函数库名称
native-lib
# 设置函数库类型 , 动态库
SHARED
# 指定 InLineHook 涉及到的 .c 源码
hook/relocate.c
hook/inlineHook.c
hook/dlfcn/dlfcn_nougat.c
hook/dlfcn/dlfcn_compat.c
# 核心功能源码
native-lib.cpp)
集成了 InLineHook 库之后 , 在 native-lib.cpp 中导入 inlineHook.h
头文件 , 就可以调用如下 内联钩子 InLineHook 函数 , 如 :
enum ele7en_status registerInlineHook(uint32_t target_addr, uint32_t new_addr, uint32_t **proto_addr);
enum ele7en_status inlineUnHook(uint32_t target_addr);
void inlineUnHookAll();
enum ele7en_status inlineHook(uint32_t target_addr);
void inlineHookAll();
相关文章
- Android Studio(四):Android Studio集成Genymotion
- Android_(控件)使用Gallery浏览手机上SD卡中图片
- unity android 集成指南
- 使用Android Studio搭建Android集成开发环境(图文教程)
- Android Studio集成Genymotion
- android性能优化优秀文章
- android集成支付宝简介
- Android 集成ShareSDK分享QQ或空间成功后,回调却不执行的原因
- Android动态加载jar/dex
- android安卓应用和OBD的集成场景
- android安卓应用和OBD的集成场景
- Android 9.0 静默安装
- Android sensor模块分析
- Android项目持续集成实践之Gitlab CI(Docker版本)
- android 11.0 12.0静默安装app和静默卸载app功能实现
- android 9.0 修改Launcher3 app hotseat 图标形状为圆角图标
- 【Android 逆向】ART 脱壳 ( dex2oat 脱壳 | aosp 中搜索 dex2oat 源码 | dex2oat.cc#main 主函数源码 )
- 【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表混淆 | resources.arsc 资源映射表二进制格式分析 | 混淆全局字符串池和资源名称字符串池 )
- android应用开发--------------看RadioGroup源代码,写相似单选选项卡的集成控件(如底部导航,tab等等)
- Please ensure that adb is correctly located at 'D:Androidandroid-sdkplatform-toolsadb.exe' and
- Android12安装报错:Targeting S+ (version 31 and above) requires that an explicit value for android:export
- Android项目持续集成之Jenkins的使用
- Android Camera曝光
- Android Java 与 C++ 恒调用,路径、文件名、延长的最大长度
- android 11 kernel驱动hdmi屏 打印追踪日志
- android 计算器系统应用深度解析
- 【Android进阶】21、样式与主题
- Android人脸与指纹识别
- Android项目持续集成之Jenkins的使用