乐于分享
好东西不私藏

AI开发系列:Android 私有目录可视化管理:Burp Suite 插件技术解析与 辅助开发实践

AI开发系列:Android 私有目录可视化管理:Burp Suite 插件技术解析与 辅助开发实践

背景与问题

在 Android 应用安全测试中,对目标 App 私有目录(/data/data/<package>/)的审计是一项基础且高频的操作。

Android 系统从设计上严格隔离了各应用的私有数据空间,只有具备 Root 权限的进程才能直接访问。对安全测试人员而言,这意味着每一次查看 SharedPreferences 配置文件、检查数据库中的敏感存储、提取 Realm 或 SQLite 文件,都需要经过一套固定的手工流程:

adb shellsucd /data/data/com.target.app/ls -lacat shared_prefs/xxx.xml

当审计的 App 数量增多、目录结构加深,这种操作模式的低效会被迅速放大。更严重的是,在纯终端环境下浏览文件树,缺乏可视化结构,很容易遗漏深层目录中的关键文件。

一个更理想的方案是:将 Android 设备的私有目录直接映射为本地可视化的文件浏览器,嵌入到测试人员的主工具——Burp Suite 中,在拦截和分析 HTTP 流量的同时,随时查看目标 App 的本地数据存储状态。

这就是本文要介绍的插件:Android Private Directory Browser

Root 环境与 Root 检测绕过

插件的核心前提是设备具备 Root 权限。但在实际测试场景中,相当一部分目标 App 会实现 Root 检测机制(如检测 su 二进制文件、/system/app/Superuser.apk 存在性、调用 RootBeer 等第三方库),检测到 Root 后拒绝运行。

针对这一问题的常规解决方案是使用 Magisk 的 Root 隐藏(Root Hiding)能力:通过 MagiskHide 或 Magisk DenyList 机制,对目标应用隐藏 Root 痕迹,使其在正常启动后,再通过 ADB 以 Root 权限访问其私有目录。整个流程如下:

  1. 1. 设备刷入 Magisk,获取 Root 权限
  2. 2. 在 Magisk 设置中将目标 App 加入 DenyList,隐藏 Root 痕迹
  3. 3. 启动目标 App,此时 App 未被 Root 检测阻断
  4. 4. 通过 ADB + su 访问该 App 的 /data/data/ 目录,进行数据审计

这种方式使得即使是对 Root 敏感的生产环境 App,也可以在真实设备上完成完整的私有目录审计。


插件架构

插件基于 Burp Suite Extender API 开发,以 Python(Jython)形式运行在 Burp 的插件容器中。插件成品使用预览:

接口实现

主类 BurpExtender 同时实现四个 Burp 原生接口:

接口
职责
IBurpExtender
插件入口,接收 callbacks 对象,注册所有回调
ITab
在 Burp 主界面的 Tab 栏中注册自定义面板
IHttpListener
监听 HTTP 请求/响应(预留,可用于将文件内容分析与流量分析联动)
IExtensionStateListener
插件卸载时的资源清理钩子

UI 架构

整个插件的 UI 层基于 Java Swing 构建,采用 BoxLayout(纵向) + BorderLayout(面板内部) + JSplitPane(分割视图)的组合布局策略:

主面板(BoxLayout,Y_AXIS 纵向排列)├── Device Connection 面板(BorderLayout)│   ├── 输入区:Device ID 文本框 + Connect/Disconnect 按钮 + Refresh Device List 按钮│   └── 状态区:连接状态标签(红/绿色动态切换)├── Application Selection 面板(BorderLayout)│   └── 应用下拉列表(JComboBox,按字母排序) + Refresh App List 按钮└── File Browser 面板(BorderLayout)    │    ├── 工具栏:当前路径显示 + Refresh + Download + Set Download Path 按钮    │    └── JSplitPane(VERTICAL_SPLIT,上下分割)        │        ├── 上部:JSplitPane(HORIZONTAL_SPLIT,左右分割)        │   ├── 左侧:JTree 文件树(JScrollPane 包裹,支持懒加载)        │   └── 右侧:JTextPane 文件内容区(StyledDocument,支持彩色文本渲染)        │        └── 下部:JTextArea 日志区(自动截断至 1000 行,防止内存溢出)

线程模型

Burp Suite 的 UI 基于 Swing,所有 UI 操作必须在 EDT(Event Dispatch Thread) 上执行。插件中涉及 ADB 通信的操作(设备连接、文件列表获取、文件内容读取)均为阻塞 I/O,因此统一放在独立线程中执行,结果通过 SwingUtilities.invokeLater() 回写 UI。

核心模式:

