agentic-awesome-skills 反逆向技术 Skill 深度解析:授权安全边界、反调试/反虚拟机检测与脱壳实战方法论

agentic-awesome-skills 反逆向技术 Skill 深度解析:授权安全边界、反调试/反虚拟机检测与脱壳实战方法论

【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址: https://gitcode.com/GitHub_Trending/an/agentic-awesome-skills

本指南围绕 agentic-awesome-skills 开源仓库中anti-reversing-techniques(反逆向技术)技能展开,完整继承其 SKILL.md 的元数据、授权门槛与操作规范,并以其引用的 implementation-playbook.md 为技术主干,系统梳理 Windows/Linux 反调试、反虚拟机检测、代码混淆、加壳脱壳、代码虚拟化等对抗维度的检测原理、绕过思路与对应工具链。读完本文,你将掌握:在明确授权前提下识别二进制保护机制的能力、对常见反调试与反虚拟机检测点的定位方法、控制流平坦化与不透明谓词的还原思路、以及从加壳样本中定位 OEP 并修复导入表的完整脱壳流程,同时理解 AAS(Agentic Awesome Skills)体系中 offensive 类技能被设计为“授权门控 + 防御导向”的合规使用范式。

一、技能定位:AAS 生态中的 offensive 类安全技能

在 agentic-awesome-skills 仓库中,anti-reversing-techniques属于风险等级标记为risk: offensive的双用途(dual-use)安全技能。其 SKILL.md 以标准 AAS Skill 格式组织,frontmatter 元数据如下:

--- name: anti-reversing-techniques description: "AUTHORIZED USE ONLY: This skill contains dual-use security techniques. Before proceeding with any bypass or analysis: > 1." risk: offensive source: community date_added: "2026-02-27" ---

各字段含义:

字段值说明
nameanti-reversing-techniques技能唯一标识,即仓库中对应的目录名
descriptionAUTHORIZED USE ONLY: ...面向 Agent 的触发描述,第一语义即强调“仅限授权使用”,避免被误触发
riskoffensiveAAS 风险分级体系中的进攻性等级,表示该技能包含可被用于攻击的对抗性技术,需要额外授权门控
sourcecommunity技能来源为社区贡献
date_added2026-02-27收录日期,便于目录审计与变更追踪

该技能在仓库中存在于多处分发副本:主 skills 目录、plugins/agentic-awesome-skills 以及 plugins/agentic-awesome-skills-claude。其中 Claude 插件副本额外携带完整的resources/implementation-playbook.md技术手册,是本文技术内容的主要依据。这种“SKILL.md 声明边界 + resources 承载技术细节”的结构,正是 AAS 技能仓库的典型组织方式:Agent 通过轻量 SKILL.md 决定是否激活技能,再按需加载深度 playbook。

二、不可逾越的授权门槛(Mandatory Confirmation Gate)

这是本技能区别于普通逆向知识文档的核心特征:任何绕过、探测、修改、持久化、数据提取或凭据访问行为,都必须先通过强制确认门(Mandatory Confirmation Gate)。SKILL.md 规定的四步确认流程:

  1. 明确目标:让用户陈述确切的攻击目标——URL、IP、账户或具体资源;
  2. 确认授权:让用户确认书面授权与允许的范围(scope);
  3. 展示命令:展示将要执行的确切命令并解释其预期效果;
  4. 等待确认:在当前对话中等待用户的明确确认。

未获确认时,技能必须保持只读状态,仅提供防御性指导,并优先建议在沙箱、一次性虚拟机或受控实验环境(controlled lab)中操作。同时,技能要求验证授权时确认用户属于以下合法情境之一:软件所有者的书面许可、CTF 竞赛、授权渗透测试、恶意软件分析或安全研究;并提醒未经授权绕过软件保护可能触犯 CFAA(美国计算机欺诈与滥用法)、DMCA 反规避条款等法律。

从设计角度看,这一门槛与仓库的安全治理文档体系一脉相承。AAS 仓库中的安全治理文档(如 SECURITY_GUARDRAILS.md)普遍采用“先声明授权、再给出技术”的编排,将合规审查前置到技能激活阶段,使 Agent 在进入技术细节前就完成合法性确认。

