首页
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
Search
1
宝塔面板登录 phpMyAdmin 提示服务器和客户端上指示的HTTPS之间不匹配
379 阅读
2
Customer complaints evolve with in-car tech
265 阅读
3
JavaScript解析
194 阅读
4
所谓关系
178 阅读
5
解决Edge浏览器提示“此网站已被人举报不安全”
150 阅读
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVASCRIPT
javascript基础
Oracle
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
登录
Search
标签搜索
期刊读物
古文
何瑜明
累计撰写
196
篇文章
累计收到
154
条评论
首页
栏目
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVASCRIPT
javascript基础
Oracle
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
页面
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
搜索到
51
篇与
的结果
2026-07-08
逆向记录
完整逻辑演进:两周走了哪些路,为什么走到今天阶段一:代理抓包 + 协议分析(7/6)我们当时怎么想的:"先别碰客户端,让数据自己说话。搭个中间人代理,看看客户端和服务器到底在聊什么。"做了什么:公网服务器搭 TCP 代理(:13000 → 150.158.48.18:13000)+ HTTP 更新服(:8888)轻量版代理抓了 602 个包,31KB验证了握手结构:7B → 25B → 23B → 加密验证了加密是确定性的(重放客户端包 → 服务器返回相同密文)收获了什么:包 0/1 明文,包 2 是 23B 子密钥,之后全加密子密钥首字节固定 0x12,但跨会话可变穷举标准密码全失败(MD5/SHA/RC4/MT19937)知道了有加密,但不知道加密在哪发生的为什么停在这里:代理只能看密文。看不到加密前的数据,就永远不知道协议字段长什么样。认知升级:这是正确的起点——先搞清楚"对手长什么样"。但这个阶段的结论也很明确:只看密文不够,必须深入客户端。阶段二:neasec 补丁(7/6)— 死路我们当时怎么想的:"目录里有个 neasec.dll,导出 StartSecInput、SetSecVersion,名字带 sec,肯定就是加密器。废掉它就能拿到明文。"做了什么:StartSecInput 补丁(c3 ret 直接返回)→ 加密仍在DllMain 补丁(mov eax,1; ret)→ 加密仍在空壳 DLL 替换(4 个导出全 ret)→ 游戏正常启动,加密仍在为什么这条路是死路:三次补丁全部无效,学到一个事实:neasec 不是加密器。它是什么?反作弊/HTTP 遥测。名字里的 "sec" 是 "security"(反外挂),不是 "security"(密码学)。我们被名字误导了。为什么停在这里:事实证明 neasec 和网络加密完全无关。继续折腾它是浪费生命。认知升级:第一次撞墙,但学到关键教训:文件名和导出名会骗人。唯一可信的是运行时行为。阶段三:静态分析找加密入口(7/7)— 死路我们当时怎么想的:"neasec 不是加密器 → 加密在 my.exe 里 → 反汇编找。一个大加密函数肯定有巨型栈帧、多轮循环、状态机。"做了什么:capstone 反汇编 my.exe,找到大栈帧函数 0x1e6a7(632B 栈帧、8 状态机)找到格式序列化入口 0x16974找到调用点 0x406C10为什么这条路是死路:全部零触发。这些地址在运行时不走。为什么停在这里:静态分析能定位"看起来像加密"的函数,但没法告诉我们"游戏实际走不走这里"。认知升级:第二次撞墙,学到第二个关键教训:静态分析和运行时是两回事。 一个函数"看起来像加密"不等于"游戏调用它"。静态分析给的是可能性,不是事实。阶段四:Frida 真机 Hook — 系统化探索(7/7-7/9)— 转折点我们当时怎么想的:"不猜了。让 CPU 自己告诉我们调用链。Hook 网络发送的底层 API,反查谁调用了它。"做了什么:模块枚举 → 发现 xymain.dll 两个进程都不加载这直接推翻了之前所有基于 xymain 的分析方案ws2_32.send Hook → 稳定抓密文 ✅证明我们能抓到真实的网络数据Thread.backtrace → 拿到调用链:send ← c9485 ← c953c ← c9cc1 ← 69df6逐层 Hook 验证:函数 触发频率 数据内容 结论send_wrapper (c9485) 每 send 1 次 密文 唯一可靠的 send 入口caller_2 (c953c) 每 send 272 次 未知参数 热函数,高频触发caller_3 (c9cc1) 每 send 448 次 未知参数 热函数,高频触发py_bridge (69df6) 零触发 — 调用链不完整encrypt 函数 Hook 成功但零触发 — rotor 只解密 NPK,不走网络xygame Hook 成功但零触发 — 处理渲染,不走网络PyRun_SimpleString 直接调 crash — 时机/上下文不对收获了什么:send_wrapper @ 0xc9485 是唯一可靠的 send 入口(1:1 对应)c953c 和 c9cc1 是 send 路径上的热函数69df6 零触发意味着 backtrace 采样不完整,调用链更深处还有东西c953c/c9cc1 的高频触发不是噪音——这正是逐字段构建数据包的行为为什么当时没继续这条线:我们被"找到加密函数"的目标框住了。c953c/c9cc1 是 272 次/448 次的触发频率,在当时看来是"调试噪音",我们过滤掉了它,继续去追想象中的"加密函数"。认知升级(回头看才知道的):这是整个探索最大的教训。我们已经踩到了明文字段构建的入口,但认知框架让我们把它当噪音丢弃了。 如果当时 hook 了这两个函数 dump 参数,协议破解可能当天就完成了。阶段五:KVM Windows VM(7/7-7/8)— 死路我们当时怎么想的:"需要一个 Windows 环境自动化 Frida 抓密钥。用 Docker 起 KVM,预配好所有东西,一键跑。"做了什么:dockurr/windows 起 KVM磁盘预配置(Python + Frida + 游戏 + 自启动脚本)迭代调试循环(停→挂盘→查日志→改脚本→重启,每轮 7 分钟)为什么这条路是死路:KVM 在 Intel N100 4核12G 上太勉强Python 3.12 兼容性问题pip 在 VM 里可能回退到源码编译卡死为什么停在这里:资源太重 + 你有 Windows 真机可以直接跑 Frida,完全不需要 VM 绕路。认知升级:第三次撞墙。技术方案的选择要考虑执行环境的约束。N100 跑 KVM 就是小马拉大车,每轮迭代 7 分钟的反馈周期太慢,直接拖死生产力。阶段六:NPK 解密 → PyRun_SimpleString 自举(7/8)— 进行中我们当时怎么想的:"NPK 加密是 rotor,key 已知(j2h56ogodh3se),算法已复现。卡在自定义 opcode 153。与其猜 opcode,不如让游戏 Python 引擎自己跑解密。用 PyRun_SimpleString 注入代码,把解密后的 Python 源码写到文件。"做了什么:v1:PyEval hook 内调 PyRun_SimpleString,输出到 C:\frida_pyout.txtv2:修 tasklist 解析(正则)、修触发时机(setTimeout 8s 替代计数 300)、加 try/except现状:v2 脚本已经写好,等你跑结果。如果跑通意味着什么:一次性拿到所有 Python 源码、协议定义、密钥。社区说的"python里都有"——NPK 是加密的 Python 脚本包,解密 NPK = 拿到全部协议逻辑。这条路的风险:PyRun_SimpleString 可能 crash(v1 就崩了)时机难把握(v2 用 setTimeout 8s 延迟触发)输出重定向可能失败但这个方向是对的——攻陷 Python 层可以一次性解所有问题,不用在 C 层和加密函数死磕。逻辑主线总结想抓协议明文 │ ├─→ 代理抓密文 ✓(知道有加密,不知道在哪) │ ├─→ neasec 补丁 ✗(证明非加密器) │ └─ 教训:名字会骗人,只有运行时行为可信 │ ├─→ 静态分析找加密入口 ✗(运行时不走) │ └─ 教训:静态分析和运行时是两回事 │ ├─→ Frida 动态探索 ✓(找到调用链,但追加密函数卡住) │ └─ 最大教训:c953c/c9cc1 是明文字段构建入口,我们当时当噪音过滤掉了 │ ├─→ KVM 自动化 ✗(太重) │ └─ 教训:执行环境约束决定方案可行性 │ └─→ PyRun_SimpleString 自举 ⏳(正确方向——攻陷 Python 层一次性解所有问题)核心教训"python里都有"这句话从头就在那,我们花了快两周才真正理解它的分量。整个探索从 C 层逆向开始,在加密函数上绕了最远的路。neasec 不是加密器、静态分析零触发、VM 太重——这些死路的共同根源是一个认知框架问题:我们默认加密发生在 C 层,默认需要逆向才能拿到协议定义。但事实是:加密是 Python 层调 C 层做的协议定义在 Python 源码里Python 源码就在 NPK 里NPK 解密需要的 rotor key 我们已经有了如果第一周就全力攻 PyRun_SimpleString 自举,可能早就拿到源码了。
2026年07月08日
3 阅读
0 评论
0 点赞
2026-06-25
向量模型
向量 = 给语义“拍一张数字照片”你可以把向量想象成一种语义坐标。每个文字片段(一句话、一段记忆)送到向量模型里,出来的那串数字(比如 [0.12, -0.34, 0.78, …])就是它在“语义世界”中的位置。这张“数字照片”抓住了这段话的意思,而不是具体的用词。举个例子:“我养了一只狗” → 向量 A“我的宠物是柯基” → 向量 B“明天会下雨” → 向量 C在语义世界里,A 和 B 的点会很近,因为它们都和“养狗/宠物”有关。而 C 的点会离它们俩都很远,因为它在讲天气。为什么近就代表“相关”?——靠训练时的拉近与推远向量模型在训练时,做的事情非常直接:把意思相近的文本拉近,把意思无关的文本推远。训练数据是大量的“文本对”和相似度标签,比如:正例:“今天好热”→“气温很高”(拉近)负例:“今天好热”→“今天股票跌了”(推远)经过几亿次这样的“拉”和“推”,模型就学会了一套规则:把语义相近的任何文本,都映射到空间中彼此靠近的位置。所以,当把记忆文本和当前问题都映射到同一个空间后,距离自然就代表了语义相关性。检索时发生了什么?——在语义地图上找邻居当你问 Agent:“我的宠物叫什么名字?”这句问题被向量模型转换成查询向量 Q,也就是问题在语义空间里的一个点。向量数据库里,保存着每条记忆的向量位置,比如:M1:“我养了一只狗叫旺财” → 在位置 P1M2:“我喜欢吃披萨” → 在位置 P2M3:“我家狗狗是柯基” → 在位置 P3计算 Q 到所有 P 的距离,发现 P1 和 P3 离 Q 非常近,P2 离得远。于是 M1、M3 被提取出来,因为它们在语义地图上和问题站在了同一个街区。这就是“怎么知道哪些记忆是当前问题所需要的”本质:不是靠关键词匹配,而是靠在意思构成的高维空间中,找离问题点最近的那些记忆点。一个形象的二维类比(实际是几百维)想象你把世界上所有文本的意思,压平到一个巨大的二维地图上:“狗”、“宠物”、“遛狗”相关的内容,都集中在“宠物区”。“机票”、“航班”、“出行”集中在“旅行区”。“代码”、“调试”、“报错”集中在“编程区”。当你问一个关于“宠物”的问题,这个问题会被定位到地图的宠物区。然后你划一个半径很小的圆,圆里所有的记忆就都和宠物有关。那些“机票”“代码”的记忆远在别的区,根本不会被选中。真实模型用的是几百上千维的空间,它比你想象的地图要细腻得多,能区分“狗”和“猫”的细微差异,也能捕捉“可爱”和“凶猛”这种抽象关系。一个容易被忽略的关键:同一个模型映射能实现这种效果,还有一个硬性要求:记忆入库时用的向量模型,和查询时用的向量模型,必须是同一个。因为每个模型创造的“语义世界”不同,地图比例尺、街道命名都不一样。只有用同一张“地图”,查询向量才能准确地落在记忆旁边。总结向量:就是语义的数字坐标,意思相近 = 坐标靠近。怎么知道哪些记忆相关:把问题也变成坐标,在坐标空间里找离它最近的那些记忆点。这背后是模型被训练成了把相似文本映射到相近位置的规则。整个过程完全基于语义理解,而不是关键词匹配,所以即使问题说“宠物”,记忆里写的是“狗”,它们也能撞到一起。
2026年06月25日
4 阅读
0 评论
0 点赞
2026-06-08
不依赖入站连接的 Cloudflare Worker 方案
一、问题Cloudflare Worker 部署后默认的 *.workers.dev 域名在国内被 DNS 污染,无法直接访问。常规解决方案(绑定自定义域名)需要将域名 DNS 托管给 Cloudflare 或购买付费套餐(Cloudflare for SaaS)。如果你不想转移 DNS 管理,也没有预算,怎么办?二、解决思路核心思想:让 Worker 只做出站请求,不依赖入站连接。Worker 从 Cloudflare 边缘节点主动抓取 RSS/API(出站 fetch 不受任何限制)抓取到的数据通过 HTTP POST 发送到你的一台公网服务器公网服务器经 WireGuard 隧道转发给本地容器容器既可接收推送,也可主动抓取备用数据源这样,用户(或下游系统)通过访问你的公网服务器获取数据,完全无需触碰 workers.dev 域名。
2026年06月08日
5 阅读
0 评论
0 点赞
2026-06-04
绕过封锁访问国外网站
方案的核心原理是利用 Cloudflare Workers 的边缘计算能力与 KV 存储的全球可访问性,构建一个“抓取-缓存-读取”的间接链路,从而规避网络封锁。Worker 抓取:绕开封锁部署位置:Worker 脚本运行在 Cloudflare 的边缘节点上。这些节点遍布全球,用户可以指定代码在特定地区(如美国)的节点上执行。抓取行为:Worker 直接向 usatoday.com 发起 HTTP 请求。由于该请求发自境外节点,且 Cloudflare 边缘网络本身不被封锁,所以能够正常获取内容,不受国内网络访问限制策略的影响。KV 存储:中间缓存KV 命名空间:Worker 获取到 USA Today 的响应后,通过 Cloudflare Workers KV API 将数据写入一个 KV 命名空间(键值对存储)。KV 是 Cloudflare 提供的全球分布式、低延迟的持久化存储。数据格式:可以存储 HTML、JSON、纯文本等任意内容,并设置 TTL(生存时间)以实现自动过期更新。服务器读取:通过公网 API访问路径:服务器不再直接访问被封锁的 USA Today,也不再调用可能被屏蔽的 workers.dev 子域名。而是通过 Cloudflare 公开的 REST API 读取 KV 中的内容。{dotted startColor="#ff6c6c" endColor="#1989fa"/}整体数据流USA Today (被墙) ↓ 境外节点发起请求 Cloudflare Worker (边缘执行) ↓ 调用内部 KV API Cloudflare KV (全球存储) ↓ 服务器发起 HTTPS 请求到 api.cloudflare.com 你的服务器(国内/任何位置)方案优势与要点解耦:Worker 负责“取”,服务器负责“读”,两者通过 KV 异步衔接,降低实时依赖。无需暴露 Worker 路由:服务器不访问 Worker 的 HTTP 触发端点(*.workers.dev 或自定义域名),避免了该端点被封锁的风险。API 稳定:api.cloudflare.com 是控制面入口,通常不会被误伤封锁;且 KV 读取可以配置细粒度的 API Token,安全性高。可扩展:可缓存多个来源、多个键值,服务器只需按需读取即可。潜在注意事项KV 读取计费:注意 Cloudflare KV 的读请求配额和计费规则(免费计划每日读次数有限)。数据新鲜度:Worker 需定期抓取更新 KV(如通过 Cron 触发器),或使用 TTL + 被动更新策略。API 延迟:服务器每次读取需发起一次 HTTPS 请求到 api.cloudflare.com,相比直接读取 KV 边缘节点会有额外网络往返,但通常可接受。该方案本质上是利用 Cloudflare 的边缘网络作为“跳板”,以 KV 作为数据交换中介,从而在不直接访问被禁域名或 Worker 路由的前提下,让国内服务器安全地获取境外内容。
2026年06月04日
6 阅读
0 评论
0 点赞
2026-05-28
hermes命令
通过 docker exec 进入容器执行 Hermes 命令docker exec -it hermes hermes chat更新配置KEYdocker exec -it hermes hermes config set DEEPSEEK_API_KEY "你的新API密钥"重启docker restart hermes{dotted startColor="#ff6c6c" endColor="#1989fa"/}claude code命令claude --resume 会打开一个会话选择器,列出当前项目可恢复的所有会话claude --continue会直接恢复当前目录下的最近一个会话export ANTHROPIC_API_KEY="your-new-api-key"通常只在当前终端窗口有效。
2026年05月28日
7 阅读
0 评论
1 点赞
1
2
...
11
0:00