def someUIAction(self):    threading.Thread(target=self.worker).start()def worker(self):    # 在子线程中执行 ADB 操作    result = subprocess.Popen(adb_cmd, ...)    # 通过 invokeLater 回写 UI    SwingUtilities.invokeLater(lambda: self.updateUI(result))

log() 方法本身也通过 invokeLater 封装,确保多线程环境下日志写入不会触发 Swing 的线程安全异常。


核心功能详解

1. 设备连接与 Root 权限验证

连接流程分为两步:

第一步:设备可达性验证

执行 adb devices,解析输出。解析逻辑会跳过首行 List of devices attached 头信息,按 \tdevice 分隔符提取有效设备 ID。若设备未出现在列表中,提示用户检查 USB 调试是否开启。

此外,Refresh Device List 功能会在扫描前主动执行 adb start-server,解决 ADB 守护进程未启动导致的空列表问题——这是一个在实际使用中经常被忽略的细节。

第二步:Root 权限验证

执行 adb -s <deviceId> shell su -c "echo test"。若返回中包含 test,说明 su 提权成功,设备已 Root;若返回为空或包含 Permission denied,则说明 Root 不可用或 su 未被正确安装。

连接状态通过 JLabel 的 setForeground() 动态切换:未连接为红色,连接成功为绿色。同时,连接成功后自动启用应用列表下拉框和相关按钮,断开后自动禁用,保证 UI 状态与连接状态严格同步。

2. 应用列表获取

执行 adb shell pm list packages -3,获取设备上所有第三方安装应用(排除系统应用)。-3 参数至关重要——系统应用数量通常在上百个,而安全测试的目标几乎都是用户安装的应用。

输出格式为 package:com.xxx.yyy,解析后去掉前缀,按字母排序,填入 JComboBox

选择应用后,插件自动拼接路径 /data/data/<package>,并触发文件树的首次构建。

3. 树形文件浏览器(懒加载架构)

这是插件最核心的 UI 能力。文件树基于 JTree + DefaultTreeModel 实现,有两个关键设计值得重点关注。

懒加载(Lazy Loading)

目录节点采用展开时加载策略:首次构建文件树时,只对当前目录执行 ls -l,每个子目录节点预先挂载一个 "Loading..." 占位子节点。当用户展开该目录节点时,TreeExpansionListener 捕获展开事件,判断该节点是否需要加载(检查子节点是否为占位节点),若需要则触发 loadDirectory()

未展开的目录永远不会发起 ADB 请求。这对于 /data/data/ 下某些 App 的深层级目录结构(如 WebView 缓存、复杂嵌套的 files/ 目录)尤为重要——可以避免首次加载时的长时间阻塞。

自定义节点渲染(FileTreeCellRenderer)

通过继承 DefaultTreeCellRenderer 实现 FileTreeCellRenderer,根据节点 HashMap 中的 isDirectory 字段区分目录与文件:

  • • 目录:渲染为系统文件夹图标(Tree.openIcon / Tree.closedIcon,根据展开状态切换)
  • • 文件:渲染为默认叶子节点图标

节点数据通过 HashMap 存储,每个节点携带三个字段:name(文件名)、path(完整路径)、isDirectory(是否目录),避免了通过节点文本反推路径的不可靠做法。

ls -l 解析

ADB 返回的文件列表通过 ls -l 获取,按空白字符分割后:

  • • 第 0 字段:权限位(如 drwxrwx--x),首个字符为 d 表示目录
  • • 第 7 字段及之后:文件名(因为时间字段长度不固定,不能按固定索引截取)

这是一个在实际 ADB 输出解析中容易出错的细节,插件通过 '\n'.join(parts[7:]) 正确拼接文件名,支持包含空格的文件名。

4. 文件内容预览与二进制检测

选中文件节点后,readFileContent() 被触发。由于私有目录的权限限制,读取流程必须经过四步:

Step 1: su -c "cp <src> /data/local/tmp/<filename>"        将目标文件以 Root 权限复制到 tmp 目录Step 2: su -c "cat /data/local/tmp/<filename>"        读取 tmp 目录中的文件内容Step 3: 内容渲染到 JTextPane(StyledDocument)        若文件过大(>100KB),在此步截断Step 4: su -c "rm /data/local/tmp/<filename>"        清理 tmp 中的副本,避免残留

二进制文件检测采用双重启发式策略:

  1. 1. 扩展名黑名单.db.sqlite.sqlite3.apk.zip.bin 等直接判定为二进制,提示用户使用下载功能
  2. 2. 内容采样:遍历文件内容的前 N 个字节,统计不可打印字符(ASCII < 32 且非空白字符)的占比,超过 10% 判定为二进制

单文件预览上限设为 100KB,超出部分自动截断。这个限制是经过权衡的:JTextPane 对大文本内容的渲染性能随文本长度非线性下降,100KB 是在渲染流畅性和内容完整性之间的一个合理平衡点。