三、适用场景与禁用场景:Agent 的触发决策依据

SKILL.md 明确划定了技能的使用边界,Agent 应据此决定是否激活本技能。

适用场景(Use this skill when):

  • 在明确授权下分析受保护二进制(Analyzing protected binaries with explicit authorization);
  • 在范围内开展恶意软件分析或安全研究(Conducting malware analysis or security research in scope);
  • 参与 CTF 或经批准的训练演练(Participating in CTFs or approved training exercises);
  • 为防御目的理解反调试或混淆技术(Understanding anti-debugging or obfuscation techniques for defense)。

禁用场景(Do not use this skill when):

  • 缺乏书面授权或未定义明确范围(You lack written authorization or a defined scope);
  • 目标是出于盗版或滥用目的绕过保护(The goal is to bypass protections for piracy or misuse);
  • 法律或政策限制禁止此类分析(Legal or policy restrictions prohibit analysis)。

这四个“适用”与三个“禁用”条件共同构成 Agent 的决策过滤器:只有任务同时满足“有授权、有范围、有合法目的”三个条件时,才允许进入技术执行阶段;任一条件不满足,则退回只读的防御性建议模式。

四、执行指令与安全规范(Instructions & Safety)

当授权确认完成,技能按以下四步指令推进分析任务:

  1. 确认授权、范围与法律约束(Confirm written authorization, scope, and legal constraints)——不是一次性的,而是在每个敏感操作前重申;
  2. 识别保护机制并选择安全的分析方法(Identify protection mechanisms and choose safe analysis methods)——先分类(反调试/反 VM/混淆/加壳/虚拟化),再匹配对应分析策略;
  3. 记录发现,避免不必要地修改样本(Document findings and avoid modifying artifacts unnecessarily)——保持证据原始性,分析过程中的补丁尽量打在内存或副本上;
  4. 提供防御性建议与缓解指导(Provide defensive recommendations and mitigation guidance)——分析的最终输出应落回防御视角,反哺防护设计。

安全规范(Safety)包含两条硬性要求:不得在授权语境之外分享绕过步骤;在恶意软件分析场景下保全证据并维持证据链(chain-of-custody)。后者直接对应数字取证的基本要求——任何对样本的改动都必须被记录,确保后续司法或合规审查时证据可追溯。

技能还声明了明确的局限性(Limitations):仅在任务与上述范围清晰匹配时使用;输出不能替代环境特定的验证、测试或专家评审;当所需输入、权限、安全边界或成功标准缺失时,应停止并请求澄清。这要求 Agent 将本技能视为分析辅助而非结论本身。

五、反调试技术(Anti-Debugging Techniques)

implementation-playbook.md 是技术细节的主体,其核心主题是:理解授权软件分析、安全研究与恶意软件分析中遇到的保护机制,帮助分析人员绕过保护以完成合法分析任务。反调试是样本最常用的第一道防线。

5.1 Windows API 级检测

程序通过调用 Windows 调试相关 API 探测自身是否处于调试器之下:

// IsDebuggerPresent if (IsDebuggerPresent()) { exit(1); } // CheckRemoteDebuggerPresent BOOL debugged = FALSE; CheckRemoteDebuggerPresent(GetCurrentProcess(), &debugged); if (debugged) exit(1); // NtQueryInformationProcess - ProcessDebugPort (class 7) typedef NTSTATUS (NTAPI *pNtQueryInformationProcess)( HANDLE, PROCESSINFOCLASS, PVOID, ULONG, PULONG); DWORD debugPort = 0; NtQueryInformationProcess( GetCurrentProcess(), ProcessDebugPort, // 7 &debugPort, sizeof(debugPort), NULL ); if (debugPort != 0) exit(1); // Debug flags - ProcessDebugFlags (0x1F) DWORD debugFlags = 0; NtQueryInformationProcess( GetCurrentProcess(), ProcessDebugFlags, // 0x1F &debugFlags, sizeof(debugFlags), NULL ); if (debugFlags == 0) exit(1); // 0 means being debugged

