reverse-skills-max: initial public release (restored, redacted, hardened)
This commit is contained in:
120
vendor-new/rev-skills/.claude/skills/re-license/SKILL.md
Normal file
120
vendor-new/rev-skills/.claude/skills/re-license/SKILL.md
Normal file
@@ -0,0 +1,120 @@
|
||||
---
|
||||
name: re-license
|
||||
description: 授权验证逻辑分析:注册校验定位。触发词:注册码、授权验证、license、序列号校验、破解定位
|
||||
capabilities: [license-analysis]
|
||||
---
|
||||
|
||||
# 授权验证逻辑分析(注册校验定位)
|
||||
|
||||
## 何时使用 / 何时不用
|
||||
|
||||
- **边界(继承 [[re-cracking]])**:仅限自有软件 / 授权测试 / CTF·研究环境;禁止未授权软件解锁与商业软件绕过;断点观察返回值等动态步骤前,用户须说明目标归属(所有权 / 测试授权 / 研究环境)
|
||||
- 用:程序有注册 / 激活流程(输入序列号、注册码、授权文件),需要定位"在哪校验、怎么校验"
|
||||
- 用:破解前置——为 [[re-patching]] / [[re-keygen]] 提供校验点地址与校验算法
|
||||
- 用:判断授权是在线激活还是离线校验;识别机器码绑定、有效期 / 订阅型授权
|
||||
- 不用:目标已定位校验分支、只改字节绕过(直接 [[re-patching]])
|
||||
- 不用:确认无授权机制(无注册 UI / 注册表 / 授权文件读取——诚实告诉用户,见坑 5)
|
||||
- 不用:只做协议层分析(在线激活的流量分析走 [[re-protocol]])
|
||||
- 注意:样本带壳先脱壳([[re-anti-analysis]]);校验函数被混淆先 [[re-deobfuscate]](见坑 1);动态环节沙箱执行([[re-sandbox]],[[re-analyze/platform-tips]] 最高原则)
|
||||
|
||||
## 工具准备
|
||||
|
||||
### 调试器(按 OS)
|
||||
|
||||
- Linux / Wine 下调试 PE: [[re-gdb]] —— `apt install gdb` / `dnf install gdb` / `pacman -S gdb`,验证 `gdb --version`;**Wine 直读**:`wine sample.exe` 运行后 `gdb -p <pid>` attach([[re-analyze/platform-tips]] Linux 分支)
|
||||
- Windows: [[re-x64dbg]] —— 官方 release zip,attach 需管理员权限([[re-analyze/platform-tips]] Windows 分支);验证:载入样本能单步
|
||||
- macOS: [[re-lldb]] —— `brew install lldb`,验证 `lldb --version`;attach 前检查 Developer Tools 授权([[re-analyze/platform-tips]] macOS 分支)
|
||||
- WSL: 无法 attach Windows 进程——跨边界分析走 Windows 侧工具,WSL 内只做静态([[re-analyze/platform-tips]] WSL 分支)
|
||||
|
||||
### 反编译器([[re-ghidra]] 等,交叉引用工作台)
|
||||
|
||||
- Ghidra: `apt install ghidra` / `dnf install ghidra` / `pacman -S ghidra` / `brew install --cask ghidra`,验证 `analyzeHeadless -help`(安装细节见 [[re-ghidra]])
|
||||
- 替代: [[re-ida]](无头 `idat`,命令见该技能)、[[re-radare2]](安装矩阵见该技能,安装后以 `rizin -v` 验证)
|
||||
- 作用:strings / API 的交叉引用(xref)是"谁在调用注册相关函数"的关键
|
||||
|
||||
### strings —— 可打印串快速扫描(全平台)
|
||||
|
||||
- Linux: `apt install binutils` / `dnf install binutils` / `pacman -S binutils`(多数自带)
|
||||
- macOS: 系统自带 /usr/bin/strings
|
||||
- Windows/WSL: WSL 内 Linux 版;Windows 本机用 Sysinternals `strings.exe`
|
||||
- 验证: `strings --version`
|
||||
|
||||
### 动态补充(可选):strace / ltrace / ProcMon
|
||||
|
||||
- Linux: `apt install strace ltrace`,验证 `strace --version`;观察注册表(Wine 下)/ 文件 / API 调用(详见 [[re-tracing]])
|
||||
- Windows: Sysinternals Process Monitor(官网下载独立 exe,无包管理器)——注册表 / 文件 / 进程 / 网络全量 trace([[re-behavior]] 衔接);注册表操作是授权读取的主路径
|
||||
|
||||
## 操作步骤
|
||||
|
||||
按顺序执行,每步记录结果(校验点地址 + 证据路径,见 [[re-triage]])。产物:**全部校验点清单 + 校验算法**,交给 [[re-patching]] / [[re-keygen]]。
|
||||
|
||||
1. **字符串 / API 交叉引用定位校验函数**:
|
||||
```sh
|
||||
strings -n 5 sample.exe | grep -iE 'register|serial|license|invalid|activation|trial|key' | head -50
|
||||
strings -el sample.exe | grep -iE 'register|serial|license' | head -20 # UTF-16LE(Windows 常见)
|
||||
```
|
||||
- 反编译器里对命中字符串查 xref(Ghidra 右键 Find References / IDA `x` / rizin `axt @ str.*`)——看它被哪个函数引用:**弹窗/输入框附近的引用函数就是候选校验函数**(MessageBox 类"Invalid registration code"、注册对话框、注册表读取 `RegOpenKeyExW` / `RegQueryValueExW`、`GetVolumeInformationW` 机器码读取)
|
||||
- API 侧:导入表搜 `MessageBox` / `Reg*` / `GetVolumeInformation` / `GetSystemTimeAsFileTime`,反编译引用函数;Linux 目标用 ltrace 观察 `strcmp` / 文件读取调用([[re-tracing]])
|
||||
- 记下每个候选函数的地址与文件名(可能多个校验函数,见坑 3)
|
||||
|
||||
2. **调用图与校验分支(成功 / 失败跳转)**:
|
||||
- 反编译校验函数,确认结构:读输入(序列号字符串 / 注册表值)→ 计算 / 比较 → **按结果跳转**(`jz` / `jnz` 到成功或失败处理)。失败路径特征:MessageBox 报错、置注册标志为假、调用 `ExitProcess`
|
||||
- 找注册标志:全局变量(0/1)在成功路径置 1,功能代码检查它;xref 该标志可找出**所有**消费它的功能校验点(不只启动校验,见坑 3)
|
||||
- 动态确认(沙箱内,[[re-analyze/platform-tips]] 最高原则):调试器断在校验函数返回处看返回值与跳转方向——[[re-gdb]]:`break <addr>` 后 `si` 跟跳转;[[re-x64dbg]]:`bp <addr>` 后看标志位
|
||||
- 产物:每个校验点的 地址 / 调用方 / 成功-失败分支地址 / 注册标志
|
||||
|
||||
3. **算法还原(对比 / 解密 / 签名验证)**:
|
||||
- **对比型**:`strcmp` / 逐字节比较 → 序列号与固定值或动态派生值比较,还原派生计算(可能是 [[re-crypto-id]] 的 XOR / 查表 / 简单变换)
|
||||
- **解密型**:序列号先解密(XOR / base64 / 自实现)再比对 → 还原解密为生成步骤(XOR 对称可直接逆;查表求逆映射)
|
||||
- **签名验证型**:`RSA_verify` / `ECC` 验签 → 算法不可逆,正推生成不可能 → 报告给网关转 [[re-patching]](见坑 4)
|
||||
- 用 [[re-crypto-id]] / [[re-crypto-decrypt]] 思路还原加解密环节;反编译伪代码转成独立脚本验证一遍(对已知合法序列号,程序行为与脚本结果一致)
|
||||
|
||||
4. **在线激活 vs 离线校验区分**:
|
||||
- 特征:导入表含网络 API(WinINet `InternetOpen*` / `WinHttp*` / `socket`)、激活流程有"输入序列号 → 联网 → 返回激活码"、字符串含服务器 URL / "activation failed"
|
||||
- 在线激活:本地只校验响应格式(伪校验),真实验证在服务器 → 转 [[re-protocol]]([[re-netcap]] 沙箱抓包 + [[re-crypto-id]] [[re-crypto-keys]] [[re-crypto-decrypt]] 处理加密);本地侧只处理响应校验与离线回退逻辑
|
||||
- 离线校验:算法完全在本地,正常走步骤 3 还原
|
||||
- 区分方法:断网运行(沙箱断网)看激活是否失败/超时([[re-sandbox]] 网络隔离)
|
||||
|
||||
5. **机器码绑定识别**:
|
||||
- 搜索导入/调用:`GetVolumeInformationW`(卷序列号)、`GetComputerNameW`、`GetUserProfileDirectoryW`、Windows 注册表 `MachineGuid`、Linux `/etc/machine-id` 读取
|
||||
- 确认序列号生成 / 校验输入含机器码:反编译看校验函数是否先读机器码再参与运算
|
||||
- 绑定确认后:**注册机生成逻辑必须含输入**(用户名 / 机器码参数化,见 [[re-keygen]] 坑 2);报告里注明"此授权绑定机器码"
|
||||
|
||||
6. **授权模型识别(处置路线决定)**:
|
||||
- **节点锁定**(机器绑定):序列号 = f(机器码) → 可逆则 [[re-keygen]] 路线
|
||||
- **有效期 / 订阅型**:校验到期时间 → 时间型校验分支(步骤 7);到期提示字符串("expired"/"trial")xref 定位
|
||||
- **功能开关型**(freemium):校验点散在各功能入口,注册标志多个 → 全量清单必须完整(坑 3)
|
||||
- **浮动授权**(许可证服务器):本地无完整校验 → 转 [[re-protocol]] 分析许可证协议
|
||||
- 模型判定依据:授权文件 / 注册表项内容(含到期日期字段 = 订阅型;含机器码哈希 = 节点锁定)
|
||||
|
||||
7. **时间型校验(有效期)**:
|
||||
- 时间读取 API:Windows `GetSystemTimeAsFileTime` / `GetLocalTime`,Linux `time()` / `gettimeofday`——xref 到比较逻辑(`> 到期时间`)
|
||||
- 反篡改:程序可能记录"上次运行时间"并检测时钟回拨(当前时间 < 上次记录 → 报错)——改动系统时间前先定位该检测点
|
||||
- 产物:到期时间存储位置(注册表 / 文件)、比较函数地址——补丁或绕过目标
|
||||
|
||||
8. **证据核对(收尾)**:
|
||||
- 全量校验点清单(地址 / 分支 / 标志 / 证据级别)入档 [[re-analyze/analysis-contract]];结论按证据分级标注(动态确认 vs 静态推断,见 [[decision-tree]])
|
||||
- 交付:校验点清单 + 算法文档 → [[re-cracking]] 网关统一验证
|
||||
|
||||
## 跨域联合
|
||||
|
||||
- [[re-cracking]]:本网关是 re-cracking 工作流第 2 步(授权定位),产物(校验点清单 + 算法)供第 4 / 5 步
|
||||
- [[re-patching]]:下游——拿到校验点地址后改分支 / 跳过校验
|
||||
- [[re-keygen]]:下游——拿到校验算法后逆推生成逻辑
|
||||
- [[re-anti-analysis]]:带壳样本先脱壳(OEP 后再分析);校验函数被混淆先 [[re-deobfuscate]]
|
||||
- [[re-protocol]]:在线激活 → 抓包分析激活协议(netcap → crypto-id → crypto-keys → crypto-decrypt → proto-rev)
|
||||
- [[re-binary-core]]:反编译工作台([[re-ghidra]] / [[re-ida]] / [[re-radare2]])
|
||||
- 动态:[[re-gdb]] / [[re-x64dbg]] / [[re-lldb]](断点看分支返回值)、[[re-tracing]](strace / ltrace 看注册表 / 文件 / API 调用)、[[re-memdump]](内存中的注册标志 / 校验结果)
|
||||
- [[re-behavior]]:Windows 侧 ProcMon 注册表 / 文件行为 trace 衔接
|
||||
- [[re-sandbox]]:动态定位与验证沙箱([[re-analyze/platform-tips]] 最高原则)
|
||||
- [[re-ioc]]:注册相关字符串 / 校验指纹可作 YARA 特征
|
||||
|
||||
## 常见坑与陷阱
|
||||
|
||||
- **校验函数被混淆 / 加密**:现象——定位到的校验函数反编译全是花指令 / 平坦化 / 字符串密文,看不出比较逻辑;原因——授权校验是重点保护对象,常叠加混淆;对策——先 [[re-deobfuscate]](花指令清除 → 平坦化还原 → 字符串解密)再分析,不要硬啃密文
|
||||
- **在线激活当离线破解**:现象——本地判定分支全改完,程序依然拒绝使用 / 功能锁死;原因——真实验证在服务器端(本地只有响应校验);对策——步骤 4 先区分在线 / 离线(断网测试),在线转 [[re-protocol]] 抓包分析激活协议,本地侧只处理响应校验
|
||||
- **校验可能多次(启动 + 功能点)**:现象——启动校验绕过成功,用核心功能时又弹注册;原因——校验点不止一个(启动、功能点、定时器、版本升级检查);对策——步骤 2 遍历校验函数全部 xref / 注册标志的全部消费点,做全量校验点清单(这是 [[re-cracking]] 网关坑 2 的根源)
|
||||
- **算法不可逆还硬还原**:现象——校验含 SHA / MD5 / RSA 验签,序列号生成逻辑无法正推;原因——单向函数;对策——诚实报告不可逆,转 [[re-patching]](跳过验签 / 改分支),不要伪造"还原成功"
|
||||
- **伪校验误导**:现象——改了判定分支程序照常退出 / 无效果;原因——改动点不是真正的授权判定(假分支 / 蜜罐校验,真判定在别处);对策——动态断点确认每个分支真实影响注册标志与程序行为,再进补丁阶段
|
||||
- **时间型校验漏判**:现象——改完所有序列号校验仍提示过期;原因——另有到期时间校验(订阅 / 试用)独立于序列号校验;对策——步骤 7 查时间 API xref 与到期存储位置,纳入全量清单
|
||||
- 更多决策分支与边界(授权模型判定树 / 证据分级 / 时间篡改反例)见 [[decision-tree]] 与 [[gotchas]]
|
||||
@@ -0,0 +1,104 @@
|
||||
# 授权验证分析决策树与证据分级
|
||||
|
||||
## 场景决策树(入口 → 分支)
|
||||
|
||||
### 1. 授权机制存在性判定(第一级)
|
||||
|
||||
```
|
||||
样本有注册/激活流程(注册 UI / 授权文件 / 注册表项 / 序列号输入)
|
||||
├─ 带壳 / 混淆 → 先 [[re-anti-analysis]] 脱壳 / [[re-deobfuscate]] 还原,再进主线
|
||||
├─ 无任何授权特征 → 诚实报告"无授权机制",不臆造校验点
|
||||
└─ 有授权特征 → 进入定位主线(第 2 节)
|
||||
```
|
||||
|
||||
### 2. 定位主线(校验点发现)
|
||||
|
||||
```
|
||||
字符串 / API 交叉引用
|
||||
├─ 命中"invalid/register/license/trial/expired"类字符串 → xref → 候选校验函数
|
||||
├─ 命中注册表 API(RegQueryValueExW)→ xref → 授权值读取点
|
||||
├─ 命中机器码 API(GetVolumeInformationW 等)→ xref → 机器绑定分支(第 4 节)
|
||||
├─ 命中时间 API(GetSystemTimeAsFileTime/time)→ xref → 时间型分支(第 5 节)
|
||||
└─ 命中网络 API(InternetOpen*/WinHttp*/socket)→ 在线激活分支(第 6 节)
|
||||
↓
|
||||
候选校验函数全部列出 → 逐一定位:
|
||||
├─ 成功/失败跳转结构(jz/jnz)→ 确认是真校验(否则伪校验/蜜罐,见坑 5)
|
||||
├─ 注册标志全局变量 → xref 全部消费点 → 全量校验点清单
|
||||
└─ 动态断点确认分支方向与返回值(A 级证据)
|
||||
```
|
||||
|
||||
### 3. 算法类型分支(可逆性判定)
|
||||
|
||||
```
|
||||
校验函数内部结构
|
||||
├─ 对比型(strcmp/逐字节)→ 可逆 → 还原派生计算 → [[re-keygen]] 路线
|
||||
├─ 解密型(XOR/base64/自实现)→ 可逆(对称)→ 逆映射 → [[re-keygen]] 路线
|
||||
├─ 签名验证型(RSA/ECC verify)→ 不可逆 → [[re-patching]] 路线(诚实报告)
|
||||
├─ 哈希型(SHA/MD5 比较)→ 不可逆 → [[re-patching]] 路线
|
||||
└─ 混合型(可逆段 + 不可逆段)→ 分段标注,可逆段还原、不可逆段转补丁
|
||||
```
|
||||
|
||||
### 4. 机器绑定分支
|
||||
|
||||
```
|
||||
校验函数读机器码(卷序列号 / MachineGuid / /etc/machine-id / 主机名)
|
||||
├─ 确认绑定 → 报告注明"绑定机器码";keygen 生成逻辑必须参数化输入
|
||||
├─ 机器码参与运算但可换 → 虚拟环境/注册表值替换可绕过(环境侧验证)
|
||||
└─ 只读不参与校验(误报)→ 对照反编译确认数据流,别凭 API 存在下结论
|
||||
```
|
||||
|
||||
### 5. 时间型分支(有效期 / 订阅 / 试用)
|
||||
|
||||
```
|
||||
到期提示 / 时间 API 引用
|
||||
├─ 到期时间存储位置(注册表/文件)→ 定位比较逻辑
|
||||
├─ 时钟回拨检测(当前时间 < 上次记录)→ 先定位检测点再谈改时间
|
||||
├─ 宽限期(许可过期仍可用 N 天)→ 回退逻辑独立校验点,纳入清单
|
||||
└─ 与序列号校验并存 → 两个独立校验点都要进全量清单
|
||||
```
|
||||
|
||||
### 6. 在线激活分支
|
||||
|
||||
```
|
||||
网络 API + 激活流程
|
||||
├─ 断网测试:失败/超时 → 确认在线依赖
|
||||
├─ 本地只验响应格式(伪校验)→ 真验证在服务器 → [[re-protocol]] 抓包分析
|
||||
├─ 有离线回退(宽限/离线激活码)→ 本地回退路径独立还原
|
||||
└─ 服务器验证无法绕过 → 如实报告,转协议分析或终止
|
||||
```
|
||||
|
||||
### 7. 处置路线汇聚
|
||||
|
||||
```
|
||||
全量校验点清单(含证据级别)
|
||||
├─ 全部可逆 → [[re-keygen]](生成器 + 沙箱全校验点验证)
|
||||
├─ 部分可逆 → keygen 覆盖可逆段 + [[re-patching]] 覆盖不可逆段
|
||||
├─ 全部不可逆 → [[re-patching]](跳转/分支修改)
|
||||
└─ 在线主导 → [[re-protocol]] 协议层分析
|
||||
```
|
||||
|
||||
## 证据分级表
|
||||
|
||||
| 级别 | 证据形态 | 示例 | 用途 |
|
||||
|---|---|---|---|
|
||||
| A 强 | 动态确认 | 断点命中校验函数、分支方向与静态推断一致、注册标志实际翻转 | 可下"该校验点成立"结论 |
|
||||
| B 中 | 静态链完整 | xref 链 + 数据结构还原完整,无动态验证 | 标注"静态推断,待动态确认" |
|
||||
| C 弱 | 静态特征 | 仅字符串/API 存在,调用关系未闭合 | 只作候选,不下结论 |
|
||||
| 反证 | 伪校验 | 分支改动不影响行为、蜜罐路径 | 记录并排除,防误导 |
|
||||
|
||||
- 每个校验点独立分级:全量清单里 A/B/C 并存是常态,交付下游时标注清楚
|
||||
- "程序已注册"的动态结论必须含注册标志/行为证据,不能只凭静态改判
|
||||
|
||||
## 实现教训(内化)
|
||||
|
||||
- 字符串 xref 只定位候选,动态断点才定性:候选函数必须验证"改分支真的改变行为"(伪校验反例)
|
||||
- 注册标志是全局索引:xref 标志变量比逐个搜字符串更全地覆盖功能校验点
|
||||
- 授权模型先于算法:节点锁定 / 订阅 / 功能开关 / 浮动授权决定处置路线,模型判错全链白做
|
||||
- 在线与离线分开取证:断网测试是最快的模型区分手段,先区分再深入
|
||||
- 时间型校验常被漏:序列号校验之外独立存在——查时间 API 引用与到期存储位置
|
||||
- 每个结论带证据级别入档([[re-analyze/analysis-contract]]),下游(patch/keygen)按级别决定可信度
|
||||
|
||||
## 使用注意
|
||||
|
||||
- 动态环节全部在沙箱内([[re-sandbox]],[[re-analyze/platform-tips]] 最高原则);带壳/混淆样本先还原再定位
|
||||
- 本技能只做授权机制分析方法与结构描述,不涉及具体软件破解流程;产物交付限授权范围(自有软件/测试/研究)
|
||||
@@ -0,0 +1,40 @@
|
||||
# 授权验证分析方法论坑与边界
|
||||
|
||||
## 定位误导组(最容易白忙)
|
||||
|
||||
- **字符串 xref 不是结论**:命中"Invalid serial"的引用函数可能只是 UI 展示(弹窗封装),真校验在别处——每个候选都要动态断点确认"改分支是否改变行为",否则可能对着蜜罐/包装函数分析半天
|
||||
- **伪校验与蜜罐**:程序可故意提供"看起来像校验"的分支(改了就退出/无效果)把分析引偏——伪校验特征:改动后程序行为无任何变化;真校验特征:注册标志翻转、功能解锁
|
||||
- **同一字符串多处引用**:错误提示字符串常被多个校验点共用(封装函数)——逐个 xref 调用者,别只取第一个
|
||||
- **Wine 环境差异**:Wine 下 RegQueryValueExW 行为与原生 Windows 有差异(注册表位置/返回值)——Wine 结论标注环境,必要时原生 Windows 复核
|
||||
|
||||
## 授权模型边界组
|
||||
|
||||
- **在线激活的"伪校验"陷阱**:本地分支全改完程序仍锁死——真验证在服务器端;断网测试是第一道区分手段,本地"激活成功"响应可能只是缓存/离线回退(宽限期),到期后照样失效
|
||||
- **订阅型当永久型处理**:到期时间校验独立于序列号校验——只改序列号分支不解决过期;时间 API xref 与到期存储位置必须进清单
|
||||
- **功能开关型校验点分散**:freemium 的校验点散在各功能入口,启动校验只是其中之一——注册标志 xref 全覆盖,否则"绕过启动、功能仍锁"
|
||||
- **浮动授权无本地算法**:许可证服务器分发的授权,本地只有协议客户端——本地算法再完整也还原不出"服务器签发"的授权,转 [[re-protocol]]
|
||||
- **宽限期反例**:授权文件里的到期日期已过但程序仍可用 N 天(宽限逻辑)——宽限期是独立校验点(回退分支),改到期时间不一定立即生效,需同时处理回退逻辑
|
||||
|
||||
## 机器绑定与指纹组
|
||||
|
||||
- **指纹源多样性**:卷序列号 / MachineGuid / 主机名 / 用户名 / 网卡 MAC / SMBIOS UUID 都可能参与——只查一个来源会漏(对照 [[re-crypto-keys]] 思路枚举读取点)
|
||||
- **机器码"参与"不等于"绑定"**:API 存在不代表值进了校验运算——对照反编译数据流确认;只读不用的机器码 API 是常见误报源
|
||||
- **绑定判断要动态确认**:换机器码/改注册表值重跑程序,看序列号是否失效——行为验证比静态推断可靠
|
||||
- **虚拟化环境指纹差异**:VM 里的卷序列号/网卡特征与物理机不同——沙箱内验证绑定行为时,环境指纹变化可能干扰"绑定是否生效"的判断,先记录环境指纹基线
|
||||
|
||||
## 时间型校验组
|
||||
|
||||
- **时钟回拨检测**:程序记录上次运行时间并检测"当前时间 < 记录"——直接改系统时间会触发防回拨报错;先定位检测点(上次时间存储 + 比较逻辑)再动时间
|
||||
- **时间源不只墙钟**:`GetSystemTimeAsFileTime`/`time()` 是墙钟;`GetTickCount64`/QPC 是开机计时——有的程序用双源交叉校验(墙钟 + 开机计时),只改系统时间会露馅
|
||||
- **到期时间存储多种形态**:注册表 / 授权文件 / 隐藏文件 / 校验和保护的存储——ProcMon/strace 看授权相关读写定位存储点
|
||||
|
||||
## 工具与环境组
|
||||
|
||||
- **ProcMon 过滤授权路径**:ProcMon 全量记录量大,先按进程 + 注册表路径(授权相关 key)过滤再分析,别在全量事件里捞
|
||||
- **调试器修改时间/返回值要记录**:动态验证里改过的时间与返回值是"环境干预",报告要注明——干预前后行为对比才有说服力
|
||||
- **无符号调试的局限**:PDB/符号缺失时注册标志与结构靠人工识别——用公开符号版本对照 + 行为验证双保险(见 [[re-kernel]] 同类思路)
|
||||
|
||||
## 使用注意
|
||||
|
||||
- 全部动态验证在沙箱内([[re-sandbox]],[[re-analyze/platform-tips]] 最高原则);授权绕过类操作只用于授权范围(自有软件/测试/研究),不提供具体软件破解流程
|
||||
- 结论按 [[decision-tree]] 证据分级入档([[re-analyze/analysis-contract]]):动态确认 A / 静态推断 B / 候选 C 分开标注,交付下游时级别透明
|
||||
Reference in New Issue
Block a user