吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1719|回复: 9
收起左侧

[CrackMe] 用gpt6 astra生成的极难crackme

[复制链接]
exchange110 发表于 2026-9-18 00:17
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

本帖最后由 exchange110 于 2026-9-18 00:35 编辑

挑战目标
恢复任意合法用户名对应的有效 Key。
提交 (username, key) 。修改本地打印内容、复制公开输出或修改退出码,不算恢复有效 Key
运行方式
Windows x64,无需管理员权限。
双击进入交互模式,显示结果后窗口会保留:按回车继续尝试,输入 Q 再按回车退出。也支持命令行:crackme.exe --user <用户名> --key <Key>
  • 用户名:1–32 个 ASCII 可见字符,不含空格。
  • Key:32 个 Crockford Base32 字符,大小写均可,可插入连字符 -,不接受 I/L/O/U。
  • 格式有效时,正确与错误 Key 都会产生固定格式输出,不直接显示“成功”或“失败”。
  • 附件有crackme和验证器

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

sfl4800 发表于 2026-9-20 14:11
本帖最后由 sfl4800 于 2026-9-20 14:13 编辑

admin
RE324QZFJB01XXJHNJNZHXDQXHFMHE5M

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x
fuc8king 发表于 2026-9-19 22:43
gpt6 astra能不能直接进行逆向呢

免费评分

参与人数 1吾爱币 -20 违规 +1 收起 理由
bian96 -20 + 1 警告:CM区等技术板块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

richard_ljd 发表于 2026-9-19 08:57
QQ40052090 发表于 2026-9-18 16:46
用gpt6 astra继续crack

一进来就看到我想说的了

免费评分

参与人数 1吾爱币 -20 违规 +1 收起 理由
bian96 -20 + 1 警告:CM区等技术板块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

QQ40052090 发表于 2026-9-18 16:46
用gpt6 astra继续crack

免费评分

参与人数 1吾爱币 -20 违规 +1 收起 理由
bian96 -20 + 1 警告:CM区等技术板块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

SakuraZzzz 发表于 2026-9-20 10:05
但是gpt的甲不是巨厚无比吗 怎么能够破解呢 能不能麻烦大佬给个破甲的方法啊

免费评分

参与人数 1吾爱币 -20 违规 +1 收起 理由
bian96 -20 + 1 警告:CM区等技术板块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

Shhms8 发表于 2026-9-20 16:42
有没有什么能衡量ai对安全的能力强弱的benchmark
reboot1105 发表于 2026-9-21 00:15
本帖最后由 reboot1105 于 2026-9-21 00:16 编辑

可是他的甲我感觉有点还是厚啊,skill感觉越不太过去
凴子迷 发表于 2026-9-21 08:52
路过,感觉有点复杂

免费评分

参与人数 1吾爱币 -20 违规 +1 收起 理由
bian96 -20 + 1 警告:CM区等技术板块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

狂暴补师亚丝娜 发表于 2026-9-25 00:55
结果

对任意合法用户名(1–32 可打印 ASCII、无空格),有效 Key 为:
[Python] 纯文本查看 复制代码
key = CrockfordBase32(K_true XOR C1(user))


- `K_true = 39 42 d4 43 66 ce 5f a2 7d 25 d1 de 90 e0 1a 19 94 fa 8c 9e`(20 字节,从 .cmblob 中反演)
- `C1(user) = SHA256( ‖ 用户名 )[0:20]`,其中每个数据段前带 4 字节小端长度前缀
- Crockford Base32 打包为 **MSB-first 5-bit**:第 i 个字符的 5 位值 v,其 bit (4&#8722;b) 落在全局 bit 位 5i+b(字节内 MSB 在前)

示例(可直接验证,B 部分解出明文 `R-TYPE / RECOVER THE KEY / VERIFY WITH THE TRUSTED GRAD`):

[Asm] 纯文本查看 复制代码
| username    | key                                |

| ----------- | ---------------------------------- |

| Alice       | `TZFC2WT5EX373GFGX73NXJ4CQW6PEW8T` |

| Bob         | `0XEY5CSZW33YKZ8D80D0HQDG4VVGHMQM` |

| a           | `YR0PYTARTFCHSJ968ZF5WA8WJ8CTC4SZ` |

| ZxcUser2025 | `KQWHM0T2KDRW5AF9WPH6EZRKSS26SP6P` |



[Asm] 纯文本查看 复制代码
| username    | key                                |

| ----------- | ---------------------------------- |

| Alice       | `TZFC2WT5EX373GFGX73NXJ4CQW6PEW8T` |

| Bob         | `0XEY5CSZW33YKZ8D80D0HQDG4VVGHMQM` |

| a           | `YR0PYTARTFCHSJ968ZF5WA8WJ8CTC4SZ` |

| ZxcUser2025 | `KQWHM0T2KDRW5AF9WPH6EZRKSS26SP6P` |



B 部分 hex 还原即为 `R-TYPE / RECOVER THE KEY / VERIFY WITH THE TRUSTED GRAD`(尾随空格填充)。错误 key 的 B 部分是乱码;正确 key 的 B 部分是这条固定明文——这就是"有效性"的唯一判据(A 部分为带用户名/密钥绑定的 HMAC,随用户名变化)。

## 程序保护与架构

- **CMGUARD1(.cguard, RVA 0x30000, 0x5030 字节)**:完整性保护。`manifest = SHA256(len-pref "manifest-v1" ‖ cg[0:8] ‖ cg[8:12] ‖ cg[12:16] ‖ cg[0x30:0x5030])`,与存储在 `cg[0x10:0x30]` 的摘要异或得 G。**G=0 表示完好**;guard 输出仅 32 字节、之后被清零。.text 任何改动都会破坏 blob 解密链(实际并未直接参与密钥,但 guard eax=0 时 main 报错 4 退出)。
- **.cmblob(RVA 0x36000, 0x1d6b 字节)**:加密 blob。magic `CMR1S4`;[8:0x18]=salt1、[0x18:0x38]=salt2、[0x38:0x58]=扩散函数密钥、[0x58:0x83]=**期望扩展**(破解关键)、[0x83:0x183]=ce0 轮表(64×dword)、[0x183]=8 字节置换、[0x18b]=16 nibble 置换、[0x19b:0x1d2b]=加密 body、[0x1d2b:0x1d6b]=加密的 64 字节尾。
- **隐藏 `--worker` 参数**:独立运行静默退出码 5;配合 CMIPC1 IPC 协议(0x140006300,5000ms 超时同步),为多进程 body 解密执行架构,与 key 恢复无关。
- **防篡改陷阱**:`.text` 不可 patch(guard 哈希校验);DRx 硬件断点实测安全(输出与无插桩运行逐字节一致)。

完整算法链
[Asm] 纯文本查看 复制代码
1. keybits  = CrockfordDecode(key_str)          # 160 bit, MSB-first
2. C1       = SHA256(LP12"user-mask-v1" ‖ LP16 salt1 ‖ LP32 salt2 ‖ LPlen user)[0:20]
3. key20    = C1 XOR keybits
4. ext14    = ce0(key20)                        # 20B:5×dword LE 移位寄存器
              state[j]=LE32(key[4j]); 64 轮:t=rol32(s1+LE32(blob[0x83+4i]),7);
              new=t^s2^s0; state=[s1,s2,s3,s4,new]; 输出 LE 存 5×dword → key[0x14:0x28]
5. ext28    = 32c0(key20)                       # 23B 位扩散:chacha20(blob[0x38:0x58],
              nonce@0x1400206a8,ctr0) 生成 0x48547 字节密钥流,
              与 key20+1 起始的 161-bit 向量做与/移位累积 → key[0x28:0x3f]
