js逆向常用代码

news2025/3/3 7:04:11

js逆向常用代码

加载

const loadingStyle = `
      #loadingDiv {
          position: fixed;
          z-index: 9999;
          top: 0;
          left: 0;
          width: 100%;
          height: 100%;
          background-color: rgba(255, 255, 255, 0.8);
          display: flex;
          align-items: center;
          justify-content: center;
          flex-direction: column;
      }
      .loader {
          border: 16px solid #f3f3f3;
          border-radius: 50%;
          border-top: 16px solid #3498db;
          width: 120px;
          height: 120px;
          animation: spin 2s linear infinite;
      }
      .loading-text {
          margin-top: 20px;
          font-size: 20px;
          color: #333;
      }
      @keyframes spin {
          0% { transform: rotate(0deg); }
          100% { transform: rotate(360deg); }
      }
   `;

 const loadingHTML = `
      <div id="loadingDiv">
          <div class="loader"></div>
          <div class="loading-text">正在生成</div>
      </div>
   `;

 // 显示加载页面的方法
 function showLoadingScreen() {
   // 创建样式元素并插入到head中
   const style = document.createElement("style");
   style.type = "text/css";
   style.id = "loadingStyle";
   style.innerHTML = loadingStyle;
   document.head.appendChild(style);

   // 创建加载层元素并插入到body中
   const loadingDiv = document.createElement("div");
   loadingDiv.innerHTML = loadingHTML;
   document.body.appendChild(loadingDiv);
 }

 // 隐藏加载页面的方法
 function hideLoadingScreen() {
   const loadingDiv = document.getElementById("loadingDiv");
   if (loadingDiv) {
     loadingDiv.style.display = "none";
   }
   const style = document.getElementById("loadingStyle");
   if (style) {
     style.remove();
   }
 }

拦截图片生成

var originalCreateObjectURL = URL.createObjectURL;
// 重写createObjectURL方法
URL.createObjectURL = function (blob) {
  // 调用原始的createObjectURL方法,并返回其结果
  var originalResult = originalCreateObjectURL(blob);
  // 返回重写后的结果
  return originalResult;
};
 // 保存原始的 Image 构造函数
const OriginalImage = window.Image;

// 创建一个自定义的 Image 构造函数
function CustomImage() {
  const img = new OriginalImage();

  // 定义一个 setter 拦截 src 属性
  Object.defineProperty(img, "src", {
    set: function (url) {
      // 继续设置 src 属性
      img.setAttribute("src", url);
    },
  });

  return img;
}
window.Image = CustomImage;
const originalCreateElement = document.createElement;
 // 重写 createElement 方法
 document.createElement = function (tagName) {
   const element = originalCreateElement.call(document, tagName);
   if (tagName.toLowerCase() === "img") {
     // 定义一个 setter 拦截 src 属性
     Object.defineProperty(element, "src", {
       set: function (url) {
        
         element.setAttribute("src", url);
       },
       get: function () {
         return element.getAttribute("src");
       },
     });
   }

   return element;
 };

拦截apply函数

const originalApply = Function.prototype.apply;
Object.defineProperty(Function.prototype, "apply", {
  value: function (target, thisArg, argArray) {
   
    // 调用原始的 apply 方法
    return originalApply.call(this, target, thisArg, argArray);;
  },
});

拦截Function的构建函数

Function.prototype.constructor_ = Function.prototype.constructor;
Function.prototype.constructor=function Function(){
  console.log(arguments)
  return this.constructor_(...arguments)
}

拦截Vue加载

// 创建一个 MutationObserver 实例
    const observer = new MutationObserver((mutationsList) => {
        for (const mutation of mutationsList) {
            if (mutation.type === "childList") {
                // 遍历新增的节点
                for (const addedNode of mutation.addedNodes) {
                    if (addedNode.tagName === "SCRIPT") {
                        const scriptSrc = addedNode.src;
                        // 检查是否为 Vue.js 文件
                        if (scriptSrc && scriptSrc.includes("vue")) {
                            // 监听 script 标签的 load 事件
                            addedNode.addEventListener("load", () => {
                                console.log("Vue.js 文件加载成功");
                                // 在这里可以执行你需要的操作
                                // 例如检查 Vue 是否可用
                                if (typeof Vue !== "undefined") {
                                    const originalBeforeCreate = Vue.options.beforeCreate || [];
                                    Vue.options.beforeCreate = [
                                        function () {
                                            console.log(
                                                "Vue instance is about to be created.",
                                                this
                                            );
                                            debugger
                                            // 在这里添加自定义代码
                                        },
                                        ...originalBeforeCreate,
                                    ];
                                }
                            });
                        }
                    }
                }
            }
        }
    });

    // 配置观察选项
    const config = { childList: true, subtree: true };

    // 开始观察 document.body
    observer.observe(document.head, config);

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

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

