当前位置: 首页 > 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语言中{}括起来的最小代码。 指令层级:单…...

Stripe 支付集成实战:Java后端核心API详解与避坑指南

1. 为什么选择Stripe支付集成? Stripe作为全球领先的在线支付解决方案,特别适合需要处理国际支付的电商或SaaS平台。我在多个跨境项目中采用Stripe后发现,其API设计非常开发者友好,尤其是对Java后端技术栈的支持相当完善。与国内支…...

大模型“表面公平”陷阱(GPT-4/Claude/Gemini三大模型在12类敏感属性上的隐性偏差对比白皮书)

第一章:大模型工程化中的模型公平性评估 2026奇点智能技术大会(https://ml-summit.org) 大模型在招聘筛选、信贷审批、司法辅助等高风险场景中部署前,必须系统性验证其对不同人口统计学群体的预测一致性。公平性不是静态属性,而是需在数据分…...

从telnet到ssh:银河麒麟系统远程管理方案对比与迁移指南

从telnet到ssh:银河麒麟系统远程管理方案对比与迁移指南 在数字化运维的浪潮中,远程管理技术如同系统管理员的"千里眼"和"顺风耳"。银河麒麟作为国产操作系统的代表,其安全性设计一直走在行业前沿。然而,许多…...

3步快速部署开源驾驶辅助系统FlowPilot

3步快速部署开源驾驶辅助系统FlowPilot 【免费下载链接】flowpilot flow-pilot is an openpilot based driver assistance system that runs on linux, windows and android powered machines. 项目地址: https://gitcode.com/gh_mirrors/fl/flowpilot FlowPilot是一款基…...

【内部泄露】某千亿参数大模型压缩技术栈(含自研GEMM-aware剪枝+动态bit-width量化),仅限本文完整复现

第一章:大模型工程化中的模型压缩算法对比 2026奇点智能技术大会(https://ml-summit.org) 模型压缩是实现大语言模型在边缘设备、低延迟服务及成本敏感场景中落地的关键工程环节。不同压缩路径在精度保留、推理加速比、部署兼容性与训练资源消耗上呈现显著权衡&…...

AXI总线协议---关键信号时序解析与实战应用

1. AXI总线协议基础与核心信号解析 AXI(Advanced eXtensible Interface)总线协议是ARM公司推出的高性能片上总线标准,广泛应用于现代SoC设计和FPGA开发中。我第一次接触AXI是在一个图像处理项目里,当时为了调试DMA传输问题&#x…...

为什么92%的大模型项目在灰度阶段超期?资深MLOps架构师披露3个被忽视的工程化断点

第一章:大模型工程化灰度发布策略的全局认知 2026奇点智能技术大会(https://ml-summit.org) 大模型工程化灰度发布并非简单的流量切分,而是融合模型版本管理、服务可观测性、推理性能约束与业务语义反馈的系统性治理过程。它要求在保障线上服务质量&am…...

Verdi高效代码追踪:Auto Trace与Trace X的进阶应用技巧

1. Verdi调试利器:Auto Trace与Trace X入门指南 刚接触Verdi时,我最头疼的就是在复杂的门级网表中追踪信号路径。记得第一次调试一个深度流水线设计时,手动点击了二十多级寄存器才找到信号源头,不仅效率低下还容易遗漏关键路径。直…...

AI模型交付即违规?(大模型工程化中的5大高危伦理雷区与司法判例复盘)

第一章:AI模型交付即违规?(大模型工程化中的5大高危伦理雷区与司法判例复盘) 2026奇点智能技术大会(https://ml-summit.org) 当企业将一个微调后的LLM封装为SaaS服务交付客户时,法律风险可能已在模型权重、提示词模板…...

Orion Framework:嵌入式轻量级REST客户端实现

1. Orion Framework 框架深度解析:面向嵌入式系统的轻量级 REST API 客户端实现1.1 定位与工程价值辨析Orion Framework 并非通用 Web 框架,而是一个专为资源受限嵌入式环境设计的精简型 REST API 客户端通信中间件。其核心工程目标明确:在无…...

RTC-8564实时时钟芯片驱动开发与低功耗设计实践

1. RTC-8564 实时时钟芯片深度技术解析与嵌入式驱动开发实践RTC-8564 是 Philips(现 NXP)推出的一款低功耗、IC 接口实时时钟芯片,广泛应用于工业控制、智能电表、医疗设备、POS 终端及各类需要高精度时间保持能力的嵌入式系统中。该芯片采用…...

ESP32嵌入式Ruby运行时:mruby/c轻量脚本引擎实战

1. 项目概述mrubyc-esp32-arduino是一个面向 ESP32 平台 Arduino Core 的轻量级嵌入式 Ruby 运行时实现,基于mruby/c(micro ruby compact)—— mruby 的超精简子集,专为资源受限的 MCU 环境设计。该项目并非通用 mruby 移植&#…...

FPGA DNA 唯一芯片识别码的实战获取与加密绑定指南

1. FPGA芯片DNA码:你的硬件身份证 第一次听说FPGA芯片还有"DNA"时,我差点笑出声——难道芯片也要做亲子鉴定?后来才发现,这个比喻实在太贴切了。就像每个人的DNA都是独一无二的,每块FPGA芯片也内置了不可复制…...

轻量级旋转编码器驱动库:纯C状态机实现高可靠正交解码

1. 项目概述RotaryEncoder 是一个轻量级、高可靠性的旋转编码器(Rotary Encoder)底层驱动库,专为嵌入式实时系统设计。它不依赖操作系统抽象层(如 FreeRTOS 或 CMSIS-RTOS),亦不绑定特定 HAL 库&#xff08…...

C# WinForm开发:如何用statusStrip1打造一个实用的状态栏(附完整代码)

C# WinForm状态栏实战:从基础布局到高级交互设计 在桌面应用开发中,状态栏作为用户界面的"信息中枢",承担着实时反馈系统状态、显示操作进度和提供快捷操作入口的重要角色。对于C# WinForm开发者而言,StatusStrip控件是…...

GRACE数据处理避坑指南:手把手教你用MATLAB读取ICGEM的gfc文件并转成mat

GRACE数据处理实战:从ICGEM的gfc文件到MATLAB可操作mat文件的完整指南 GRACE卫星数据为地球物理研究提供了前所未有的重力场变化观测能力。作为科研人员,我们经常需要处理来自ICGEM(International Centre for Global Earth Models&#xff09…...

SyncToy三种同步模式详解:镜像/单向/增量到底怎么选?(含真实场景对比)

SyncToy三种同步模式深度解析:从原理到实战的完整指南 你是否曾经因为误删文件而懊恼不已?或是需要在多个设备间频繁同步工作文档却找不到高效的工具?SyncToy作为微软推出的一款轻量级同步工具,凭借其稳定性和易用性赢得了众多专业…...

STANet揭秘:基于时空注意力的遥感图像变化检测新范式与LEVIR-CD数据集实践

1. 遥感图像变化检测的挑战与STANet的诞生 遥感图像变化检测是地理信息系统和计算机视觉交叉领域的重要课题。想象一下,你手上有两张同一区域不同时间拍摄的卫星图像,如何快速准确地找出哪些地方发生了变化?这听起来简单,实际操作…...

别再一关了之!手把手教你用setenforce命令调试SELinux权限问题(附安卓init流程解析)

SELinux调试实战:从权限拒绝到策略优化的完整指南 遇到SELinux权限问题时,很多开发者第一反应是直接关闭它——这就像因为门锁太复杂而直接把大门拆掉。本文将带你深入理解SELinux的工作机制,并掌握一套系统化的调试方法,让你既能…...

WiflyInterface嵌入式Wi-Fi驱动开发与工程实践指南

1. WiflyInterface 库深度解析:面向嵌入式硬件工程师的 WiFly 模块驱动开发指南WiflyInterface 是一个专为嵌入式平台设计的 WiFly(Roving Networks RN-131/RN-171 系列)Wi-Fi 模块通信接口库。该库最初由 ARM mbed 官方团队开发,…...

轻量级嵌入式电机控制库:面向差速机器人的裸机PWM驱动方案

1. 项目概述Simple_Robot_Motor_Control 是一个面向嵌入式机器人平台的轻量级电机控制库,专为资源受限的微控制器(如 STM32F0/F1、ESP32-C3、nRF52832 或 ATmega328P)设计。其核心目标并非提供工业级运动控制算法,而是以极简接口抽…...

保险丝选型

注意:1、保险丝有AC保险丝和DC保险丝,按保险丝工作在交流还是直流选择。 介绍:保险丝是电路过流、短路保护的核心安全元件,核心原理是电流超过额定值时,熔体发热熔断切断电路,防止故障扩大。按熔断速度分为 5 类,分别见下表。在选型 类型 型号后缀 核心特性 典型熔断参…...

107:Prompt Injection实战攻击与防御

作者: HOS(安全风信子) 日期: 2026-04-06 主要来源平台: GitHub 摘要: 本文详细介绍Prompt Injection的攻击原理、攻击类型和防御策略,通过实战案例展示攻击过程和防御方法,为构建安全的AI系统提供指导。通…...

5步解锁暗黑破坏神2存档编辑自由:从新手到专家的完整指南

5步解锁暗黑破坏神2存档编辑自由:从新手到专家的完整指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾经在暗黑破坏神2的单机冒险中感到资源匮乏?是否梦想过自由调整角色属性,打造…...

MusePublic Art Studio新手误区:提示词长度与生成质量关系验证

MusePublic Art Studio新手误区:提示词长度与生成质量关系验证 1. 引言:一个常见的误解 很多刚接触MusePublic Art Studio的朋友,在输入提示词时,常常会陷入一个思维定式:“描述得越详细、越冗长,生成的图…...

嵌入式FIFO缓冲区库:零堆分配、编译期确定的高效队列实现

1. FIFObuf 库概述FIFObuf 是一个专为 Arduino 和 ESP 系列微控制器平台设计的轻量级、模板化缓冲区管理库,提供 FIFO(先进先出)与 LIFO(后进先出)两种数据结构的高效实现。其核心设计哲学是“零运行时开销、最小内存占…...

MTK3339 GPS驱动:嵌入式原始报文捕获与RMC解析增强方案

1. MTK3339 GPS模块底层驱动技术解析:面向嵌入式系统的原始报文捕获与RMC解析增强方案1.1 项目定位与工程价值MTK3339 是联发科(MediaTek)推出的高灵敏度、低功耗GPS基带芯片,广泛应用于工业手持终端、车载定位设备、资产追踪器及…...

Akagi雀魂AI辅助工具:5步快速上手指南,提升你的麻将技术65%

Akagi雀魂AI辅助工具:5步快速上手指南,提升你的麻将技术65% 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Ri…...

漫说运维:LoongCollector 性能与稳定性技术大解密

在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...