hook工具frida原理及使用

<hook⼯具frida原理及使⽤
⼀,原理简介:
1. ⼿机端安装⼀个server程序
2. 然后把⼿机端的端⼝转到PC端,
3. PC端写python脚本进⾏通信,python脚本中需要hook的代码采⽤javascript语⾔。
桶盖frida使⽤的是动态⼆进制插桩技术(DBI),⾸先来了解⼀下插桩技术:
插桩技术是指将额外的代码注⼊程序中以收集运⾏时的信息,可分为两种:
(1)源代码插桩[Source Code Instrumentation(SCI)]:顾名思义,在程序源代码的基础上增加(注⼊)额外的代码,从
⽽达到预期⽬的或者功能;
源代码插桩实例
(2)⼆进制插桩(Binary Instrumentation):额外代码注⼊到⼆进制可执⾏⽂件中,通过修改汇编地址,改变程序运⾏内容,运⾏后再返回到原来程序运⾏出处,从⽽实现程序的额外功能。
timev
●静态⼆进制插桩[Static Binary Instrumentation(SBI)]:在程序执⾏前插⼊额外的代码和数据,⽣成⼀个永久改变的可执⾏⽂件。
●动态⼆进制插桩[Dynamic Binary Instrumentation(DBI)]:在程序运⾏时实时地插⼊额外代码和数据,对可执⾏⽂件没有任何永久改变。* DBI能做什么?
(1)访问进程的内存
(2)在应⽤程序运⾏时覆盖⼀些功能
(3)从导⼊的类中调⽤函数
(4)在堆上查对象实例并使⽤这些对象实例
(5)Hook,跟踪和拦截函数等等
frida原理和xposed差不多,⽂章写完才发现发现这⾥有⼀篇m4bln⼤神的⽂章对原理解释更清楚,解析了frida的源码,从dalvik和art的启动底层原理讲起,Frida源码分析
下⾯重点讲下frida的使⽤。
⼆,安装
⾸先通过上⾯的介绍,明⽩frida是通过本地设备与远程设备端通信实现hook脚本传递注⼊的,所以可以确定要有本地客户端和远程服务端两部分组成:
1,本地客户端是基于Python的,⾸先安装python环境,然后使⽤ pip install frida
所以在远程端⼀定要有⼀个服务端⽤来接收我们发过去的js代码,即frida-server官⽅地址 , 其中包括各种平台
服务端下载页⾯
这⾥我们需要根据我们要hook设备的系统选择相应的下载包,这⾥我们选择Android系统
server
其实我们在这⾥还可以看到有很多其他的Android的选择,如下,其实每类服务端都适⽤于不同的场景,
⽐如:gadget适⽤于当⽆法获取root权限时可以将gadget.so植⼊⽬标apk中重打包,通过修改应⽤,使得server以应⽤的权限启动;还有frida-gum、frida-gumjs、frida-inject、frida-devkit等。
inject
gumjs
gum
devkit
java层hook:
1,hook构造⽅法
原⽅法:
原⽅法
hook代码:
hook代码
⾸先脚本中使⽤Java.use⽅法通过类名获取类类型,然后构造⽅法是固定写法:$init;这个要记住,然后因为需要重载所以⽤overload(……)形式即可,参数和参数之间⽤逗号隔开即可,这⾥⽤return重新调⽤了原来⽅法。
2,hook普通⽅法(s tatic、p r iv ate、p ub lic等)
电磁水泵原⽅法:
原⽅法
服装人台hook代码:
>第n个空间

本文发布于:2024-09-23 13:21:29,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/178321.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   插桩   代码
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议