相关文章

Diffusion——扩散模型(未完待续)

论文链接&#xff1a;https://arxiv.org/abs/2006.11239 简介 扩散模型&#xff08;Diffusion Model&#xff09;是用于生成数据的一类深度生成模型&#xff0c;特别擅长于图像生成。其工作原理基于通过随机噪声的逐步转换来生成目标数据。扩散模型分为两部分&#xff1a;正向…

Java内存管理与性能优化实践

Java内存管理与性能优化实践 Java作为一种广泛使用的编程语言&#xff0c;其内存管理和性能优化是开发者在日常工作中需要深入了解的重要内容。Java的内存管理机制借助于垃圾回收&#xff08;GC&#xff09;来自动处理内存的分配和释放&#xff0c;但要实现高效的内存管理和优…

unsloth报错FileNotFoundError: [WinError 3] 系统找不到指定的路径。

运行平台 Windows 报错信息 Traceback (most recent call last): File “C:\Python312\Lib\site-packages\IPython\core\interactiveshell.py”, line 3577, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File “”, line 1, in runfile(‘D:\python_pr…

不同规模企业如何精准选择AI工具: DeepSeek、Grok 和 ChatGPT 三款主流 AI 工具深度剖析与对比

本文深入探讨了最近国内外主流的 DeepSeek、Grok 和 ChatGPT 三款主流 AI 工具的技术细节、性能表现、应用场景及局限性&#xff0c;并从技术能力、功能需求、成本预算、数据安全和合规以及服务与支持五个关键维度&#xff0c;详细分析了不同规模企业在选择 AI 工具时的考量因素…

Docker入门指南:Windows下docker配置镜像源加速下载

Windows下docker配置镜像源加速下载 docker的官方镜像是海外仓库&#xff0c;默认下载耗时较长&#xff0c;而且经常出现断站的现象&#xff0c;因此需要配置国内镜像源。 国内镜像源概述 国内现有如下镜像源可以使用 "http://hub-mirror.c.163.com", "http…

java后端开发day24--阶段项目(一)

&#xff08;以下内容全部来自上述课程&#xff09; GUI&#xff1a;Graphical User Interface 图形用户接口&#xff0c;采取图形化的方式显示操作界面 分为两套体系&#xff1a;AWT包&#xff08;有兼容问题&#xff09;和Swing包&#xff08;常用&#xff09; 拼图小游戏…

TVbox蜂蜜影视:智能电视观影新选择,简洁界面与强大功能兼具

蜂蜜影视是一款基于猫影视开源项目 CatVodTVJarLoader 开发的智能电视软件&#xff0c;专为追求简洁与高效观影体验的用户设计。该软件从零开始编写&#xff0c;界面清爽&#xff0c;操作流畅&#xff0c;特别适合在智能电视上使用。其最大的亮点在于能够自动跳过失效的播放地址…

2025.3.2机器学习笔记:PINN文献阅读

2025.3.2周报 一、文献阅读题目信息摘要Abstract创新点网络架构实验结论不足以及展望 一、文献阅读 题目信息 题目&#xff1a; Physics-Informed Neural Networks of the Saint-Venant Equations for Downscaling a Large-Scale River Model期刊&#xff1a; Water Resource…

2025AI 有哪些重要的发展趋势?

2025 年&#xff0c;AI 有哪些重要的发展趋势&#xff1f; 看看大佬们的看法&#xff1a; 马斯克&#xff1a;“人形机器人生产、自动驾驶突破、脑机接口进化” 奥特曼&#xff1a;“2025年&#xff0c;AGI即将到来” 黄仁勋&#xff1a;“通用机器人元年、能源效率的提升”…

IDEAPyCharm安装ProxyAI(CodeGPT)插件连接DeepSeek-R1教程

背景&#xff1a;最近DeepSeek比较火嘛&#xff0c;然后在githup上也看到了GitHub Copilot&#xff0c;就想着现在AI的准确率已经可以提高工作效率了。所以从网上找了一些编程插件&#xff0c;发现Proxy支持的模型比较多&#xff0c;通用性和适配性比较好。所以本文记录一下pro…

【前端基础】Day 3 CSS-2

目录 1. Emmet语法 1.1 快速生成HTML结构语法 1.2 快速生成CSS样式语法 2. CSS的复合选择器 2.1 后代选择器 2.2 子选择器 2.3 并集选择器 2.4 伪类选择器 2.4.1 链接伪类选择器 2.4.2 focus伪类选择器 2.5 复合选择器总结 3. CSS的元素显示模式 3.1 什么是元素显示…

windows电脑上安装llama-factory实现大模型微调

一、安装环境准备 这是官方给的llama-factory安装教程&#xff0c;安装 - LLaMA Factory&#xff0c;上面介绍了linux系统上以及windows系统上如何正确安装。大家依照安装步骤基本能够完成安装&#xff0c;但是可能由于缺少经验或者相关的知识导致启动webUi界面运行相应内容时…

汽车无人驾驶系统中的防撞设计

一、系统方案介绍 无人驾驶汽车的防撞系统是保障行车安全的核心模块&#xff0c;本文设计的系统以STM32F103C8T6单片机为主控制器&#xff0c;结合超声波测距、WiFi通信、人机交互等模块&#xff0c;实现障碍物实时检测、动态阈值设置、多级报警和数据可视化功能。系统通过软…

Linux网络 DNS

DNS(Domain Name System) TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序 &#xff0c; 但是 IP 地址不方便记忆。于是人们发明了一种叫主机名的东西, 是一个字符串 , 并且使用 hosts 文件来描述主机名和 IP 地址的关系 。 最初 , 通过互连网信息中…

EMQX中不同端口对应的接入协议

使用tcp接入时应使用mqtt://IP:1883 使用ws接入时应使用ws://IP:8083

SpringBoot原理-03.自动配置-方案

一.自动配置原理 探究自动配置原理&#xff0c;就是探究spring是如何在运行时将要依赖JAR包提供的配置类和bean对象注入到IOC容器当中。我们当前准备一个maven项目itheima-utils&#xff0c;这里面定义了bean对象以及配置类&#xff0c;用来模拟第三方提供的依赖&#xff0c;首…

(KTransformers) RTX4090单卡运行 DeepSeek-R1 671B

安装环境为&#xff1a;ubuntu 22.04 x86_64 下载模型 编辑文件vim url.list 写入如下内容 https://modelscope.cn/models/unsloth/DeepSeek-R1-GGUF/resolve/master/DeepSeek-R1-Q4_K_M/DeepSeek-R1-Q4_K_M-00001-of-00009.gguf https://modelscope.cn/models/unsloth/Dee…

【软考-架构】1.2、指令系统-存储系统-cache

GitHub地址&#xff1a;https://github.com/tyronczt/system_architect ✨资料&文章更新✨ 指令系统 计算机指令执行过程&#xff1a;取指令一一分析指令一一执行指令三个步骤&#xff0c;首先将程序计数器PC中的指令地址取出&#xff0c;送入地址总线&#xff0c;CPU依据…

动态规划刷题

文章目录 动态规划三步问题题目解析代码 动态规划 1. 状态表示&#xff1a;dp[i]&#xff0c;表示dp表中i下标位置的值 2. 状态转移方程&#xff1a;以i位置位置的状态&#xff0c;最近的一步来划分问题&#xff0c;比如可以将状态拆分成前状态来表示现状态&#xff0c;dp[i] …

2025-03-01 学习记录--C/C++-C语言 整数类型对比

C语言 整数类型对比 类型位数范围&#xff08;有符号&#xff09;范围&#xff08;无符号&#xff09;格式化符号char8-128 到 1270 到 255%c 或 %hhdshort16-32,768 到 32,7670 到 65,535%hdint32-2,147,483,648 到 2,147,483,6470 到 4,294,967,295%dlong32 或 64-2,147,483…