6. digest   = SHA256(LP8"state-v1" ‖ LP16 salt1 ‖ LP23(key[0x28:0x3f]^blob[0x58:0x6f])
              ‖ LP20(key[0x14:0x28]^blob[0x6f:0x83]) ‖ LP32(key[0x3f:0x5f]=固定))[0:32]
7. PRK      = HMAC-SHA256(salt2, key20 ‖ digest)                 # HKDF-Extract
8. tailkey  = HKDF-Expand(PRK, "data-v1", 32)                   # → key[0x5f:0x7f]
   tagkey   = HKDF-Expand(PRK, "tag-v1", 32)                    # → key[0x7f:0x9f]
9. B        = hex(chacha20(tailkey, nonce"DATA-v1", ctr=1, blob[0x1d2b:0x1d6b]))
10. A       = hex(HMAC-SHA256(tagkey, SHA256(LP10"binding-v1" ‖ LP16 salt1 ‖ LP user
              ‖ LP20 keybits ‖ LP135 B_text))[0:16])
11. OUT     = "OUT:" + A + "|" + B_text


破解思路

[Asm] 纯文本查看 复制代码
1. **修复 zxc_call_remote**(把伪造调用栈放到新线程真实栈上,修复 SetThreadContext gle=87),得到目标进程内的**黑盒预言机**:任意函数可带最多 8 参数调用并取 RAX。支持 4 个寄存器参数 + 4 个栈参数。

2. 预言机逐段验证离线模型:`0x140003f50`(guard→G=0)、`0x140002ef0`(C1 推导,模型吻合)、`0x140002d70`(Crockford 解码,MSB-first 位打包由实测样本破译)、`0x140004c60`(blob_open 全链)、`0x140001000`(ChaCha20,注意参数序 key/nonce/ctr/**src=r9/dst=栈**/len)、HKDF 原语(0x140001b80 Extract / 0x140001a00 Expand / 0x140001bd0 HMAC)。

3. **密钥调度全图**:blob_open 在调用者的 key 缓冲上"就地"派生:+0x14 扩展(ce0 移位寄存器)、+0x28 扩展(32c0 位扩散)、+0x5f tailkey、+0x7f tagkey。

4. **决定性观察**:0x140003520 的 SHA 链把两个"派生扩展 XOR blob 常量"的缓冲(buf1=key[0x28:0x3f]^blob[0x58:0x6f]、buf2=key[0x14:0x28]^blob[0x6f:0x83])混入摘要——而 blob[0x58:0x83] 恰好 43 字节常量。**假设:正确 key20 使 buf1=buf2=0,即 ce0(K_true)=blob[0x6f:0x83]。**

5. **ce0 是可逆的**:64 轮每轮 t=rol32(s1+dw[i],7)、new=t^s2^s0、下移——由最终状态逐轮回退得初态即 key20。反演 blob[0x6f:0x83] 得 `K_true=3942d44366ce5fa27d25d1de90e01a1994fa8c9e`。

6. **验证闭环**:把 K_true 喂回预言机 blob_open——ext14 与 ext28 双双命中 blob 常量,tailkey 解出可读明文;再按公式生成用户 key,真实二进制输出正确 B 部分。Alice/Bob/单字符/带符号用户名全通过。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-9-25 05:15

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表