我的编程空间,编程开发者的网络收藏夹
学习永远不晚

最新2023:Frida完美安装方案

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

最新2023:Frida完美安装方案

文章目录


更新2023:Frida完美安装方案

原文是安装最新frida的步骤。但是我在使用过程中,如果安卓版本比较低的话,最新版frida不是很稳定。推荐安卓7、8安装frida 12.8.0版本,安卓10/frida14,安卓12/frida16。

2023:Frida完美安装方案指路 这个是frida12.8.0安装教程


下面的是原文Frida最新版安装

前言

逆向第一步,从frida开始! 用我自己的理解,说一下frida是干什么的。

首先,hook是什么?

在一些大神的文章中,经常会出现“hook它!”,“hook之~”,翻译成大白话就是“盘它!”,说明这个东西起着决定性、结束性的步骤。

要了解一个东西,首先要知道它的应用场景在哪里。

① 做爬虫的时候,有时会发现请求头有个加密值,例如x-sign值,这个值通常和我们的请求参数有关,当我们编写请求代码,如果不能破解x-sign值,我们发出的请求就会被对方发现,嘿呀原来你是伪造的,打回,那既然请求错误了,那爬取就自然扑街啦。这时我们的hook就可以登场啦~

② 在做①爬虫的时候,我们有时会发现,我们其实连抓包都抓不到,还构建什么请求,爬什么虫,这大概率是因为对方使用了SSL加密,刚开始用个代理服务器进行代理人攻击进行抓取,现在有很多应用都要对客户端的证书进行验证,那还伪造个屁啊,玩不下去了!这时我们的hook就又登场啦~

③ 还有一些其他逆向破解类的,都会用到hook。

说了这么多,那么hook到底是什么呢?

hook,中文翻译为“钩子”。我的理解是,无论是什么进程,还是函数,都能把它勾过来,然后“加工”一番,再扔出去(执行)。

还有一个问题,我们为什么可以hook呢?

现在应用一般分为B/S架构,C/S架构。

B/S架构,例如应用场景①中,一般我们需要x-sign加密函数会在某一个js文件中,浏览器都帮你解析好了,慢慢找就好了。

而C/S架构中,例如应用场景②中,一般我们需要认证的证书都在本地应用程序中,需要我们自己对应用程序进行反编译,然后慢慢找需要hook的地方。

一般对方也有反制措施,比如混淆文件代码等,实际上只是让我们需要hook的地方变得识别困难一些,但并不影响我们hook它。

什么是Frida?

终于到本篇的正题了,如果说hook是技术,那么Frida就是工具。技术是一个概念,而工具是最终具体的实现。

Frida是二进制动态插桩技术,我的理解就是把一段代码动态的插入程序中,但最终不会改变原有的程序,但我们通过动态的插入,可以快速简单的分析出我们想要的那段源代码。


步骤

1.下载、安装Python环境

提示:记得添加环境变量

提示:切记安装路径不要有中文

Python 3.10.6 win-amd64 下载地址:百度云下载

命令行输入:python -V

显示如下,即配置成功。

PS D:\> python -VPython 3.10.6

2.下载frida、frida-tools

pip install frida -i https://pypi.tuna.tsinghua.edu.cn/simple/pip install frida-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/

提示:若一直卡在 Running setup.py install for frida … –

则下载对应版本的egg文件,egg文件列表,可自行查找。

我电脑win11 64 python3.10对应的是frida-15.2.2-py3.10-win-amd64.egg 点击下载

将egg文件放在D:\Python\Lib\site-packages下(根据自己的Python安装目录)。

在当前目录cmd,执行easy_install frida-15.2.2-py3.10-win-amd64.egg


提示:若提示easy_install 不是内部或外部命令,也不是可执行的程序

当setuptools版本>51.3.3时,就没有带easy_install,按如下方式重新安装解决。

pip uninstall setuptoolspip install -v setuptools==51.3.3 -i https://pypi.tuna.tsinghua.edu.cn/simple/

最后再执行下载任务

pip install frida -i https://pypi.tuna.tsinghua.edu.cn/simple/pip install frida-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/

命令行输入:frida --version

显示如下结果,即安装成功。

PS D:\> frida --version15.2.2

3.下载adb工具

提示:该工具用于在PC端用命令行对安卓手机或模拟器进行调试。

提示:记得添加环境变量

adb工具:百度云下载

4.下载frida-server端到手机或模拟器

以下用逍遥模拟器演示Frida-server端。

打开一个模拟器,通过adb可查看该模拟器设备,查看连接,并查看模拟器设备型号。

PS D:\> adb devicesList of devices attached127.0.0.1:21503 devicePS D:\> adb connect 127.0.0.1:21503already connected to 127.0.0.1:21503PS D:\> adb shell getprop ro.product.cpu.abix86_64

在官网找到对应frida版本、对应手机型号的frida-server下载,官网地址

本次演示对应的frida-server版本为frida-server-15.2.2-android-x86_64.xz,下载地址为百度云下载

将解压之后的文件push到设备中,指定到 /data/local/tmp 路径下重命名为 frida-server。

PS D:\> adb push C:\Users\xxx\Desktop\frida-server-15.2.2-android-x86_64 /data/local/tmp/frida-serverC:\Users\xxx\Desktop\frida-server-15.2.2-android-x86...le pushed, 0 skipped. 19.4 MB/s (99542760 bytes in 4.882s)    

命令行运行android设备中的frida-server。

PS D:\> adb shell   // 进入手机VOG-AL00:/ # su    // 确定手机是root权限VOG-AL00:/ # cd /data/local/tmp      // 进入到tmp目录下VOG-AL00:/data/local/tmp # chmod 777 frida-server      // 给执行权限,可读可写可执行VOG-AL00:/data/local/tmp # ./frida-server      //正式启动frida-server

提示:执行完毕后为运行状态。这个shell不能关闭,关闭了frida就停止了。

进行端口转发监听

PS D:\> adb forward tcp:27042 tcp:2704227042PS D:\> adb forward tcp:27043 tcp:2704327043

27042端口用于frida-server通信的默认端口号,不转发的话客户端是连接不上服务端。

使用默认端口非常容易被检测,可以使用非标准端口来启动frida。启动frida-service的时候设置IP和端口,启动命令。

./frida-server  -l 127.0.0.1:9999

之后的每个端口对应每个注入的进程,例如27043端口。

检查是否成功 执行 frida-ps -U 命令成功输出进程列表,如下所示。

PS D:\> frida-ps -U PID  Name----  ---------------------------------2364  android.ext.services2403  android.process.media1566  audioserver1567  cameraserver...   ...

5.简单使用

在这里插入图片描述

test.pyimport fridardev = frida.get_remote_device()front_app = rdev.get_frontmost_application()print(front_app)
PS E:\学习\python> python .\test.pyApplication(identifier="com.android.chrome", name="Chrome", pid=13770, parameters={})

总结

基本的入门就是这样了,之后的实战,还需要一点Python知识(不会也没关系其实),一些JavaScript知识(比较重要)。

对于B/S架构的程序,更偏重于JavaScript代码的分析能力。

对于C/S架构的程序,更偏重于Java代码的分析能力。

个人认为Hook最主要的地方,是找出需要Hook的地方,找到后一切都会迎刃而解的。

来源地址:https://blog.csdn.net/weixin_45320254/article/details/126215490

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

最新2023:Frida完美安装方案

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录