Android安全:Hook技术

一、Hook技术 
1.Hook英文翻译为“钩子”,而钩子就是在事件传送到终点前截获并监控事件的传输,像个钩子钩上事件一样,并且能够在钩上事件时,处理一些自己特定的事件; 
2.Hook使它能够将自己的代码“融入”被勾住(Hook)的进程中,成为目标进程的一部分; 
3.在Andorid沙箱机制下,Hook是我们能通过一个程序改变其他程序某些行为得以实现; 
二、Hook分类 
1.根据Android开发模式,Native模式(C/C++)和Java模式(Java)区分,在Android平台上 
  Java层级的Hook; 
  Native层级的Hook; 
2.根Hook对象与Hook后处理事件方式不同,Hook还分为: 
  消息Hook; 
  API Hook; 
3.针对Hook的不同进程上来说,还可以分为: 
  全局Hook; 
  单个进程Hook; 
三、Hook原理 
Hook技术本质是函数调用,由于处于Linux用户状态,每个进程有自己独立的进程控件,所以必须先注入所要Hook的进程空间,修改其内存中进程代码,替换过程表的符号地址,通过ptrace函数附加进程,向远程进程注入so库,从而达到监控以及远程进程关键函数挂钩; 
四、Hook工作流程 
1.Android相关内核函数: 
  ptrace函数:跟踪一个目标进程,结束跟踪一个目标进程,获取内存字节,像内存写入地址; 
  dlopen函数:以指定模式打开指定的动态链接库文件; 
  mmap函数:分配一段临时的内存来完成代码的存放; 
2.向目标进程注入代码总结后的步骤分为以下几步: 
  用ptrace函数attch上目标进程; 
  发现装载共享库so函数; 
  装载指定的.so; 
  让目标进程的执行流程跳转到注入的代码执行; 
  使用ptrace函数的detach释放目标集成; 
五、常用Hook工具-Xposed框架 
1.Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务; 
2.通过替换/system/bin/app_process程序控制zygote进程,使app_process在启动过程中加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持; 
六、Xposed框架安装 
1.从官方网站(http://repo.xposed.info/module/de.robv.android.xposed.installer),下载de.robv.android.xposed.installer_v33_36570c.apk,安装本地服务XposedInstaller; 
2.安装进入到XposedInstaller应用程序,“框架”模块出现“未激活”提示; 

3.点击“框架”,进入到需要激活框架的界面,我们点击“安装/更新”就能完成框架的激活了,因为安装时会需要Root权限(下载相关工具如“Root精灵”),安装后会启动Xposed的app_process,所以安装过程会存在设备多次重启(安装过程如下图); 
正在安装(下载): 
  • 9
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值