原理要点:

  • IsDebuggerPresent()是最高层的封装,实际读取 PEB 的BeingDebugged标志,最容易被挂钩或补丁绕过;
  • CheckRemoteDebuggerPresent可检测本地或远程调试器;
  • NtQueryInformationProcess是更底层的原生 API:ProcessDebugPort(类号 7)在被调试时返回非零端口;ProcessDebugFlags(类号 0x1F)返回 0 表示处于调试状态。因为它是未文档化的原生 API,样本常直接调用它来规避对 Win32 API 的挂钩。

绕过思路(Bypass Approaches):

  • 使用 x64dbg 的 ScyllaHide 插件自动处理常见反调试检查;
  • 手工补丁:将IsDebuggerPresent的返回值改为 0、将PEB.BeingDebugged清零、挂钩NtQueryInformationProcess;
  • IDAPython 脚本化补丁,将检查指令 NOP 掉:
# IDAPython: Patch checks ida_bytes.patch_byte(check_addr, 0x90) # NOP

5.2 PEB 结构级检测

许多样本不依赖 API,直接读取进程环境块(PEB)中的调试标志,这类检测对 API 挂钩免疫:

// Direct PEB access #ifdef _WIN64 PPEB peb = (PPEB)__readgsqword(0x60); #else PPEB peb = (PPEB)__readfsdword(0x30); #endif // BeingDebugged flag if (peb->BeingDebugged) exit(1); // NtGlobalFlag // Debugged: 0x70 (FLG_HEAP_ENABLE_TAIL_CHECK | // FLG_HEAP_ENABLE_FREE_CHECK | // FLG_HEAP_VALIDATE_PARAMETERS) if (peb->NtGlobalFlag & 0x70) exit(1); // Heap flags PDWORD heapFlags = (PDWORD)((PBYTE)peb->ProcessHeap + 0x70); if (*heapFlags & 0x50000062) exit(1);

关键偏移速查:x64 下 PEB 位于gs:[0x60],x86 下位于fs:[0x30];BeingDebugged位于 PEB 偏移 2;NtGlobalFlag在 x64 下位于偏移 0xBC,正常值为 0,被调试时常为 0x70(同时置位堆尾检查、空闲块检查、参数校验三个标志);堆标志检查读取ProcessHeap偏移 0x70 处的Flags/ForceFlags(掩码 0x50000062)。

绕过思路:

; In debugger, modify PEB directly ; x64dbg: dump at gs:[60] (x64) or fs:[30] (x86) ; Set BeingDebugged (offset 2) to 0 ; Clear NtGlobalFlag (offset 0xBC for x64)

5.3 时序检测(Timing-Based)

调试器单步执行会显著拖慢程序运行,样本通过测量代码段执行耗时来间接推断是否被调试:

// RDTSC timing uint64_t start = __rdtsc(); // ... some code ... uint64_t end = __rdtsc(); if ((end - start) > THRESHOLD) exit(1); // QueryPerformanceCounter LARGE_INTEGER start, end, freq; QueryPerformanceFrequency(&freq); QueryPerformanceCounter(&start); // ... code ... QueryPerformanceCounter(&end); double elapsed = (double)(end.QuadPart - start.QuadPart) / freq.QuadPart; if (elapsed > 0.1) exit(1); // Too slow = debugger // GetTickCount DWORD start = GetTickCount(); // ... code ... if (GetTickCount() - start > 1000) exit(1);

绕过思路:

  • 优先使用硬件断点(hardware breakpoints)而非软件断点(INT3),减少时序扰动;
  • 直接补丁时序检查阈值;
  • 使用可控制时间的虚拟机环境;
  • 挂钩时序 API(如QueryPerformanceCounter、GetTickCount),返回一致性数值。

5.4 异常机制检测(Exception-Based)

样本利用调试器会“吞掉”异常这一行为特征来反调试。SEH(结构化异常处理)方案:正常运行时int 3产生的异常被自身异常处理器捕获,若异常被调试器截获则程序流不经过处理器,从而判定被调试:

