From 5f6dd8615a14ed1488f0ad16da54b07c7d68ac9d Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Sat, 15 Aug 2026 06:55:26 +0800 Subject: [PATCH] =?UTF-8?q?debug(=5Fwithcontent):=20find=20=E8=AF=8A?= =?UTF-8?q?=E6=96=AD=E5=A2=9E=E5=BC=BA=EF=BC=88names[i]=20=E5=9C=B0?= =?UTF-8?q?=E5=9D=80/=E5=86=85=E5=AE=B9=20+=20strcmp=20=E5=AF=B9=E6=AF=94?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 第一轮诊断显示 TLS/栈/top 全正常但 strcmp 未命中,增强 find 循环内 打印 names[i] 指针与 %s 内容,直接观察 push 存的字段字符串是否损坏。 --- includes/_withcontent.vp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/includes/_withcontent.vp b/includes/_withcontent.vp index 394a0bc..8906900 100644 --- a/includes/_withcontent.vp +++ b/includes/_withcontent.vp @@ -73,6 +73,8 @@ def _find_provider(field_name: str) -> t.CPtr: stack: _ProviderStack | t.CPtr = _get_stack() stdio.printf("[wdbg] find field=%s top=%lu\n", field_name, stack.top) for i in range(stack.top - 1, -1, -1): + stdio.printf("[wdbg] find cmp i=%d names_ptr=%p names_str=%s field=%s\n", + i, stack.names[i], (str)(stack.names[i]), field_name) # 字段名用 strcmp 内容比较:编译器对每次 create_global_string 生成 # 独立的字符串常量(TPV 不去重),push/find 的指针地址不同, # 指针 == 永假会导致 provider 匹配失败(__mbuddy__ 注入不上)。