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

OpenClaw截图分析:gemma-3-12b-it识别界面元素并自动操作

OpenClaw截图分析:gemma-3-12b-it识别界面元素并自动操作 1. 为什么需要截图分析自动化 上周我需要批量处理一批老旧的财务软件数据,这个软件没有API接口,甚至不支持命令行操作。当我盯着屏幕上重复的"点击-输入-保存"流程时&…...

Phi-3-mini-4k-instruct-gguf入门指南:中文标点智能补全、引号嵌套处理与段落空行控制

Phi-3-mini-4k-instruct-gguf入门指南:中文标点智能补全、引号嵌套处理与段落空行控制 1. 认识Phi-3-mini-4k-instruct-gguf Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本,特别适合中文场景下的问答、文本改写、摘要整理…...

大数据运维项目二大数据分布式集群

图1.集群基础配置Linux 集群基础配置全流程详解(网络 / 时钟 / SSH 免密 / JDK 部署)在大数据、云计算等分布式场景中,集群基础环境配置是所有服务搭建的前置步骤,直接决定后续 Hadoop、Spark 等组件能否稳定运行。本文基于实战经…...

Qt桌面应用集成Edge内核:保姆级WebView2环境配置与NuGet包本地化部署指南

Qt桌面应用集成Edge内核:WebView2环境配置与本地化部署实战 在Windows平台下开发Qt应用时,传统的Qt WebEngine模块虽然功能完备,但存在启动缓慢、内存占用高、编译体积大等问题。许多开发者开始寻求更轻量高效的替代方案,而微软E…...

Qwen3-4B-Thinking模型重装系统后快速恢复AI开发环境指南

Qwen3-4B-Thinking模型重装系统后快速恢复AI开发环境指南 重装系统,对开发者来说,有时候就像一场“数字大扫除”,清爽是清爽了,但看着空空如也的桌面和终端,要重新搭建起那个熟悉的AI开发环境,头就开始疼了…...

从模板库到函数调用:解锁CODESYS组件依赖与2小时掉线限制的实战指南

1. 为什么你的CODESYS Runtime总在2小时后掉线? 很多开发者在使用CODESYS开发工业控制项目时,都会遇到一个让人头疼的问题——Runtime运行2小时后就会自动断开连接。这个问题其实源于CODESYS的试用保护机制。官方默认配置会对未授权的组件进行时间限制&a…...

在Windows 10/11上部署ArcGIS 10.2开发环境:ArcEngine SDK for .NET配置详解

在Windows 10/11上构建ArcGIS 10.2开发环境:从零开始打造GIS应用 当你第一次尝试在Visual Studio中调用ArcEngine的类库时,是否遇到过令人抓狂的"未找到引用"错误?或是明明按照教程一步步操作,却在运行时遭遇神秘的许可…...

Elsevier论文审稿状态追踪工具:让科研进度管理变得轻松

Elsevier论文审稿状态追踪工具:让科研进度管理变得轻松 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 还在为论文投稿后的漫长等待而焦虑吗?Elsevier论文审稿状态追踪工具是一款专为科研工作…...

IP地址什么?工业场景网络注意事项有哪些?妆

OCP原则 ocp指开闭原则,对扩展开放,对修改关闭。是七大原则中最基本的一个原则。 依赖倒置原则(DIP) 什么是依赖倒置原则 核心是面向接口编程、面向抽象编程, 不是面向具体编程。 依赖倒置原则的目的 降低耦合度&#…...

Windows下Vcenter 8.0保姆级安装教程(含时间同步避坑指南)

Windows平台vCenter 8.0全流程部署指南与时间同步优化方案 虚拟化运维工程师在构建私有云环境时,vCenter Server的部署质量直接影响整个虚拟化平台的稳定性。本文将基于Windows操作环境,详细拆解vCenter Server Appliance 8.0的安装全流程,特…...

大白原创:Trade Copilot账户盈亏统计工具免费使用

文章来源:大白E宝库/123财经导航工具获取提示:工具的功能模块更新迭代频繁,为了你能第一时间获得最新的版本,请关注留言领取!该工具全网免费提供,如发现贩卖行为请立即举报!分享好友使用可获得额…...

官宣在即!安切洛蒂续约巴西队至2030年,年薪1000万欧元,将带两个世界杯周期

据ESPN巴西版报道,巴西国家队主教练安切洛蒂已与巴西足协达成续约口头协议,新合同将持续至2030年世界杯,年薪维持1000万欧元不变。这意味着,66岁的意大利名帅将带队打完两个世界杯周期——从2026年美加墨世界杯到2030年百年世界杯…...

哔哩下载姬DownKyi完整使用教程:从零掌握B站视频高效下载与管理

哔哩下载姬DownKyi完整使用教程:从零掌握B站视频高效下载与管理 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印…...

2026 云南 GEO 优化服务商深度测评:5 家实力对比

一、测评前言:AI 时代,云南本地企业为何必须重视 GEO 优化?步入 2026 年,AI 生成式搜索已全面重构互联网流量格局。相较于传统搜索引擎,豆包、文心一言、通义千问等主流 AI 大模型更倾向于精准、权威、本地化的内容推荐…...

Quartus文件格式全解析:从Verilog到编程文件的完整指南