// SEH-based detection __try { __asm { int 3 } // Software breakpoint } __except(EXCEPTION_EXECUTE_HANDLER) { // Normal execution: exception caught return; } // Debugger ate the exception exit(1);

VEH(向量化异常处理)方案则主动处理断点异常并恢复执行:

// VEH-based detection LONG CALLBACK VectoredHandler(PEXCEPTION_POINTERS ep) { if (ep->ExceptionRecord->ExceptionCode == EXCEPTION_BREAKPOINT) { ep->ContextRecord->Rip++; // Skip INT3 return EXCEPTION_CONTINUE_EXECUTION; } return EXCEPTION_CONTINUE_SEARCH; }

5.5 Linux 反调试

Linux 平台的检测手法以ptrace体系为核心:

// ptrace self-trace if (ptrace(PTRACE_TRACEME, 0, NULL, NULL) == -1) { // Already being traced exit(1); } // /proc/self/status FILE *f = fopen("/proc/self/status", "r"); char line[256]; while (fgets(line, sizeof(line), f)) { if (strncmp(line, "TracerPid:", 10) == 0) { int tracer_pid = atoi(line + 10); if (tracer_pid != 0) exit(1); } } // Parent process check if (getppid() != 1 && strcmp(get_process_name(getppid()), "bash") != 0) { // Unusual parent (might be debugger) }

ptrace(PTRACE_TRACEME)的自追踪检测利用了 Linux 同一进程只能被一个 tracer 跟踪的特性;/proc/self/status中的TracerPid非 0 即表示有调试器附加;父进程检查则识别 gdb 等调试器通常不是bash或init的异常父子关系。

绕过思路(LD_PRELOAD 挂钩 ptrace):

# LD_PRELOAD to hook ptrace # Compile: gcc -shared -fPIC -o hook.so hook.c long ptrace(int request, ...) { return 0; // Always succeed } # Usage LD_PRELOAD=./hook.so ./target

通过LD_PRELOAD注入一个始终返回成功的ptrace实现,即可让依赖 ptrace 返回值的检测全部失效。

六、反虚拟机检测(Anti-VM Detection)

恶意软件常通过识别运行环境是否为虚拟机来逃避沙箱分析,主要手段有硬件指纹、注册表/文件痕迹与时序异常三类。

6.1 硬件指纹(Hardware Fingerprinting)

CPUID 指令是核心检测点——虚拟化环境会暴露 hypervisor 特征:

// CPUID-based detection int cpuid_info[4]; __cpuid(cpuid_info, 1); // Check hypervisor bit (bit 31 of ECX) if (cpuid_info[2] & (1 << 31)) { // Running in hypervisor } // CPUID brand string __cpuid(cpuid_info, 0x40000000); char vendor[13] = {0}; memcpy(vendor, &cpuid_info[1], 12); // "VMwareVMware", "Microsoft Hv", "KVMKVMKVM", "VBoxVBoxVBox" // MAC address prefix // VMware: 00:0C:29, 00:50:56 // VirtualBox: 08:00:27 // Hyper-V: 00:15:5D

CPUID 叶子1的 ECX 第 31 位(hypervisor present bit)在虚拟化环境下被置位;叶子0x40000000返回的厂商字符串直接暴露虚拟机品牌(VMware、Microsoft Hyper-V、KVM、VirtualBox);网卡 MAC 前缀同样是高置信度指纹。

6.2 注册表/文件/进程痕迹检测

// Windows registry keys // HKLM\SOFTWARE\VMware, Inc.\VMware Tools // HKLM\SOFTWARE\Oracle\VirtualBox Guest Additions // HKLM\HARDWARE\ACPI\DSDT\VBOX__ // Files // C:\Windows\System32\drivers\vmmouse.sys // C:\Windows\System32\drivers\vmhgfs.sys // C:\Windows\System32\drivers\VBoxMouse.sys // Processes // vmtoolsd.exe, vmwaretray.exe // VBoxService.exe, VBoxTray.exe

VMware Tools、VirtualBox Guest Additions 等客户机增强组件会在注册表、驱动文件与后台进程中留下明确痕迹,样本通过查询这些标志物即可完成虚拟机判定。

6.3 时序型 VM 检测

