某 Telegram AI陪聊 任意注册账号漏洞 LiesAuer's Blog 作者 LiesAuer 2025年12月29日 21:41 通过大量注册并配合脚本签到领取砖石(聊天积分)养出僵尸大军,再自己起一个平台中转,除服务器外,直接就是零本万利。  ❗️❗️❗️猜猜这个8字头的单位是啥,百/千/万/十万/百万?😄 
某 Telegram AI陪聊 跨渠道登录漏洞 LiesAuer's Blog 作者 LiesAuer 2025年12月29日 20:41 渠道:one::小程序 渠道:six::Web 首先通过渠道:one:登录,发现界面并没有根据渠道进行完全的适配,这个端口是绑定平台ID的,通过平台入口进去是自动登录的,不应该存在邮箱以及密码等常规渠道配置。 进行邮箱绑定操作,发现功能正常运行无报错。  通过一些科技扒到渠道:six:登录入口,这个其实是通用入口,也能通过渠道ID自由进入,不同的渠道登录配置不一样,然后尝试重置密码操作。   由于账号是在渠道:one:注册的,此时的登录入口是渠道:six:的,所以会报账号不存在的报错,再次通过一些科技手段将请求的渠道ID篡改成渠道:one:,发现正常修改成功无报错,再次验证API接口是通用的,并没做严格的渠道区分。 
OPPO 快游戏在浏览器复现运行(四)之游戏入口加载 LiesAuer's Blog 作者 LiesAuer 2025年12月17日 00:05 一直以来,`web.sdk.js`都是通过以下方式加载快游戏的。 ```html ``` 在大部分的游戏中也是没有问题的,由于`web.sdk.js`中存在大量的异步加载逻辑,因此将`main.js`定义为模块,并在代码最前面补充加载等待是对游戏原代码侵入较小的一种方案,而且恰恰是模块,因此顶级 await 也就非常顺理成章了。 ```js await window.qg.ready(); ``` 直到遇到下面某款游戏的入口(代码片段) ```js await window.qg.ready(); window['qg'].setIsUnityGame(true); const xgame = qg; require("ral.js"); ``` 初步一看,看似没啥毛病对吧,非常简单的一个代码片段,但问题就出在了那行平平无奇的`const xgame = qg;`,由于`main.js`是模块,自带作用域隔离,因此此时的作用域是模块内部作用域,并非全局作用域,然后加载`ral.js`时就出问题了,`ral.js`是访问不到`xgame`的,会直接报错导致游戏加载中断。 为了解决这个问题,那么就不能将游戏入口定义为模块,不定义为模块,就没法在顶级 await,而且还得同时兼顾执行上下文的问题,在众多动态执行JS代码的方案中,那么很明显就只有动态创建script标签加载是最合适的了。 那么没办法,就只能在`web.sdk.js`中初始化自身后动态加载`main.js`了,由于快游戏的入口是固定的,因此直接硬编码加载也是没得问题的,这里处理后,`main.js`也就不需要`await window.qg.ready();`了,游戏入口代码零侵入。 ``` window.qg._ready = true; await requireAsync("main.js"); ```
OPPO 快游戏在浏览器复现运行(三)之 require 函数 LiesAuer's Blog 作者 LiesAuer 2025年12月16日 23:29 本质上,快游戏框架是基于V8引擎魔改出来的,因此天然支持`require`函数,但在 Web 中实现这个功能就不简单了,第一版的方案是想着将`main.js`作为模块在最顶级加载,然后通过将所有的`require`调用都改为`await`。 ```js await require("./libs/min/laya.core.min.js"); await require("./libs/min/laya.ani.min.js"); await require("./libs/min/laya.ui.min.js"); ``` ```js async function require(url) { const script = document.createElement("script"); script.type = "text/javascript"; script.async = false; script.defer = false; script.src = url; await new Promise((resolve, reject) => { script.onload = () => { script.remove(); resolve(); }; script.onerror = () => { script.remove(); reject(); }; document.body.constructor.prototype.appendChild.apply(document.body, [script]); }); } ``` 一开始,这个方案也是走得通的,对于一些简单的游戏改的方便,加载也是没啥问题的,但是随着接触的快游戏越来越多,这个方案就越发难走下去,主要有两个问题: 1. 对原代码侵入性太大,特别是对于加密混淆过的代码来说,改起来比登天难 2. 游戏初始化复杂性导致异步加载的方案始终会面临运行顺序差异导致的运行异常 特别是第二点,直接影响了`web.sdk.js`能否继续搞下去,因此异步加载的方案就毙了,必须走同步的形式,而同步加载第一个难点就是如何在浏览器中同步获取到压根没加载的JS代码呢?难不成在`web.sdk.js`之前先把所有的JS代码以字符串形式打包进去吗?不需要!!!不知道你们是否还记得上一篇文章中提到过得文件系统,回顾请看 → [OPPO 快游戏在浏览器复现运行(二)之文件系统](https://www.liesauer.net/blog/post/1007.html "OPPO 快游戏在浏览器复现运行(二)之文件系统"),而这个文件系统是带了同步 + 异步两套 API 的,那么就让我想到了一个非常有意思的方案。 在`web.sdk.js`初始化阶段,我们可以先通过异步 API 将整个游戏“安装”到浏览器中,而底层存储自然就通过 IndexedDB 来做了,让整个启动流程像打开 APP 一样,第一次先安装再打开的过程。“安装”完过后,我们就可以通过同步 API 将游戏的JS代码以同步的形式读取出来了。 读取问题解决了,那就剩下加载问题了,这里我们就需要在 Web 端把 NodeJS 中的`require`函数复刻出来了,这个的话有太多的现成库作参考了,这里我就使用了阮一峰老师的 [tiny-browser-require](https://github.com/ruanyf/tiny-browser-require/blob/master/require.js "tiny-browser-require") 作为基础并针对快游戏做了一定的适配。 至此,`require`也算是比较“完美”的实现了,当然和原版`require`还是差很远的,比如寻路规则、循环依赖、加载缓存等等问题都没处理,但对于快游戏来说目前是够用了。 这也是这个项目最迷人的地方,所有的东西都是环环相扣的,少一样都不行,一旦把他们联通起来,那种茅塞顿开的感觉太妙了。
利用零宽字符制作PushMe HTML消息摘要 LiesAuer's Blog 作者 LiesAuer 2025年9月6日 10:18 在使用 PushMe 推送 HTML 消息时,由于 PushMe 默认生成的消息摘要是自动提取的,在很多时候这个摘要并没有起到什么作用,特别是有表格等复杂数据时,如下图。  然后想着试下利用摘要不解析 HTML 的这个特性,使用一段`display:none`的文字作为消息摘要,在点进去正文时,解析 HTML 后也会看不见这段摘要。 刚开始尝试使用超多的` `将正文部分推到很后的地方,摘要为摘要,正文为正文,但是自动提取出来的摘要会将连续空格转为单个,还是会导致正文出现在摘要里。 示例消息 ```html 这是简介 HTML ``` 然后又想到了零宽字符,看下会不会将零宽字符也转成单个空格,由于我博客不好插入能显示且能复制的零宽字符,所以就只能将方法放出来,自己操作一遍了,利用这个工具生成零宽字符:point_right: [零宽字符生成工具](https://yuanfux.github.io/zero-width-web/ "零宽字符生成工具")。  当你正确生成且复制,内容应该是这样的,我们保留零宽字符部分即可  为了填充足够的摘要,不让正文显示出来,我们需要把整段零宽字符复制 15-20 遍,然后最终成品长这样  最终在 PushMe 的展示效果如下,就非常的 nice。  
Navicat Premium Lite 官方免登录版本(17.0) LiesAuer's Blog 作者 LiesAuer 2025年8月26日 14:31 Navicat Premium Lite 刚出的时候(17.0版本)是免登录的,后续版本需要登录才能使用。安装后请自行关闭自动检查版本更新。百度出来全是给网盘和公众号引流的吊毛,本博客只提供官方直链,不提供文件暂存,可自行备份一份,免得哪天官方把历史版本下载链接给下了。 ## 官方下载链接 [navicat170_premium_lite_cs_x64.exe](https://download.navicat.com/download/navicat170_premium_lite_cs_x64.exe "navicat170_premium_lite_cs_x64.exe") [navicat170_premium_lite_cs.dmg](https://download.navicat.com/download/navicat170_premium_lite_cs.dmg "navicat170_premium_lite_cs.dmg") [navicat17-premium-lite-cs-x86_64.AppImage](https://download.navicat.com/download/navicat17-premium-lite-cs-x86_64.AppImage "navicat17-premium-lite-cs-x86_64.AppImage") [navicat17-premium-lite-cs-aarch64.AppImage](https://download.navicat.com/download/navicat17-premium-lite-cs-aarch64.AppImage "navicat17-premium-lite-cs-aarch64.AppImage")
OPPO 快游戏在浏览器复现运行(二)之文件系统 LiesAuer's Blog 作者 LiesAuer 2025年8月18日 22:44 快游戏/快应用其实和普通的应用是类似的,除了不用安装以及环境不一样外,他们都是有“包”的概念,也就是启动快游戏后都是从包内读取并加载资源(js、其他资源)。 内容加载一般分几种情况: 1. 入口js、框架js等,一般是直接通过 require 方法加载 2. 固定资源(部分js、配置文件、初始资源等)一般是通过文件系统的 readFile 从包中加载 3. 热资源(动态资源、动态js等)一般是通过 xhr 远程加载 4. 某些框架也是会通过 readFile 进行远程加载 其中除了 readFile 加载本地资源外,require、readFile 远程加载都存在巨多坑,后面会专门讲。 根据快游戏的开发文档,文件系统是有同步+异步API的,因此在 web 端实现也得同步兼容,而浏览器自带的 [IndexedDB](https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API "IndexedDB") 天生自带两套API,因此使用 [IndexedDB](https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API "IndexedDB") 作为底层存储就成为了不二之选,当然也不可能纯从零手撸一个 FS 出来,中间层则使用 [ZenFS](https://github.com/zen-fs/core "ZenFS") 做链接,在此之上封装出整套 [文件管理器](https://developer.huawei.com/consumer/cn/doc/quickApp-References/quickgame-api-file-0000001084194212#section10341171144119 "文件管理器") API,也得益于 [ZenFS](https://github.com/zen-fs/core "ZenFS") 开发地完善,接口高度相似,因此封装起来没花费多少时间,而这里的坑也是目前来说最少的地方。其他的地方简直一言难尽:astonished:。 
OPPO 快游戏在浏览器复现运行(一)之初步完美移植第一款游戏 LiesAuer's Blog 作者 LiesAuer 2025年8月8日 16:46 在补充了近千行sdk代码后,也是顺利无报错的完美运行XX宿舍。 当然这小一千行的代码可能甚至只覆盖 1/10 都不到,满级完成度代码量在一两万行应该是差不多的,目前已完成: - 桌面图标 API - 广告 API(4/7) - 文件系统 API - 跑通单个游戏所需的琐碎 API(未整理)   
OPPO 快游戏在浏览器复现运行(零)之初尝移植 LiesAuer's Blog 作者 LiesAuer 2025年8月5日 15:47 近期无聊发现在快游戏中心有挺多好玩的小游戏,质量也比网上那些H5游戏高很多(忽略广告因素,因为我手机是装了广告屏蔽的,所有游戏都很干净,后期在web中也很容易去除)。 通过将手机内的快游戏dump出来解包后发现其实就基本算是一个web项目,确定好入口将一些关键的分包加载、文件加载实现后,主体逻辑都能加载出来了,但是报了很多SDK以及bridge层的报错,这个只能根据快应用平台的SDK文档把整个sdk补充完整,因为快应用是国内大厂合伙搞的,所以我就随便找了华为的文档补了几个关键方法,就将游戏跑了起来。 理论上将整个SDK补充完整后,在入口前将sdk进行preload,应该是能完美运行所有快应用的。 抓包、解包、补环境等细节在后面再补充文章,等能做到在手机中dump出来一键/脚本转换成H5可运行的状态再公布细节。 这样子就能把很多优质游戏搬到网页中游玩了。 
NFC 卡片与应用隐藏的神奇碰撞 LiesAuer's Blog 作者 LiesAuer 2025年7月22日 15:56 相信大家多多少少都听过或者见过使用 NFC 卡片来进行原神启动的有趣玩法,当然其中的原理其实并不神奇,本文也不多做介绍,可以自行了解。 本文介绍的是博主无意间发现的一个神奇“BUG”,为啥打双引号呢,因为博主认为单在功能上他并不算是,但在使用上以及用户侧博主认为算是漏洞。 我们都知道现在大多数手机系统都自带了应用锁这个功能,虽然各个厂商对这个功能的理解都有点不一样,具体实现逻辑也不太一样,但总的都能划分成两个主要功能: 1. 入口隐藏 在桌面以及应用列表隐藏掉这个 App,但也仅此而已,通过其他一些特殊手段也能打开启动 App。 2. 启动加锁 打开 App 后需要密码或者其他鉴权(指纹、人脸等)才能正常进入。 博主使用的一加,ColorOS 14,这两个功能就是独立开来的。  某天博主灵机一动,能不能通过 NFC 卡片来直接启动隐藏的 App 呢?我刚好有几张可写的 NFC 白卡,当即试了一下,是可以的!至少 ColorOS 14 上是可行的。 那可能有人就问了,哎,主包主包,这有什么用呢,拿到手机之后一样可以很容易查出来,而且还可以加锁啊。 主包只能说,有的,兄弟有的,NFC 卡片利用的门槛非常低,一贴手机就完事了,而且我相信只要用过手机刷卡的几乎都是24小时开着 NFC 的。至于加锁嘛,试想一下,我往你手机一碰,某小蓝 App 、某陌 App 就启动了,管你加没加锁,你慢慢解释去吧,手动狗头:full_moon_with_face:。
前端逆向接活 LiesAuer's Blog 作者 LiesAuer 2025年7月18日 11:08 模拟请求、扣算法、参数逆向、WS转HTTP,转发封装,你懂的你不懂的,有需求就来。 有验证码、人机验证场景的请自备打码平台,只对接打码平台。 不接国内社交平台、短视频平台、电商平台 不接过验证码、人机验证、人脸识别
豆包APP生图无水印保存方法 LiesAuer's Blog 作者 LiesAuer 2025年7月18日 09:27 9.5.0版本亲试还可以使用。 ## 操作方法 一步一步跟着操作即可。     
最近很火的微信恶搞代码 LiesAuer's Blog 作者 LiesAuer 2025年7月14日 10:59 ## 食用方式 1. 只对 Android 有效,iOS、PC 上看到的都是代码 2. 发代码时必须引用消息,不能直接发 3. 发完的代码不能在微信里复制二次使用 4. 且玩且珍惜,说不定哪天就 ban 了 ## 点击自动回复 ```html 1. 猪脚饭 2. 黄焖鸡 ```  ## 点击发起语音电话 ```html 点击加入美女一对一语音聊天 ``` ### 注意点 1. 只要点了,会出现一个额外的幽灵好友聊天,而且会本地删除好友,这是单向的,只有自己的通讯录没了好友,聊天记录啥的都在(删除幽灵好友聊天不会删除真实的好友聊天记录,重新加好友对方也不会收到消息),这个副作用有点大,慎玩! 2. 自己给自己打会提示非好友,打不过去 3. 界面会显示多人语音,另一个人就是上面提到的幽灵好友 4. 甚至可以给文件传输助手打电话。。。当然永远不可能会有人接,如果接了,那兄弟,你得找个人做做法了:fearful:  不能自己给自己打  界面显示为多人通话  ## 点击发起视频聊天 ```html 点击加入美女一对一视频聊天 ``` ### 注意点 1. 同语音电话
青龙面板 + PushMe 对TG未读信息做通知提示 LiesAuer's Blog 作者 LiesAuer 2025年7月4日 11:38 在和客户对接时,某些客户可能会倾向于使用TG这类的软件进行沟通交流,虽说基本上梯子不离身,但在国内环境下也没有长挂梯子 + 常驻TG的习惯,就导致和客户的沟通时效性非常差,比如客户早上来信息了,你可能下午才看到,双方互相回复一波消息后,双方都可能到晚上才看到,这时可能时间太晚了,只能等到第二天才能处理,明明半天甚至一两个小时的沟通硬是拖成了两天,导致项目的进度严重滞后。 利用青龙面板的定时任务 + 脚本环境搭配上 PushMe,就可以做到无需常驻即可实时接收回复消息。  
ColorOS 关闭视频彩铃/运营商视频通话教程 LiesAuer's Blog 作者 LiesAuer 2025年5月22日 16:46 相信大家打电话时都多多少少遇到过类似下图这样烦人的视频彩铃,下面教大家如何关闭它。  此教程理论一加/OPPO/真我手机都适用,具体可自行测试。 ## 1. 安装 *创建快捷方式* APP 下载链接: [com.x7890.shortcutcreator.apk](https://storage.liesauer.net/2025/07/108110793.apk) ## 2. 按图操作 :one:左上角三个点,勾选“搜索活动列表”,再勾选“显示系统应用”  :two:在最上面搜索“移动”,并找到“设置”,点击右边的“活动列表”  :three:点击第一个“移动网络”的“详情”  :four:最下面“附加Action”,选择“自定义”,然后清空右边输入框的内容,最后点击最上面的“打开”按钮  :five:在弹出的设置页面中,找到“运营商视频通话”并关闭,这样子以后打电话就不会再有那些乱七八糟烦人的视频彩铃了。  ## 原教程出处 [3步搞定!OPPO/一加/真我手机视频彩铃关闭教程](https://mbd.baidu.com/newspage/data/videolanding?nid=sv_4729643160189921593 "3步搞定!OPPO/一加/真我手机视频彩铃关闭教程")
豆包文生图超真实随手自拍照 LiesAuer's Blog 作者 LiesAuer 2025年5月17日 09:45 出处均来自抖音评论区 ```text 请帮我生成一张平白无奇的自拍照片,没有明确的构图感,随手一拍。室内打光不均导致的轻微曝光,整体呈现出一种刻意的平庸感,像是从口袋拿出手机随便一张自拍。人物为将五官完全遮住的美女,穿着还原动漫角色(不要重复)的装扮,着重体现出腿部和身材,姿势要自然符合现实自拍逻辑,身材比例不用过于夸张,手机要体现出真实,更加还原真实女性皮肤质感,照片略带运动模糊。图片比例3:4 ``` ```text 帮我生成一张图片:图片风格为「人像摄影」,请你画一张及其平凡无奇的iPhone对镜自拍照,主角是穿着JK风格cos服的可爱女孩,在自己精心布置的可按风格的房间内的落地镜前用后置摄像头随手一拍的快照。照片开启了闪光灯,略带点快门速度不够导致的运动模糊,构图混乱,整体呈现出一种平庸和日常感,比例「9:16」。比例16:9。 ``` ```text 请你生成一张极其平凡无奇的iphone自拍照,没有明确的主体或构图感,就是随手拍的快照。照片略带运动模糊,阳光或室内打光不均导致的轻微曝光过度,整体呈现出一种刻意的平庸感,就像是从口袋里拿手机时不小心拍到的一张自拍。主角是绫波丽coser和明日香coser ``` ```text 帮我生成一个可爱女孩,站在自己精心布置的可爱风格的房间内的落地镜前用后置摄像头随手一拍的照片。主角是穿着深蓝色格裙(裙子长度为39cm)+白色收腰衬衫+白色小腿袜的jk风格的可爱女孩。照片开启了闪光灯,略带点快门速度不够导致的运动模糊,构图混乱, 整体呈现出一种平庸的日常感,手机要挡住脸。照片为竖屏的9:16。 ``` 下面是实测效果,本文不作任何评价。 
AI 陪聊通用 PUA 攻击(提示词攻击) LiesAuer's Blog 作者 LiesAuer 2025年5月14日 20:03 **由于某些个体的不厚道做法,往后 AI 陪聊相关的所有`逆向 / 漏洞`方面的文章不再透露任何细节。** 通过 `PUA 攻击(提示词攻击)`,目前已经过验证可以达到以下效果,更多玩法还在研究中: 1. 逆向角色卡 通过提示词 PUA + 剧情反推 + 二次总结,可以将角色卡逆向出来,但是逆向出来的角色卡通常没有原卡好使,可以靠人工微调优化,通过逆向角色卡将友商的数据“借鉴”出来自己搭酒馆使用。世界卡理论上也能推出来,但得花费很多的:small_blue_diamond:。 2. 喂大力丸 通过提示词 PUA,可以实现便宜的角色卡达到昂贵的角色卡差不多的回复效果,这样子可以省很多很多的:small_blue_diamond:,但这个也得看用的哪家的 LLM,具体效果会有较大差异,需要针对不同模型优化。 3. 长剧情输出 通过提示词 PUA,使其可以达到 *5x - 20x* 长度的剧情回复效果,但部分 AI陪聊 存在硬性的长度限制,会被强制截断,可以优化补充提示词,使其不超过特定长度即可。优点嘛那自然就是省很多很多的:small_blue_diamond:,缺点也很明显那就是没法较细的控制剧情进度,很容易一次性就把单场景给推完,自行取舍吧。 4. 灵魂互换 先找到一张最便宜的角色卡,再找一张你想聊的角色卡,通过 *攻击1* 先把该角色卡逆向出来,直接喂进去,接着再通过 *攻击2* 达到暴力输出结果,你喜欢的话再配合 *攻击3*,这么一套 combo 下来,虽然效果会差很多,但要啥自行车呢。 理论通杀市面上所有的 *AI陪聊*,这么一套组合拳下来,都能任意畅聊了,不针对任何个体,只能说老弟你还得练:full_moon_with_face:。 提示词攻击(提示词工程)是 LLM 的通病了,只要不刻意封杀,理论玩到死。 目前都是属于明文攻击,即直接把提示词喂给 AI,其实是很容易在后台检测拦截封杀的,目前在研究一种新的加密攻击方式,通过将攻击提示词隐藏在看似正常的剧情对话中,看似平平无奇,实则暗藏杀机:trollface:,代价嘛自然就是得花费巨量的:small_blue_diamond:。