|
64| 5
|
[原创] 一次 .NET WPF 图片工具激活逻辑的逆向经验分享 |
本机没有现成 ILSpy / dnSpy /
|
| 从 UTF-16 / ASCII 字符串里很快铺开一张图: | 线索类型 | 例子(已脱敏) | 用途 |
|---|---|---|---|
| 类型/方法名 | Activation、ActivateAndVerifyWithServer、ReadAndSaveLocalActivationInfo、MachineCode、StringEncryptor |
直接当类清单 | |
| 资源 | Activation.xaml、启动相关 URI |
启动页入口 | |
| 网络 | https://×××.×××.com、/api/activation/、activate_verify、activate_software |
服务端协议形态 | |
| 本地 | %LocalAppData% 下带时间戳目录 + ×××_Activation×××.dat |
落盘位置 | |
| 硬件 | Win32_Processor / Win32_BaseBoard / UUID 等 |
机器码素材 |
到这一步,还没看 IL,已经能写故事大纲:
启动 → 激活窗 → 读本地加密文件 → 组 machineCode → POST 校验/激活 → 成功则进主窗
主业务 ViewModel 的 IL 可以非常庞大,激活相关其实就那几个小类。这次刻意只深挖:
App:启动 URI Activation:Loaded / 校验 / 点激活 / 试用按钮 ActivateAndVerifyWithServer:HTTP ReadAndSaveLocalActivationInfo + StringEncryptor:本地读写与加解密 MachineCode:设备指纹 GlobalConfig:常量静态构造GlobalConfig 静态构造)脱敏后形态:
https://×××.×××.com %LocalAppData%\×××_…\ + 固定 dat 名 { email, activationCode, … } 逻辑近似:
partA = CpuId 优先,否则 Mac
partB = 主板序列号 优先,否则 UUID
machineCode = MD5( partA + partB + email ).ToHexUpper()
邮箱会进哈希,所以「同一台机器、不同邮箱」机器码不同——和绑定策略一致。
| 两条路径,同一套 POST JSON: | request 语义 | 路径形态(脱敏) | 场景 |
|---|---|---|---|
| 启动复验 | …/activate_verify/{edition} |
本地已有档案时 | |
| 用户点激活 | …/activate_software/{edition} |
输入邮箱+激活码 |
响应大致是 { code, message },客户端用业务码 switch:成功则 new MainWindow() 并 Close 激活窗;客户端侧异常码(网络、JSON、超时等)也在同一套枚举里。
存在单独按钮逻辑:置位试用标志 → 直接 Show 主窗。
试用在导出链路里可能再盖内置水印资源。说明产品把「能用」和「已授权」拆成了两条 UI 路径。
本地 dat = 方便下次自动登录的缓存(可加密,但密钥在客户端)
服务端 = 真正放行(activate_verify / activate_software)
主窗 = 静态看未再强校验
Activation 里异步状态机比较烦(d__3 / d__4),但模式固定:
GetReadLocalActivationInfo() set_machineCode + ActivateVerifyAsync(..., "activate_verify") code 做 switch(一截成功码、一截客户端错误码) MessageBox(可选)→ MainWindow.Show() → Close() App.InitializeComponent 里则是一行很「诚实」的:
StartupUri = "Activation.xaml" // 资源名明文
StartupUri、激活窗 Loaded、试用/确定按钮。异步状态机吓人,但跳转目标往往就这几个。switch 的 目标偏移表 打出来,否则只看到 switch Instruction[],成功码对应哪条分支会对不上。| 从「理解程序」角度,门闩从早到晚大致是: | 分叉点 | 含义 | 学习价值 |
|---|---|---|---|
StartupUri 明文 |
是否先加载激活页 | 启动门闩是否脆弱 | |
| 试用按钮 | 是否允许无码进入 | 正式/试用状态机是否统一 | |
| 服务端成功码 | 是否信任远端 | 真授权点 | |
| 主窗 / 导出 | 是否二次校验 | 门闩是否只做在门口 |
本次静态结论偏软的点:
ILSpy/dnSpy 优先;没有就 Mono.Cecil 自写导出;动态调试(dnSpy 下断、看 POST body)适合验证,不是第一步。001.JPG (112.84 KB, 下载次数: 0)
1.8 MB, 下载次数: 0, 下载积分: 吾爱币 -1 CB
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。
|
沙发
发表于 2026-7-9 16:23
| ||
|
3#
发表于 2026-7-9 16:29
| |
|
4#
发表于 2026-7-9 16:30
| ||
|
5#
发表于 2026-7-9 16:35
| ||
RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )
GMT+8, 2026-7-10 15:05
Powered by Discuz!
Copyright © 2001-2020, Tencent Cloud.