030.随机指纹chromium编译-修改windows操作系统版本

news2024/12/26 8:01:22

一、目标:

  • 1.了解js是如何获取windows版本的。
  • 2.如何从c++层面修改chromium源码,修改win系统版本

二、js是如何获取windows系统版本:

  • 将下面的js复制到F12控制台
async function detectWindowsVersion() {
  let userAgent = navigator.userAgent;
  if (/Windows NT 10.0/.test(userAgent)) {
  
     ua = await navigator.userAgentData.getHighEntropyValues(["platformVersion"])
     
       if (navigator.userAgentData.platform === "Windows") {
         const majorPlatformVersion = parseInt(ua.platformVersion.split('.')[0]);
         if (majorPlatformVersion >= 13) {
           return "Windows 11";
          }else if (majorPlatformVersion > 0) {
            return "Windows 10";
          }
       }

  } else if (/Windows NT 6.3/.test(userAgent)) {
    return "Windows 8.1";
  } else if (/Windows NT 6.2/.test(userAgent)) {
    return "Windows 8";
  } else if (/Windows NT 6.1/.test(userAgent)) {
    return "Windows 7";
  } else if (/Windows NT 6.0/.test(userAgent)) {
    return "Windows Vista";
  } else if (/Windows NT 5.1|Windows XP/.test(userAgent)) {
    return "Windows XP";
  } else {
    return "未知";
  }
}
let version = await detectWindowsVersion();
console.log(version)

  • 输出:
Windows 11

注释:js获取win系统版本分为2部分:
1是win10之前的版本区分,通过navigator.userAgent中的NT版本数字来区分,
2是win10和win11的区分,通过navigator.userAgentData来区分

三、修改源码:

  • 前面的博客写了如何编译chormium,这里假设你都已经是个编译成功了

由于现在用户基本都是Win10+了,我这里只提供Win10和Win11随机切换的源码修改。

1.打开 \third_party\blink\renderer\core\frame\navigator_ua.cc
  • 找到源码:
  ua_data->SetPlatform(String::FromUTF8(metadata.platform),
                      String::FromUTF8(metadata.platform_version));
2.替换为:
  //ua_data->SetPlatform(String::FromUTF8(metadata.platform),
                       //String::FromUTF8(metadata.platform_version));
  // 开始更改======================== 
  base::CommandLine* base_command_line = base::CommandLine::ForCurrentProcess();
  

  int seed = 123123123;
  if (base_command_line->HasSwitch("fingerprints")) {
      std::istringstream(base_command_line->GetSwitchValueASCII("fingerprints")) >> seed;
  }
  int platfrom_v = 7;
  if (base_command_line->HasSwitch("fingerprints")) {
    platfrom_v = seed % 7 + 10;
  }
  ua_data->SetPlatform(String::FromUTF8(metadata.platform), String::FromUTF8(std::to_string(platfrom_v) + ".0.0"));
  // 结束更改========================  

注意:这里platfrom_v的随机取值范围是7~16,大于12为Win11,反之则为Win10

3.编译
ninja -C out/Default chrome

四、感想

  • 大佬们有经验也都不愿意开源,好多小伙伴也都是在默默单干,哎。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2254466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络协议(TCP/IP模型)

目录 网络初识 网络协议 协议分层 协议拆分 分层 协议分层的优势 1.封装效果 2.解耦合 TCP/IP五层模型 协议之间配合工作(详解) 网络初识 网络核心概念: 局域网:若干电脑连接在一起,通过路由器进行组网。 …

PH热榜 | 2024-12-05

1. Oopsie 标语:用AI和会话回放调试Flutter和React Native应用 介绍:Zipy推出的Oopsie是一款你唯一需要的AI赋能移动端调试工具,它能提供▶️会话回放、🤖错误监控、💡AI生成的概要分析,以及&#x1f525…

文化央企再一次声明

央企再次声明 中传国华(北京)科技有限公司,成立于2023年5月29日,原法定代表人曹忠喜,统一社会信用代码:91110117MACL4B9A91,我司中传世纪控股(北京)有限公司系该司的原股…

如何延长相机电池续航时间

如果你曾在拍摄过程中突然发现相机电池电量不足,就会知道那有多让人紧张和沮丧了。无论你是在拍摄小朋友的生日派对、家庭聚会,还是作为一名专业摄影师在工作,保持电池有电都是至关重要的。否则,你就有可能错过精彩瞬间&#xff0…

day06【入门】MySQL学习(3)完结!!!!

今日学习目标,mysql剩余的一小部分。开始接口自动化测试的学习。 目录 1、自关联 2、子查询 2.1 标量子查询 2.2 列子查询 2.3 表级子查询 2.4 作业 3、MySQL内置函数 3.1 concat字符串连接 3.2 length(str) 3.3 left字符串 3.4 right字符串 3.5 subs…

使用 Apache Commons IO 实现文件读写