文件内容展示使用 JTextPane 而非 JTextArea,原因是 JTextPane 基于 StyledDocument,支持富文本渲染(不同段落可以有不同的字体、颜色、背景),这为后续的敏感信息高亮提供了基础能力。

5. 敏感信息检测与高亮渲染

这是插件在安全测试场景中最具价值的能力。文件内容在 JTextPane 中展示时,highlightSensitiveInfo() 方法使用预定义的正则规则集对全文进行扫描,匹配到的内容以红色粗体 + 黄色背景在原文中直接标注,并在匹配内容前插入 [SENSITIVE:<类别>] 标签,使安全测试人员可以直观定位敏感数据。

检测规则集

类别
正则模式
说明
API Key
api[_-]?key[_-]?=?\s*[a-zA-Z0-9]{20,}
匹配 20 位以上字母数字,覆盖常见 API Key 格式
Secret
secret[_-]?=?\s*[a-zA-Z0-9]{20,}
通用密钥字段
Private Key
private[_-]?key[_-]?=?\s*[a-zA-Z0-9]{20,}
私钥字段
Access Key
access[_-]?key[_-]?=?\s*[a-zA-Z0-9]{20,}
云服务访问密钥
Password
password[_-]?=?\s*[a-zA-Z0-9!@#$%^&*()_+]{6,}
密码字段,最短 6 位
Pass
pass[_-]?=?\s*[a-zA-Z0-9!@#$%^&*()_+]{6,}
密码字段缩写
Pwd
pwd[_-]?=?\s*[a-zA-Z0-9!@#$%^&*()_+]{6,}
密码字段缩写
Token
token[_-]?=?\s*[a-zA-Z0-9_-]{15,}
通用令牌,最短 15 位
Auth Token
auth[_-]?=?\s*[a-zA-Z0-9_-]{15,}
认证令牌
Session ID
session[_-]?id[_-]?=?\s*[a-zA-Z0-9_-]{15,}
会话 ID
信用卡号
\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}
16 位信用卡格式,支持分隔符
身份证号
[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])...
中国 18 位身份证,含校验位
手机号
1[3-9]\d{9}
中国 11 位手机号
邮箱
RFC 5322 标准邮箱正则
URL
https?://[^\s]+
HTTP/HTTPS 链接
IPv4 地址
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
域名
标准域名格式正则
银行账号
\d{10,20}
10~20 位纯数字
AWS Access Key
AKIA[0-9A-Z]{16}
AWS 访问密钥特征前缀
JWT Token
eyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+
JWT 三段式结构

高亮渲染实现

高亮基于 StyledDocumentJTextPane 的底层文档模型)实现。具体流程:

  1. 1. 收集所有正则匹配的 (start, end, category) 三元组
  2. 2. 按 start 位置排序
  3. 3. 遍历三元组,分段插入文档:
    • • [last_pos, start):插入普通文本,应用 normalStyle
    • • [start, end):插入 [SENSITIVE:<category>] <匹配内容> [/SENSITIVE],应用 sensitiveStyle(红色粗体 + 黄色背景)
  4. 4. 最后插入剩余文本

StyledDocument 的 insertString() 方法每次写入时会附带一个 AttributeSet 参数,通过预初始化的 normalStyle 和 sensitiveStyle 两个 SimpleAttributeSet 对象实现不同段落的不同渲染样式。

所有 Style 对象在 __init__() 中预初始化,避免在 highlightSensitiveInfo() 被调用时因 StyledDocument 尚未初始化而触发 AttributeError

6. 文件与目录下载

下载功能同样需要绕过私有目录权限限制,采用经典的四步中转方案:

Step 1: su -c "cp <src> /data/local/tmp/<filename>"        以 Root 权限复制到 tmp 目录Step 2: su -c "chmod 644 /data/local/tmp/<filename>"        修改文件权限,使 adb pull 可读Step 3: adb pull /data/local/tmp/<filename> <local_path>        拉取到本地Step 4: su -c "rm /data/local/tmp/<filename>"        清理 tmp 中的副本

目录下载额外处理压缩打包:先将目录 cp -r 复制到 tmp,然后尝试执行 zip -r 打包;若设备未安装 zip 命令(部分精简 ROM 会移除),自动 fallback 到 tar -czf 生成 .tar.gz 压缩包。

下载路径支持两种模式:

  • • 默认路径模式:通过 JFileChooser(目录选择模式)预设下载目录,后续下载操作自动存入该目录,文件名冲突时自动追加 _1_2 后缀
  • • 每次选择模式:未设置默认路径时,每次下载都弹出 JFileChooser(文件选择模式),由用户指定保存位置

AI 辅助开发模式