虚拟机执行特权指令(如CPUID)会产生 VM exit,耗时显著高于裸机:

// VM exits cause timing anomalies uint64_t start = __rdtsc(); __cpuid(cpuid_info, 0); // Causes VM exit uint64_t end = __rdtsc(); if ((end - start) > 500) { // Likely in VM (CPUID takes longer) }

反制思路:使用裸机分析环境;加固虚拟机(移除客户机工具、修改 MAC);补丁检测代码;或使用专为恶意软件分析优化的 FLARE-VM 等专门分析虚拟机。

七、代码混淆技术(Code Obfuscation)

混淆的目的是提高逆向分析的静态成本。Playbook 将其分为控制流混淆、数据混淆与指令级混淆三个层次。

7.1 控制流平坦化(Control Flow Flattening)

将原本清晰的 if/else 分支改写为“状态变量 + 无限循环 + switch”的扁平结构,抹平控制流层级,使静态分析难以直接还原逻辑分支:

// Original if (cond) { func_a(); } else { func_b(); } func_c(); // Flattened int state = 0; while (1) { switch (state) { case 0: state = cond ? 1 : 2; break; case 1: func_a(); state = 3; break; case 2: func_b(); state = 3; break; case 3: func_c(); return; } }

分析思路:识别状态变量 → 映射状态转移 → 重构原始流程;工具方面可借助 IDA 的 D-810 插件与 SATURN 等去平坦化工具。

7.2 不透明谓词(Opaque Predicates)

在正常逻辑中插入“恒真/恒假但证明复杂”的条件判断,并附带永不执行的死代码(junk code),干扰分析者对程序真实路径的判断:

// Always true, but complex to analyze int x = rand(); if ((x * x) >= 0) { // Always true real_code(); } else { junk_code(); // Dead code } // Always false if ((x * (x + 1)) % 2 == 1) { // Product of consecutive = even junk_code(); }

分析思路:识别常量表达式;使用符号执行证明谓词真假;对已知不透明谓词模式做模式匹配,从而剔除死代码。

7.3 数据混淆:字符串加密与栈字符串

字符串是逆向分析的高价值目标,样本常对敏感字符串(URL、API 名)做加密处理:

// XOR encryption char decrypt_string(char *enc, int len, char key) { char *dec = malloc(len + 1); for (int i = 0; i < len; i++) { dec[i] = enc[i] ^ key; } dec[len] = 0; return dec; } // Stack strings char url[20]; url[0] = 'h'; url[1] = 't'; url[2] = 't'; url[3] = 'p'; url[4] = ':'; url[5] = '/'; url[6] = '/'; // ...

栈字符串将字符串拆成单字节逐字压栈构造,避免在数据段留下连续可搜索的字符串字面量。

自动化分析工具:

# FLOSS for automatic string deobfuscation floss malware.exe # IDAPython string decryption def decrypt_xor(ea, length, key): result = "" for i in range(length): byte = ida_bytes.get_byte(ea + i) result += chr(byte ^ key) return result

FLOSS(FireEye Labs Obfuscated String Solver)可从样本中自动提取解码后的字符串;IDAPython 脚本则可针对已知 XOR 密钥批量还原。

7.4 API 混淆:动态解析与哈希

通过GetProcAddress动态解析 API 地址、或使用哈希值代替 API 名字符串比较,规避静态导入表分析:

// Dynamic API resolution typedef HANDLE (WINAPI *pCreateFileW)(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); HMODULE kernel32 = LoadLibraryA("kernel32.dll"); pCreateFileW myCreateFile = (pCreateFileW)GetProcAddress( kernel32, "CreateFileW"); // API hashing DWORD hash_api(char *name) { DWORD hash = 0; while (*name) { hash = ((hash >> 13) | (hash << 19)) + *name++; } return hash; } // Resolve by hash comparison instead of string

分析思路:识别哈希算法 → 构建已知 API 哈希库 → 使用 IDA 的 HashDB 插件辅助 → 或通过动态分析在运行时解析真实调用目标。

7.5 指令级混淆:死代码插入与指令替换

