简介
Frida是一款基于python + javascript 的hook框架,适用于android/ios/linux/win/osx等平台。Frida的动态代码执行功能,主要是在它的核心引擎Gum中用C语言来实现的。
- 注入模式:大部分情况下,我们都是附加到一个已经运行到进程,或者是在程序启动到时候进行劫持,然后再在目标进程中运行我们的代码逻辑。这种方式是Frida最常用的使用方式。注入模式的大致实现思路是这样的,带有GumJS的Frida核心引擎被打包成一个动态连接库,然后把这个动态连接库注入到目标进程中,同时提供了一个双向通信通道,这样控制端就可以和注入的模块进行通信了,在不需要的时候,还可以在目标进程中把这个注入的模块给卸载掉。
- 嵌入模式:针对没root过的设备Frida提供了一个动态连接库组件 frida-gadget, 可以把这个动态库集成到程序里面来使用Frida的动态执行功能。一旦集成了gadget,就可以和程序使用Frida进行交互。
- 预加载模式:自动加载Js文件。

环境搭建
- 下载FRIDA
直接安装frida和frida-tools的最新版本
pip install frida
pip install frida-tools
紧接着查看自己frida版本:
frida --version
然后查看自己的目标机架构版本,但有些可能不能显示出目标机架构版本,所以我直接到客户端:

模拟器版本: 7.0.1.0005-7.1.2700210226
系统版本: Windows10-64bit-8cpu
电脑型号: ASUSTeK COMPUTER INC.-TUF Gaming FX505DT_FX95DT
CPU: AMD Ryzen 7 3750H with Radeon Vega Mobile Gfx
总内存: 15809MB
可用内存: 8615MB
是否开启VT: 开启
渲染模式: OpenGL+
OpenGL版本: 4.6.0 NVIDIA 431.87
OpenGL渲染: GeForce GTX 1650/PCIe/SSE2
是否独显: 开启
显卡1: NVIDIA GeForce GTX 1650
显卡2: AMD Radeon™ RX Vega 10 Graphics
防火墙: 开启(推荐关闭)
安装路径: D:\夜神模拟器\Nox\bin
日志文件路径: C:\Users\ASUS\AppData\Local\Nox
模拟器磁盘大小: 总共 64G, 剩余 61G

64位程序执行不起来,所以的话frida-server下载32位
- 下载
frida-server
去github上下载frida-server,网址为 https://github.com/frida/frida/releases,frida-server是一个守护进程,通过TCP和Frida核心引擎通信,默认的监听端口是27042





adb devices

- 解压后,使用adb将frida-server放到手机目录
/data/local/tmp,然后修改属性为可执行
adb push G:\buuctf\frida-server-14.2.2-android-x86\fs data/local/tmp/frida-server_test

注意点1:
使用push指令,这里注意点,如果是新安装的夜神模拟器,那么会遇到这个报错:
adb: error: failed to copy 'G:\buuctf\frida-server-14.2.14-android-x86_64\fs_Rui' to
'data\local\tmp\fs_Rui': couldn't create file: Read-only file system

文件系统仅仅可读。
- 在夜神模拟器中查看
/proc/mounts文件里面的目录的权限,确定是否缺少w权限,如果是的话,那么在proc目录下执行以下代码:
mount -o remount,rw /
(一般到这里就可以试试push指令能不能用了,因为报错是文件系统的原因)
- 执行以下命令
adb remount
adb root
注意点2:
linux下的目录(后者是linux目录)都是反斜杠,写正的没用。
错误写法:
adb push G:\buuctf\frida-server-14.2.14-android-x86_64\fs_Rui data\local\tmp\fs_Rui
正确写法:
adb push G:\buuctf\frida-server-14.2.2-android-x86\fs data/local/tmp/frida-server_test
adb shell //进入模拟器
exit//退出模拟器
//以下均为linux命令行
su
cd data/local/tmp
chmod 777 frida-server_test

- 启动手机上的frida服务器,记得要以root权限启动,
./frida-server_test

- 在windows主机上另外开启一个cmd,输入命令
frida-ps -U,这行命令是列出手机上所有的进程信息,如果出现进程信息则说明环境搭配成功:
frida-ps -U

疑问点
但是我这里利用脱壳脚本,去连接frida-server,直接连接不上

求救
脱壳已解决
- 第一个问题:未进行端口转发
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
- 第二个问题:sdk中的adb和夜神中的abd版本不合。。
adb server version (31) doesn’t match this client (36),以至于每次一使用脚本连接,然后frida-server就会挂掉,然后就出现了上方的报错,只需要把sdk的adb复制一份放在夜神里面就行喽

没有SDK环境的报错

- 解码
D:\桌面\apktool.jar d D:\桌面\02.apk -o targetappFolder
- 将apk重新打包
D:\桌面\apktool.jar b -o repackaged.apk targetappFolder/
- 创建keystore(如果没有的话)
keytool -genkey -v -keystore custom.keystore -alias mykeyaliasname -keyalg RSA -keysize 2048 -validity 10000
- 签名
jarsigner -sigalg SHA256withRSA -digestalg SHA1 -keystore custom.keystore -storepass 你的密码 repackaged.apk mykeyaliasname
这个custom.keystore也就是前面所生成的keystore,注意路径问题就行
- 验证
jarsigner -verify repackaged.apk



最低0.47元/天 解锁文章
4933

被折叠的 条评论
为什么被折叠?