本插件是采用 AI 辅助开发模式完成的系列安全工具中的一个。整体开发流程不依赖人工编写代码,而是通过将需求、架构设计和问题反馈以自然语言形式描述,由 AI 完成编码、调试和迭代。

以下是几个在实际操作中验证有效的关键做法。

需求描述需要精确到实现层

AI 生成代码的质量上限,取决于需求描述的精确程度。笼统的描述(如"帮我写一个 Burp 插件")通常只能得到骨架代码,且关键技术选型(如 Jython 环境下 Swing 线程模型、ADB 命令的具体格式)往往不准确。

有效的需求描述应当包含:

  • • 运行环境:明确是 Jython 2.7、Burp Extender API 的哪个版本
  • • 关键技术选型:明确使用 JTree 而非 JList、使用 StyledDocument 而非纯文本组件
  • • ADB 命令格式:明确使用 su -c 提权,而非假设 adb 本身具备 Root 权限
  • • 边界条件:文件大小上限、二进制检测策略、日志行数上限等

这种描述方式的好处是:AI 的首次输出就已经在正确的技术路线上,后续修改量大幅减少。

利用错误日志驱动调试

Jython 环境下 Swing 的线程模型非常特殊——所有 UI 操作必须在 EDT 上执行,否则插件会静默崩溃或抛出 NullPointerException。这类问题在首次实现时几乎不可能完全规避。

实际做法是:在 Burp 的 Extender 面板中查看控制台输出,将完整报错复制给 AI,要求其分析原因并给出修复方案。AI 通常能准确识别 Swing 线程安全问题,并给出正确的 SwingUtilities.invokeLater() 封装方案。

不需要自己调试,错误日志就是最好的反馈。

分模块迭代

一次性要求 AI 实现所有功能,代码质量往往不稳定。更可控的节奏是分模块逐步交付:

迭代 1:设备连接 + 文件树骨架(跑通基本流程)迭代 2:文件内容预览 + 二进制检测迭代 3:敏感信息高亮渲染迭代 4:文件/目录下载(含 zip/tar.gz fallback)迭代 5:日志区优化、下载路径设置、异常处理完善

每个迭代完成后验证功能,再进入下一个。出问题容易定位,整体进度可控。

AI Code Review

代码完成后,将完整源码提交给 AI,要求其从以下几个维度进行审查:

  • • Swing 线程安全性
  • • 内存泄漏风险(如日志列表无上限增长)
  • • 异常处理完整性(ADB 命令执行失败的各种分支)
  • • 潜在的安全问题(如 shell=True 带来的命令注入风险)

在这个插件的 Review 过程中,AI 发现了几个实际问题:logMessages 列表无上限增长(修复:超过 1000 行自动截断)、StyledDocument 未初始化时调用 remove() 会触发 AttributeError(修复:在 __init__() 中预初始化所有 Style 对象)。

小结

本插件已经在实际 Android 安全测试工作中投入使用。将 AI 辅助开发模式应用于安全工具构建,核心优势不在于替代人工编码,而在于大幅降低了从需求到可用工具的转化成本

对于一个需求明确、边界清晰的工具类项目,AI 可以独立完成从架构设计、编码实现到调试修复的全流程。对开发者而言,真正需要的能力是:

  • • 对目标领域有足够深的理解,能够判断 AI 输出的代码是否正确、是否存在遗漏
  • • 能够将模糊需求拆解为 AI 可以逐步完成的具体任务
  • • 能够通过错误日志、运行结果和代码 Review,持续驱动 AI 向正确方向迭代

本文介绍的插件为 AI 辅助开发实践的其中一个案例。更多安全工具的 AI 开发实践,将在后续文章中继续分享。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-20 19:19:58 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/773100.html
  2. 运行时间 : 0.117579s [ 吞吐率:8.50req/s ] 内存消耗:4,772.91kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=7badceb8a848b29a81ae734f8725eed1
  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.001235s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.002146s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000780s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000526s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000801s ]
  6. SELECT * FROM `set` [ RunTime:0.000202s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000637s ]
  8. SELECT * FROM `article` WHERE `id` = 773100 LIMIT 1 [ RunTime:0.000606s ]
  9. UPDATE `article` SET `lasttime` = 1781954399 WHERE `id` = 773100 [ RunTime:0.000874s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000230s ]
  11. SELECT * FROM `article` WHERE `id` < 773100 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000427s ]
  12. SELECT * FROM `article` WHERE `id` > 773100 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001403s ]
  13. SELECT * FROM `article` WHERE `id` < 773100 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.006316s ]
  14. SELECT * FROM `article` WHERE `id` < 773100 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.006868s ]
  15. SELECT * FROM `article` WHERE `id` < 773100 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004253s ]
0.119330s