; Original mov eax, 1 ; With dead code push ebx ; Dead mov eax, 1 pop ebx ; Dead xor ecx, ecx ; Dead add ecx, ecx ; Dead ; Original: xor eax, eax (set to 0) ; Substitutions: sub eax, eax mov eax, 0 and eax, 0 lea eax, [0] ; Original: mov eax, 1 ; Substitutions: xor eax, eax inc eax push 1 pop eax

语义等价指令替换让同样的操作呈现不同字节形态,增加特征匹配与模式识别的难度;死代码插入则稀释有效指令密度,迫使分析者逐条甄别。

八、加壳与脱壳(Packing and Unpacking)

8.1 常见加壳器

加壳器类型特征
UPX开源压缩壳体积小、易识别、官方可脱
Themida商业保护壳基于 VM 的保护,对抗调试器能力强
VMProtect商业保护壳代码虚拟化,将原生代码转为虚拟机字节码
ASPack压缩壳以压缩为主要目的
PECompact压缩壳以压缩为主要目的
Enigma商业保护壳功能全面的保护方案

8.2 脱壳方法论(Unpacking Methodology)

Playbook 给出标准的四阶段流程:

1. Identify packer (DIE, Exeinfo PE, PEiD) 2. Static unpacking (if known packer): - UPX: upx -d packed.exe - Use existing unpackers 3. Dynamic unpacking: a. Find Original Entry Point (OEP) b. Set breakpoint on OEP c. Dump memory when OEP reached d. Fix import table (Scylla, ImpREC) 4. OEP finding techniques: - Hardware breakpoint on stack (ESP trick) - Break on common API calls (GetCommandLineA) - Trace and look for typical entry patterns

关键点解读:第一步用 Detect It Easy(DIE)、Exeinfo PE 或 PEiD 识别壳类型;已知壳优先静态脱壳(如 UPX 直接upx -d);未知壳则进入动态脱壳:定位原始入口点(OEP)→ 在 OEP 下断 → 内存转储 → 用 Scylla 或 ImpREC 修复导入表(IAT)。OEP 定位的经典技巧包括 ESP 硬件断点法(壳执行 PUSHAD/POPAD 后栈顶即指向 OEP 附近)与在GetCommandLineA等壳必然调用的 API 上下断。

8.3 手工脱壳实例(Manual Unpacking Example)

1. Load packed binary in x64dbg 2. Note entry point (packer stub) 3. Use ESP trick: - Run to entry - Set hardware breakpoint on [ESP] - Run until breakpoint hits (after PUSHAD/POPAD) 4. Look for JMP to OEP 5. At OEP, use Scylla to: - Dump process - Find imports (IAT autosearch) - Fix dump

完整流程为:将加壳样本载入 x64dbg → 记录壳入口(packer stub)→ 运行至入口后对[ESP]设硬件断点,运行至断点命中(壳的 PUSHAD/POPAD 序列之后)→ 寻找跳向 OEP 的 JMP → 在 OEP 处用 Scylla 转储进程、自动搜索导入表并修复转储文件。该流程对 UPX、ASPack 等传统壳几乎通用。

九、代码虚拟化保护(Virtualization-Based Protection)

9.1 原理:原生代码 → 自定义字节码

代码虚拟化将原始 x86 指令转换为自定义字节码,由内嵌虚拟机在运行时解释执行,静态逆向者面对的是虚拟指令集而非原生指令:

Original x86 code is converted to custom bytecode interpreted by embedded VM at runtime. Original: VM Protected: mov eax, 1 push vm_context add eax, 2 call vm_entry ; VM interprets bytecode ; equivalent to original

9.2 分析路径(Analysis Approaches)

1. Identify VM components: - VM entry (dispatcher) - Handler table - Bytecode location - Virtual registers/stack 2. Trace execution: - Log handler calls - Map bytecode to operations - Understand instruction set 3. Lifting/devirtualization: - Map VM instructions back to native - Tools: VMAttack, SATURN, NoVmp 4. Symbolic execution: - Analyze VM semantically - angr, Triton

