hook(钩子)简介
Hook翻译过来就是“钩子”的意思,钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。Hook技术无论对安全软件还是恶意软件都是十分关键的一项技术,其本质就是劫持函数调用。
frida简介
frida是一款基于python和java 的hook框架,是一种动态插桩工具,可以插入代码到原生App的内存空间中,动态的监视和修改其行行为,可运行在Android、iOS、Linux和windows等多个平台。
Android平台上的Hook工具有像Xposed这一类的,它们通常只能对Java层进行Hook,每次修改逻辑代码,都要更新目标设备上的Apk,使用起来,总让人感觉有些不方便。而Frida就不一样了,不仅支持对Java层的Hook,还支持对 Native层的so库文件进行Hook,并且每次修改逻辑,也不需要安装新的Apk到目标设备上,因为它的Hook逻辑不需要打包成Apk,写好逻辑就能直接运行看效果,非常方便,节省了很多折腾的时间,提升了工作效率。另外Xposed只能Hook安卓系统,而Frida是所有系统通吃,包括Windows、iOS、Linux、Android等,可谓是Hook最佳选择。
一、frida环境部署
(一)前置知识需要:
• 安卓APK反编译
• adb 基本使用
• java 基本知识
• python 基本知识
(二)环境及工具要求:
• 安卓模拟器或者手机(需要root)
• jadx-gui
• frida
frida项目地址:https://github.com/frida/frida
1、电脑端可直接通过pythond的pip安装frida
# pip3 install frida-tools # CLI tools
# pip3 install frida # Python bindings
2、手机/模拟器安装frida
#注:模拟器的frida为android-x86,手机的为android-arm
#1.查看电脑端对应的frida版本
pip list | findstr frida
#2.下载对应的版本的frida-server
https://github.com/frida/frida/releases
#3.发送到模拟器
adb root
adb remount
adb push E:\safetool\32.Ap