1. Quartus文件体系全景概览 第一次打开Quartus工程目录时,看到几十种不同后缀的文件是不是有点懵?这就像刚搬进新家面对一堆未拆封的纸箱,需要先搞清楚每个箱子里装的是什么。作为FPGA开发的"集装箱",Quartus文件可以分…...

NTC温度采样

该电路实现了一个带缓冲、滤波和电压钳位的NTC温度采样通道。其目的是安全、准确地将反映IGBT温度的NTC电阻值,转换为MCU可安全读取的模拟电压。前端是一个NTC和电阻组成的分压,将热信号变为阻值变化,阻值变化通过电压反应。这部分是RC低通滤…...

破解重庆企业数据治理困局:基于本地化定制的大数据平台如何构建统一主数据标准

引言 在数字化转型浪潮席卷全国的背景下,重庆作为西部重要的制造业与商贸枢纽,正加速推进“智造重镇”和“智慧名城”建设。然而,众多中大型企业在迈向数据驱动的过程中,普遍面临数据孤岛林立、标准不一、质量低下、合规风险高等核…...

HTML 中使用 EXIF.js 读取图片元数据失败的常见原因与解决方案

本文详解在 html 页面中使用 exif.js 库无法获取图片 exif 信息的核心原因(主要是跨域限制),提供可立即运行的修复代码、cors 原理说明及本地开发避坑指南。 本文详解在 html 页面中使用 exif.js 库无法获取图片 exif 信息的核心原因&am…...

计算机毕业设计:Python智慧天气数据采集与可视化系统 Django框架 线性回归 数据分析 大数据 机器学习 大模型 气象数据(建议收藏)✅

博主介绍:✌全网粉丝50W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战8年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...

NumPy怎么删去单维度_np.squeeze()移除shape中长度为1的冗余轴

...

批量音频音量调整工具使用说明:固定增减分贝与目标响度两种模式怎么选

音频素材一多,“音量不一致”会非常影响体验:同一套课程、同一期播客、同一批口播,听起来忽大忽小,不是观感问题,是会把人听烦。【批量音频音量调整工具】的核心思路很直白:选一个主文件夹,把里…...

RoCE v2实战指南:如何用普通以太网卡搭建无损RDMA网络(附PFC/ECN配置模板)

RoCE v2企业级部署实战:从零构建无损以太网RDMA网络 在数据中心性能敏感型应用中,传统TCP/IP协议栈的瓶颈日益凸显。微软Azure实测数据显示,采用RoCE v2的存储集群相比传统TCP/IP方案,延迟降低83%的同时CPU利用率下降65%。本文将深…...

显示屏适配优势深度解析:交期与服务双维赋能品质把控

作为仪器设备厂商的客户品质人员,在显示屏选型过程中,交期稳定性与全流程服务能力是保障设备研发进度、量产交付及长期运维的核心要素。恒域威显示屏通过供应链整合、生产管控优化及服务体系创新,在交期响应与柔性交付、全周期服务支持等方面…...

DDR5内存实战:如何优化读操作性能(附BL32模式配置指南)

DDR5内存实战:如何优化读操作性能(附BL32模式配置指南) 在服务器和高性能计算领域,内存子系统的性能调优往往是工程师们最关注的焦点之一。随着DDR5内存的普及,其更高的带宽和更低的功耗为系统性能带来了显著提升&…...

TI IWR1843+DCA1000数据采集实战:手把手教你用Matlab调用LUA脚本配置mmWave Studio参数

TI IWR1843DCA1000数据采集实战:从零掌握Matlab与LUA协同配置技巧 毫米波雷达开发中,参数配置的精准度直接决定了数据采集的质量。传统手动配置不仅效率低下,还容易因操作失误导致实验失败。本文将带你用Matlab与LUA脚本的黄金组合&#xff0…...

uniapp消息推送权限处理指南:如何优雅地引导用户开启通知权限

Uniapp消息推送权限优化实战:从检测到引导的全链路设计 移动应用的消息推送功能直接影响用户活跃度和留存率,但很多开发者忽略了权限引导这一关键环节。据统计,超过40%的用户首次安装应用时会默认关闭通知权限,导致重要消息无法触…...

Oracle归档日志爆满急救指南

作为运维工程师,你一定遇到过这样的紧急情况:/oracle/app/archivelog 目录突然爆满,数据库挂起无法写入,业务全线中断。你慌忙执行了网上找到的 DELETE OBSOLETE 命令,却发现磁盘空间纹丝不动 —— 目录里还躺着好几年…...

【模拟IC】从指标到参数:二级运放GBW与相位裕度的设计实战

1. 理解GBW与相位裕度的工程意义 第一次接触运放设计时,看到GBW100MHz、PM>60这样的指标要求,就像拿到一张没有说明书的电路图。作为从业十年的模拟IC工程师,我至今记得当初面对这些抽象参数时的困惑。**增益带宽积(GBW)和相位裕度(PM)**本…...

MindSpore 环境配置完全指南雀

前面我们对 Kafka 的整体架构和一些关键的概念有了一个基本的认知,本文主要介绍 Kafka 的一些配置参数。掌握这些参数的作用对我们的运维和调优工作还是非常有帮助的。 写在前面 Kafka 作为一个成熟的事件流平台,有非常多的配置参数。详细的参数列表可以…...