分析顺序从识别虚拟机组件(调度器 dispatcher、处理器表 handler table、字节码位置、虚拟寄存器/栈)开始,通过追踪执行日志建立“字节码 → 操作”映射,再借助 VMAttack、SATURN、NoVmp 等工具做指令提升(lifting)与反虚拟化,或使用 angr、Triton 对 VM 做语义层面的符号执行分析。这也是 Themida、VMProtect 类保护最耗时的分析环节。

十、绕过策略总览与工具矩阵

10.1 通用五原则(General Principles)

  1. 理解保护:先识别样本使用了哪类技术(Identify what technique is used);
  2. 定位检查点:在二进制中定位保护代码(Locate protection code in binary);
  3. 补丁或挂钩:将检查修改为恒通过(Modify check to always pass);
  4. 使用合适工具:如 ScyllaHide、x64dbg 插件(Use appropriate tools);
  5. 记录发现:持续记录被绕过的保护项(Keep notes on bypassed protections)。

10.2 工具推荐矩阵(Tool Recommendations)

分析场景推荐工具
反调试绕过ScyllaHide, TitanHide
脱壳x64dbg + Scylla, OllyDumpEx
反混淆D-810, SATURN, miasm
VM 分析VMAttack, NoVmp, 手工追踪
字符串解密FLOSS, 自定义脚本
符号执行angr, Triton

十一、伦理边界与防御视角(Ethical Considerations)

Playbook 在结尾再次收紧使用边界。本技能知识仅允许用于:授权安全研究、恶意软件分析(防御性)、CTF 竞赛、理解保护机制的合法目的、教育目的。严禁用于:软件盗版、未授权访问、恶意目的。这与 SKILL.md 的“Safety”条款(不分享绕过步骤、保全证据链)共同构成完整的合规闭环:技能元数据负责激活前的授权确认,playbook 技术章节负责授权后的分析方法,而伦理章节负责收尾时的边界重申。

值得强调的是,这一技能在 AAS 体系中的定位是攻防一体的防御支撑:了解反调试、反虚拟机与混淆技术,其直接价值在于恶意软件分析师能高效剥离保护、提取 IoC(威胁指标),以及安全工程师能反向评估自身产品的防护强度。分析产出的最终输出应落回“防御性建议与缓解指导”这一技能指令的第四步。

十二、使用约束与局限性总结

  • 本技能仅在任务与文档声明的授权范围清晰匹配时使用;
  • 输出不能替代环境特定的验证、测试或专家评审——脱壳结果、去混淆结论都需在目标环境中二次确认;
  • 当所需输入(目标、授权、范围)或成功标准缺失时,Agent 必须停止并请求澄清,而非自行假设授权;
  • 未获确认时保持只读,仅提供防御性指导,并优先使用沙箱、一次性 VM 等隔离环境。

对开发者与安全从业者而言,若要在本地使用该技能,需先通过 AAS 的技能激活机制(参考 GETTING_STARTED.md 与 USAGE.md)安装并加载对应插件副本;加载后由 Agent 依据本技能 SKILL.md 的触发条件与授权门槛决定是否进入分析流程,完整技术细节以 implementation-playbook.md 为准。

【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址: https://gitcode.com/GitHub_Trending/an/agentic-awesome-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

技能盘点与评估实战:从能力分级到团队技能树构建

技能盘点与评估实战:从能力分级到团队技能树构建

每次做团队能力盘点或者写个人年度总结的时候&#xff0c;我总会下意识地打开某个名为“skills”的文件夹。里面堆着这些年整理过的技能清单、评估表格、学习路径图&#xff0c;还有无数份技术面试的记录。这个不起眼的词&#xff0c;几乎涵盖了技术从业者职业发展里最核心的一…

2026/10/21 5:29:11 阅读更多 →
零散技能如何变成核心竞争力?从技能清单到技能体系

零散技能如何变成核心竞争力?从技能清单到技能体系

直接说结论&#xff1a;“skills”这个词&#xff0c;看起来是个简单的复数名词&#xff0c;但它背后藏着一个几乎所有职场人都会遇到的问题——技能学了一堆&#xff0c;简历上写得密密麻麻&#xff0c;真到用的时候却总觉得哪哪儿都不顺手。我见过太多人把技能当成荣誉清单&a…

