当前位置: 首页 > article >正文

我试了四种去除 Gemini 水印的方法,整理成一篇实用对比野

认识Pass层级结构Pass范围从上到下一共分为5个层级模块层级单个.ll或.bc文件调用图层级函数调用的关系。函数层级单个函数。基本块层级单个代码块。例如C语言中{}括起来的最小代码。指令层级单个IR指令。注意下面代码最好不要用中文使用起来非常麻烦控制台编译目标文件的编码不同会造成乱码。项目目录如下/MyProject├── CMakeLists.txt # CMake 配置文件├── build/ #构建目录│ └── test.c #测试编译代码└── mypass1.cpp # pass 项目代码一测试代码示例test.c#includevoid secret_function() {printf(I am secret\n);}int main() {secret_function();return 0;}二Pass编写项目描述通过解析下面代码的IR将下面代码中的函数名打印出来。mypass1.cpp#include llvm/IR/PassManager.h#include llvm/Passes/PassBuilder.h#include llvm/Passes/PassPlugin.h#include llvm/Support/raw_ostream.husing namespace llvm;// 这个结构体基本是固定模板namespace {struct mypass1 : public PassInfoMixin {//函数回调每次遇到函数时调用这里有重载存在多种入口方式可以以模块为入口PreservedAnalyses run(Function F, FunctionAnalysisManager ) {//这里是主要的逻辑代码我们主要学习的代码在这//打印出当前函数的名字errs() Found Function: F.getName() \n;//只读时返回PreservedAnalyses::all()//存在修改时PreservedAnalyses::none()return PreservedAnalyses::all();}};}//下面基本上是固定的模板每个pass没什么变化可以直接复制粘贴或者背熟。//直接使用需要修改的是下面的模块名称版本号调用参数和调用的pass结构体extern C LLVM_ATTRIBUTE_WEAK::llvm::PassPluginLibraryInfollvmGetPassPluginInfo() {return {LLVM_PLUGIN_API_VERSION,//版本信息mypass1,//模块信息自定义v0.1,//版本号自定义[](PassBuilder PB) {PB.registerPipelineParsingCallback([](StringRef Name, FunctionPassManager FPM,ArrayRef) {if (Name mypass1) {//调用参数FPM.addPass(mypass1());//上面pass结构体return true;}return false;});}};}三Pass的构建构建LLVM Pass需要写CMakeLists.txt构建声明1. 配置CMake配置文件CMakeLists.txt下面的cmake配置可以直接拿去用我已经标注好需要修改的位置#cmake 版本可通过 cmake --version 判断cmake_minimum_required(VERSION 4.1.1) #----修改 cmake版本号#项目名字project(mypass1) #----修改 项目名称#导入项目的 LLVM cmake 配置文件路径(如果根据我之前文章安装这里就相同)set(LLVM_DIR D:/LLVM/llvm-project/build/lib/cmake/llvm)#----修改 llvm cmake配置路径#寻找 LLVM 的包文件#REQUIRED 找不到 LLVM 则停止构建#强制使用 LLVM 安装时生成的配置文件进行定位find_package(LLVM REQUIRED CONFIG)#将 LLVM 的 CMake 模块路径添加到当前 CMake 搜索路径中以便后续使用 include(AddLLVM)。list(APPEND CMAKE_MODULE_PATH ${LLVM_CMAKE_DIR})#引入 LLVM 提供的专用 CMake 宏include(AddLLVM)#将 LLVM 的头文件目录如 llvm/IR/Function.h加入编译器的搜索路径include_directories(${LLVM_INCLUDE_DIRS})#导入 LLVM 编译时使用的宏定义add_definitions(${LLVM_DEFINITIONS})#设置 C 标准为 C17。(这里如果不用17编译会报错)set(CMAKE_CXX_STANDARD 17)#强制要求必须支持 C17如果编译器不支持则失败。set(CMAKE_CXX_STANDARD_REQUIRED ON)#创建一个模块化的库(.dll)add_library(mypass1 MODULE mypass1.cpp) #----修改 项目名称文件名#windows不用会报错导出符号#LLVM Pass 需要暴露一些特定的入口点如 getAnalysisUsage给 opt 工具调用。set_target_properties(mypass1 PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) #----修改 项目名称# 指定该 Pass 需要链接的 LLVM 核心组件。# LLVMCore: 提供 IR、Function、Module 等核心类。# LLVMSupport: 提供各种辅助工具类如 errs() 输出。target_link_libraries(mypass1 LLVMCore LLVMSupport) #----修改 项目名称文件名# 为该目标设置特定的编译器选项。# /utf-8: 告诉 MSVC 编译器使用 UTF-8 编码处理源代码防止中文注释引起的乱码或编译错误。target_compile_options(mypass1 PRIVATE /utf-8)#----修改 项目名称文件名2.编译并构建Pass打开visual studio的工作台我这里是x64 Native Tools Command Prompt for VS 2022进到build目录#构建项目#其中-DCMAKE_BUILD_TYPERelWithDebInfo不选会报错由于我之前编译的是带符号的relase版本cmake -G Ninja -DCMAKE_BUILD_TYPERelWithDebInfo ..#编译ninja最后出现下面提示即为编译成功[2/2] Linking CXX shared module mypass1.dll四使用你第一个Pass进到build目录#把.c文件编译为.ll#-O1 使用O1优化这里我尝试-O0不优化会导致我的pass无法应用#-Xclang -disable-llvm-passes 不使用默认的pass优化clang -S -emit-llvm -O1 -Xclang -disable-llvm-passes test.c -S -o test.ll#使用passopt -load-pass-pluginmypass1.dll -passesmypass1 test.ll -S -o test_opt.ll输出结果Found Function: sprintfFound Function: vsprintfFound Function: _snprintfFound Function: _vsnprintfFound Function: secret_functionFound Function: printfFound Function: mainFound Function: _vsprintf_lFound Function: _vsnprintf_lFound Function: __local_stdio_printf_optionsFound Function: _vfprintf_l韶啥池姥