在 Java 编程中,文件读写是常见的操作。虽然 Java 标准库提供了基本的文件 I/O 功能,但使用 Apache Commons IO 库可以进一步简化这些操作,提高开发效率。Apache Commons IO 是一个强大的工具库,提供了许多实用的类和方法&#xf…

9. 一分钟读懂“策略模式”

9.1 模式介绍 策略模式是一种行为型设计模式,用于在运行时灵活切换对象的行为或算法,它将算法封装为独立的类,使得它们可以互相替换,而不会影响使用这些算法的客户端代码。 策略模式的核心思想是:定义一系列可互换的算…

使用Oracle通过gateway连接MSSQL

环境概述 某医院的his系统Oracle数据库要和体检系统进行数据通讯,需要从Oracle能查到sqlserver的数据。本次通过Oracle gateway来解决此问题。 HIS服务器:windows server 2016数据库oracle11.2.0.4,假设IP是192.168.100.9 体检服务器&…

社区医疗服务可视化系统设计与实现

文末获取源码和万字论文,制作不易,感谢点赞支持。 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,…

Alibaba EasyExcel 导入导出全家桶

一、阿里巴巴EasyExcel的优势 首先说下EasyExcel相对 Apache poi的优势: EasyExcel也是阿里研发在poi基础上做了封装,改进产物。它替开发者做了注解列表解析,表格填充等一系列代码编写工作,并将此抽象成通用和可扩展的框架。相对p…

掌控时间,成就更好的自己

在个人成长的道路上,时间管理是至关重要的一环。有效的时间管理能够让我们更加高效地完成任务,实现自己的目标,不断提升自我。 时间对每个人都是公平的,一天只有 24 小时。然而,为什么有些人能够在有限的时间里做出卓…

十、JavaScript的应用

10.1 JavaScript概述 10.1.1 JavaScript简介 JavaScript是一种基于 对象(0bject) 和 事件驱动(EventDriven) 并具有安全性能的脚本语言,能够与HTML(超文本标记语言)、Java语言一起在Web页面中与web 客户交互,它无须经过先将数据传给服务器端(Server)、再…

服务器上的常见Linux命令教程

在管理服务器(如香港服务器)时,掌握常见的 Linux 命令 是非常重要的,它们可以帮助你高效地完成服务器管理任务,如文件操作、进程管理、用户管理、网络配置等。 以下是一个系统化的 Linux 常见命令教程,分为…

开发手札:Win+Mac下工程多开联调

最近完成一个Windows/Android/IOS三端多人网络协同项目V1.0版本,进入测试流程了。为了方便自测,需要用unity将一个工程打开多次,分别是Win/IOS/Android版本,进行多角色联调。 在Win开发机上,以Windows版本为主版…

2024 阿里云Debian12.8安装apach2【图文讲解】

1. 更新系统,确保您的系统软件包是最新的 sudo apt update sudo apt upgrade -y 2. 安装 Apache Web 服务器 apt install apache2 -y 3. 安装 PHP 及常用的扩展 apt install php libapache2-mod-php -y apt install php-mysql php-xml php-mbstring php-curl php…

Chromium网络调试篇-Fiddler 5.21.0 使用指南:捕获浏览器HTTP(S)流量(二)

概述 在上一篇文章中,我们介绍了Fiddler的基础功能和如何安装它。今天我们将深入探讨如何使用Fiddler来捕获HTTP请求,这是Fiddler的一个核心能力,对于前端开发者、测试人员以及安全研究人员来说非常有用。捕获HTTP请求可以帮助我们更好地理解…

【开源安全保护】如何安装JumpServer堡垒机

【开源安全保护】如何安装JumpServer堡垒机 什么是堡垒机 大家好,我是星哥,今天我以前来认识堡垒机 堡垒机(Bastion Host),也称为跳板机(Jump Server),是指在计算机网络中&#x…

AIGC 012-Video LDM-更进一步,SD作者将LDM扩展到视频生成任务!

AIGC 012-Video LDM-Stable Video diffusion前身,将LDM扩展到视频生成任务! 文章目录 0 论文工作1论文方法实验结果 0 论文工作 Video LDM作者也是Stable diffusion的作者,作者在SD的架构上进行扩展,实现了视频的生成。后续在Vid…

Qt开源控件:图像刻度轴绘制器 (附源码)工程项目私信博主

项目简介 图像刻度轴绘制器是一款基于 Qt/C 开发的小型绘图工具,旨在实现带有刻度轴的图像显示功能。该项目主要用于需要精确测量或标注图像坐标的场景。通过左侧和底部的坐标轴以及对应的刻度线,可以直观地了解图像内容在二维空间中的位置。 项目功能 …

集成学习综合教程

一、前置知识 一个分类器的分类准确率在60%-80%,即:比随机预测略好,但准确率却不太高,我们可以称之为 “弱分类器”,比如CART(classification and regression tree 分类与回归树)。 反之&#x…