2026/10/21 5:29:11 阅读更多 →
代码托管平台访问慢?从DNS到资源加载的全链路优化指南

代码托管平台访问慢?从DNS到资源加载的全链路优化指南

1. 为什么打开代码托管平台会慢&#xff1a;先搞懂瓶颈在哪很多人一遇到页面转圈&#xff0c;第一反应就是“网不行”&#xff0c;然后开始重启路由器、切换网络&#xff0c;折腾半天发现该慢还是慢。我刚开始也这样&#xff0c;后来才意识到&#xff0c;打开这类海外代码托管平…

2026/10/21 5:28:10 阅读更多 →

最新新闻

iOS 15 ATT审核被拒两次?Xcode自动隐私清单解法揭秘

iOS 15 ATT审核被拒两次?Xcode自动隐私清单解法揭秘

1. 项目概述&#xff1a;一次被驳回两次的ATT权限申请&#xff0c;背后藏着什么真实逻辑&#xff1f; “苹果审核iOS 15版本App Tracking Transparency两次被驳回”——这个标题一出来&#xff0c;很多做iOS开发、运营或合规的同学第一反应是&#xff1a;又一个被ATT政策卡住的…

2026/10/21 6:12:29 阅读更多 →
多智能体动态事件触发共识控制的Matlab仿真与实现

多智能体动态事件触发共识控制的Matlab仿真与实现

多智能体系统的分布式协同控制&#xff0c;这些年无论是在学术界还是工业界都是个大热点。以前我们做多机器人编队、无人机集群、卫星星座协同这类课题时&#xff0c;最头疼的问题之一就是&#xff1a;怎么用最少的信息交互&#xff0c;还能保证所有智能体最终达到一致的状态&a…

2026/10/21 6:12:29 阅读更多 →
鸿蒙ArkUI开发:Slider滑块与Progress进度条从入门到工程实践

鸿蒙ArkUI开发:Slider滑块与Progress进度条从入门到工程实践

在鸿蒙应用开发的实际项目中&#xff0c;Slider和Progress这两个组件往往不会像Text、Button那样被单独拎出来讲&#xff0c;但它们恰恰是提升应用完成度与交互质感的关键细节。很多开发者在入门阶段容易忽略这两个控件&#xff0c;直到做播放器、设置页、上传下载状态展示时&a…

2026/10/21 6:12:29 阅读更多 →
ONVIF Java SDK实战:摄像头统一接入、RTSP取流与PTZ控制

ONVIF Java SDK实战:摄像头统一接入、RTSP取流与PTZ控制

简介&#xff1a;这份资源是一套基于Java的ONVIF协议开发SDK&#xff0c;面向需要对接网络摄像头、实现设备发现、鉴权与媒体流控制的开发者。包内共1157个文件&#xff0c;主体为1147个Java源码文件&#xff0c;另有少量jar依赖库&#xff08;如commons-codec、javaWsDiscover…

2026/10/21 6:12:29 阅读更多 →
知识工作插件实战:搭建高效采集整理输出工作流

知识工作插件实战:搭建高效采集整理输出工作流

“知识工作插件”这几年被反复提起&#xff0c;但真要问它到底是什么——是一类浏览器扩展&#xff0c;还是编辑器里的组件&#xff0c;又或者某个知识管理工具的二次开发能力&#xff1f;我自己的答案是&#xff1a;都不是单独一个&#xff0c;而是围绕“输入→处理→沉淀→输…

2026/10/21 6:12:29 阅读更多 →
机器人对话系统地图模块设计:POI检索、路径规划与避坑实践

机器人对话系统地图模块设计:POI检索、路径规划与避坑实践

做机器人对话系统最头疼的一件事&#xff0c;不是意图识别&#xff0c;也不是自然语言生成&#xff0c;而是把真实世界接进来。用户问一句“我从现在的地方去服务中心怎么走”&#xff0c;你得在几百毫秒内完成坐标解析、路径计算、话术拼接&#xff0c;还得把路线图用卡片发出…

2026/10/21 6:11:29 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/20 9:50:45 阅读更多 →