吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 372|回复: 5
上一主题 下一主题
收起左侧

[CrackMe] 刚写的 CMake/C++ CrackMe,欢迎分析

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

本帖最后由 qfxldhw 于 2026-5-4 10:46 编辑

刚写了一个控制台 CrackMe,C++17 + CMake 构建。

没有加商业壳,没有 VMProtect/Themida,没有联网和破坏性行为。  
主要做了 CMake 生成代码、简单 VM、字符串/常量混淆、多层哈希校验。

目标:

- 找到正确密码
- 逆向出校验算法
- 写 keygen 或 patch 都可以



欢迎各位师傅分析,纯练手题。

本帖子中包含更多资源

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

x

免费评分

参与人数 1热心值 +1 收起 理由
anotherNEw + 1 用心讨论,共获提升!

查看全部评分

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

沙发
Loobrey 发表于 2026-5-4 08:34
赞一下支持

免费评分

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

查看全部评分

3#
dqw7758521 发表于 2026-5-4 10:39
加油。。。。。。。

免费评分

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

查看全部评分

4#
那年夏天_ 发表于 2026-5-5 11:15
本帖最后由 那年夏天_ 于 2026-5-5 11:16 编辑

CMake-Hell://philia-093/2026

[Python] 纯文本查看 复制代码
import struct

enc_data = bytes([
    0x7A, 0x38, 0x16, 0xB0, 0x6F, 0x0C, 0x7E, 0x4F,
    0xCC, 0xBA, 0x72, 0x3C, 0x19, 0xCF, 0xA1, 0xF7,
    0x4A, 0xC7, 0x2F, 0xA8, 0xB7, 0xA3, 0xD2, 0xD5,
    0x82, 0x32
])

cmp_1 = bytes([
    0xA0, 0x15, 0xA1, 0x8A, 0xDB, 0x10, 0x20, 0xFC,
    0x26, 0xDE, 0x11, 0x2B, 0xE4, 0x82, 0x4A, 0xB8,
    0xA0, 0x07, 0x57, 0xCA, 0xCE, 0x9A, 0x08, 0xB2,
    0xB0, 0x8E, 0xAF, 0xF7, 0xE9, 0xBE, 0x54, 0xF9
])
cmp_2 = bytes([
    0x44, 0xF1, 0xCA, 0x59, 0x2E, 0x31, 0x60, 0xE1,
    0x38, 0xE1, 0xFE, 0x28, 0x3F, 0xDE, 0x8E, 0x9A,
    0xBA, 0x0B, 0x4A, 0x95, 0x0A, 0x07, 0xF7, 0x31,
    0x62, 0xCC, 0xD3, 0xAA, 0xCD, 0xE7, 0x7A, 0x2F
])


def ror8(v, n):
    v &= 0xFF
    n &= 7
    return ((v >> n) | (v << (8 - n))) & 0xFF if n else v


def crack():
    M = 0xFFFFFFFF

    answer = bytes(a ^ b for a, b in zip(cmp_1, cmp_2))
    t = struct.unpack('<8I', answer)

    h7 = t[7]
    h0 = t[0] ^ h7 ^ 0x6E24F083
    h = [h0, t[1], t[2], t[3], t[4], t[5], t[6], h7]

    def reverse(old, new):
        s = (new - 1847914627) & M
        s ^= 0xC2B2AE35
        s = (s + 2048144777) & M
        s ^= 0x9E3779B9
        return old ^ ((s - old) & M)

    parts = [h[0]]
    for i in range(7):
        parts.append(reverse(h[i], h[i + 1]))

    assert parts[7] == 0
    pwd = b''.join(struct.pack('<I', p) for p in parts[:7])
    return pwd.decode()


def check(pwd):
    h1 = 5381
    for c in pwd.encode():
        h1 = (c ^ (33 * h1)) & 0xFFFFFFFF

    h2 = 0xCBF29CE484222325
    for c in pwd.encode():
        h2 = ((c ^ h2) * 0x100000001B3) & 0xFFFFFFFFFFFFFFFF

    if h1 == 0x70CC3975 and h2 == 0x1241B5FD075B5519:
        print("ok")
    else:
        print("failed")


if __name__ == '__main__':
    pwd = crack()
    print(pwd)
    check(pwd)
5#
hagas520 发表于 2026-5-5 14:20
赞一下支持~学习学习~

免费评分

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

查看全部评分

6#
囚徒灬 发表于 2026-5-5 17:10
  
1. Keygen (python solve.py keygen)
  - 逆向 custom_block_hash 的链式哈希算法,从目标哈希值反推出唯一合法密码
  - 密码: CMake-Hell://philia-093/2026
  - 通过 DJB2、FNV-1a、长度等全部校验

  2. Patch (python solve.py patch cmakeme_hell.exe)
  - 自动解析 PE 结构,定位 jz 条件跳转指令
  - 将 0x14000309A 处的 jz +0x43(跳转到失败分支)替换为 nop; nop
  - 效果:任意输入都能通过 VM 验证,显示 [ok] gate opened

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2026-5-5 18:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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