相关文章:

我试了四种去除 Gemini 水印的方法,整理成一篇实用对比野

认识Pass层级结构 Pass范围从上到下一共分为5个层级: 模块层级:单个.ll或.bc文件 调用图层级:函数调用的关系。 函数层级:单个函数。 基本块层级:单个代码块。例如C语言中{}括起来的最小代码。 指令层级:单…...

JDK 21最新版安装配置全攻略:从Oracle账户获取到环境变量设置(附可用共享账号)

JDK 21高效安装与深度配置实战指南 Java开发环境的搭建是每位开发者入门的必修课,但Oracle官网的账户限制和复杂的配置流程常常让新手望而却步。本文将彻底解决这些问题,不仅提供绕过Oracle登录限制的实用方案,还会深入解析环境变量配置的底层…...

AI原生研发运维自动化成熟度评估矩阵(CMMI-AIOps 2.1版):含19项量化指标、自测工具包与TOP3瓶颈突破路线图

第一章:AI原生研发运维自动化成熟度评估矩阵(CMMI-AIOps 2.1版)概览 2026奇点智能技术大会(https://ml-summit.org) CMMI-AIOps 2.1版是面向AI原生系统全生命周期的评估框架,聚焦模型开发、训练调度、推理服务、可观测性治理与自…...

SEAL: Enhancing Multimodal LLMs with Dynamic Visual Search for High-Resolution Image Understanding

1. 为什么高分辨率图像理解对多模态大模型如此重要? 想象一下你正在用手机查看一张4000万像素的旅游照片,试图找出远处山脚下的小木屋。人类可以自然地通过视觉搜索机制——先扫描整体景观,再逐步聚焦到特定区域——快速定位目标。但现有的多…...

OpenClaw 飞书机器人对接教程,零基础一步到位

前言 OpenClaw(小龙虾)v2.6.0版本支持飞书机器人对接,完成配置后,可直接在飞书聊天窗口向机器人发送自然语言指令,由OpenClaw自动拆解任务、操控电脑执行操作,实现飞书端远程下达AI任务的效果。 OpenClaw…...

墨语灵犀处理403 Forbidden错误:智能排查与解决方案生成

墨语灵犀处理403 Forbidden错误:智能排查与解决方案生成 遇到网站打不开,显示“403 Forbidden”,是不是感觉有点懵?这个错误在运维和开发中太常见了,它就像一道“禁止入内”的门,告诉你服务器收到了请求&a…...

p-stable LSH与E2LSH:从理论到实践的欧氏空间近似最近邻搜索

1. 当高维数据遇上最近邻搜索:从暴力破解到LSH 想象一下,你手里有一张包含100万张图片的数据集,每张图片都被表示成4096维的特征向量。现在用户上传了一张新图片,你需要快速找到数据集中与它最相似的10张图片。如果采用暴力搜索&a…...

ArchivePasswordTestTool技术深度解析:基于7zip引擎的自动化密码测试架构实现

ArchivePasswordTestTool技术深度解析:基于7zip引擎的自动化密码测试架构实现 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 在…...

mPLUG零售分析:消费者行为视觉识别方案

mPLUG零售分析:消费者行为视觉识别方案 1. 引言 走进任何一家零售门店,你是否曾好奇:顾客进门后往哪里走?他们在哪个货架前停留最久?哪些商品被拿起又放下?这些看似简单的行为背后,隐藏着消费…...

Overleaf上LaTeX Beamer字体自定义实战:手把手教你用fontspec包搞定中文和英文字体

Overleaf平台LaTeX Beamer字体定制全攻略:从基础配置到高级技巧 在学术报告和教学演示领域,LaTeX Beamer因其专业的排版质量和稳定的输出效果而备受青睐。然而,当涉及到中英混排场景时,许多用户都会遇到字体配置的挑战——如何让中…...

OpenCore引导菜单深度解析:从单调文本到专业图形界面的进阶调优

OpenCore引导菜单深度解析:从单调文本到专业图形界面的进阶调优 【免费下载链接】OpenCore-Install-Guide Repo for the OpenCore Install Guide 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Install-Guide OpenCore作为现代黑苹果引导方案的核心…...

从‘单向导电’到‘电流引导’:重新理解GPIO保护二极管的真实工作模式

从‘单向导电’到‘电流引导’:重新理解GPIO保护二极管的真实工作模式 在嵌入式硬件设计中,GPIO保护二极管常被简化为"防反接开关"的角色,这种认知掩盖了其作为动态电流路径选择器的本质。当我们用阻抗网络和分流原理重新审视这个经…...

Android集成chineseocr_lite实战:4.7M超轻量级中文OCR完整指南

Android集成chineseocr_lite实战:4.7M超轻量级中文OCR完整指南 【免费下载链接】chineseocr_lite 超轻量级中文ocr,支持竖排文字识别, 支持ncnn、mnn、tnn推理 ( dbnet(1.8M) crnn(2.5M) anglenet(378KB)) 总模型仅4.7M 项目地址: https://gitcode.…...

解决Bootstrap项目中日期时间选择难题:bootstrap-datetimepicker深度集成指南

解决Bootstrap项目中日期时间选择难题:bootstrap-datetimepicker深度集成指南 【免费下载链接】bootstrap-datetimepicker 项目地址: https://gitcode.com/gh_mirrors/boo/bootstrap-datetimepicker 在Bootstrap项目开发中,日期时间选择器是表单…...

STM32实战指南_打造智能厨房安全卫士(硬件选型+代码解析+调试技巧)

1. 项目背景与需求分析 厨房是家庭安全隐患的高发区域,尤其是燃气泄漏和高温引发的安全问题。去年我邻居家就因燃气阀门未关紧导致轻微中毒,这件事让我下定决心开发一个低成本、高可靠性的厨房安全监测系统。基于STM32的方案不仅成本可控(整…...

Vivado里用Block Memory Generator搞个双端口RAM,这5个坑我帮你踩过了

Vivado双端口RAM配置实战:Block Memory Generator避坑指南 在FPGA开发中,高效利用片上存储资源是提升系统性能的关键。Xilinx Vivado提供的Block Memory Generator(BMG)IP核能够快速生成优化的存储结构,但其中双端口RA…...

Legacy iOS Kit:让旧款iPhone/iPad重获新生的终极降级工具

Legacy iOS Kit:让旧款iPhone/iPad重获新生的终极降级工具 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit …...

Qwen3智能字幕系统部署案例:中小企业视频号运营字幕自动化方案

Qwen3智能字幕系统部署案例:中小企业视频号运营字幕自动化方案 1. 引言:视频运营的字幕痛点与解决方案 在短视频内容爆发的时代,中小企业视频号运营面临一个共同难题:字幕制作。传统手动添加字幕的方式不仅耗时耗力,…...

手把手教你用STM32F103C8T6和HC-06蓝牙模块,实现手机App远程控制LED灯

从零搭建STM32蓝牙LED控制系统:硬件连接、代码解析与手机端交互全指南 当你第一次看到手机App能远程控制LED灯亮灭时,那种"科技魔法成真"的兴奋感,正是嵌入式开发的魅力所在。本文将带你用最常见的STM32F103C8T6开发板(…...

Win10环境下GY8508 CAN总线驱动安装全流程与哈希值校验绕过技巧

1. GY8508 CAN总线驱动安装前的准备工作 在工业自动化领域,GY8508 CAN总线设备是常见的通信接口模块。但在Windows 10系统上安装驱动时,很多工程师都会遇到哈希值校验失败的问题。我去年在给某汽车生产线调试设备时就遇到过这个坑,折腾了大半…...

【文献分享】CONCERT 在空间转录组学中预测了针对特定领域的扰动反应

文章目录介绍代码参考介绍 空间扰动转录组学用于测量基因或化学修饰如何改变基因表达,同时保持组织环境的完整性。扰动的结果取决于细胞的内在状态,也取决于这些影响在细胞微环境中的传播方式。 我们推出了 CONCERT 这款针对特定区域的生成模型&#xf…...

matlab 点云体素中心最近邻点下采样(详细过程版)

目录 一、算法原理 1、实现过程 二、代码实现 三、结果展示 博客长期更新,本文最近一次更新时间为:2026年4月10日。 一、算法原理 1、实现过程 点云体素最近邻点滤波核心思想是通过空间网格化,在每个网格(体素)内仅保留一个最具代表性的点,以达到简化点云、减少数据量的…...

从零到精通:Windows系统风扇控制终极方案深度解析

从零到精通:Windows系统风扇控制终极方案深度解析 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fan…...

医疗AI助手MedGemma X-Ray:一键部署,体验智能影像识别与分析

MedGemma X-Ray:一键部署,体验智能影像识别与分析 1. 医疗AI助手的革命性价值 在医学影像领域,每一张X光片都承载着关键的健康信息。传统影像分析高度依赖医生的经验积累,而MedGemma X-Ray的出现,为这一领域带来了全…...

芯驰X9车规级芯片实战:如何用6核Cortex-A55打造智能座舱(附开发板评测)

芯驰X9车规级芯片开发实战:从选型到多屏异显的智能座舱全流程解析 在智能汽车快速普及的今天,座舱系统的智能化程度已成为消费者购车的重要考量因素。作为国内领先的车规级芯片解决方案,芯驰X9凭借其6核Cortex-A55架构和丰富的接口资源&#…...

用WPF和OpenCVSharp从零搭建一个Vision Master风格的视觉软件(附完整源码)

从零构建工业级视觉处理软件:WPFOpenCVSharp实战指南 工业视觉检测系统正逐渐成为智能制造的核心组件,但市面上成熟的商业软件往往价格昂贵且难以定制。作为一名长期从事工业自动化开发的工程师,我经常遇到需要快速开发定制化视觉解决方案的场…...

别再傻傻分不清!一张图看懂EtherCAT从站Startup list和CoE-online的核心差异与应用选型

EtherCAT从站配置双刃剑:Startup list与CoE-online的实战抉择指南 第一次接触EtherCAT从站配置时,面对Startup list和CoE-online这两个选项,不少工程师都会陷入选择困难。这两种配置方式看似都能实现参数设定,但底层逻辑和适用场景…...

从OBD到UDS:一文搞懂ISO14229 0x19服务中排放与非排放DTC的查询差异与实战

从OBD到UDS:深度解析ISO14229 0x19服务中排放与非排放DTC的差异化处理 在汽车电子控制单元(ECU)的开发与测试中,诊断故障码(DTC)的管理一直是工程师面临的核心挑战之一。特别是随着全球排放法规的日益严格&…...

LAYONTHEGROUND景

一、什么是requests? requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你: 轻松发送GET、POST、PUT、DELETE等请求 处理Cookie、会话等复杂性 自动解压缩内容 处理国际化域名和URL 二、应用场景 requests 广泛应用于以下实际场景: …...

告别复杂配置:用MS-Swift + vLLM 5分钟搞定Qwen2.5-VL的API服务部署与调用

5分钟极速部署Qwen2.5-VL多模态API:MS-Swift与vLLM实战指南 当我们需要将多模态大模型快速集成到智能客服、内容审核或教育工具中时,传统部署流程往往让人望而却步——从环境配置到模型优化,再到API封装,每一步都可能成为项目落地…...