好友
阅读权限10
听众
最后登录1970-1-1
|
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。
本帖最后由 sakura-galaxy 于 2026-1-20 11:56 编辑
大家好,
这个是C++20系列的crackme,总共有三个crackme,不同于简单加壳或混淆的crackme,这个系列希望通过C++的一些语言特性与代码逻辑实现。
整个系列开放源代码在github/Tokisaki-Galaxy/crackme99 ,如果没有思路可以去看看源代码。接下来时间会在站内放出制作思路。
破解目标是密钥或者输入任意字符达到验证成功。三个crackme均存在密钥,并且密钥很简单可以被短时间暴力碰撞出来。
另外全系列crackme难度跨度较大(具体是beta到gamma,难度跨度非常大),Gamma版本已经几乎达到了商业VMProtect的水平。
Alpha版本
设计上是系列最简单的crackme,但是只喜欢F10的宝宝会疯的。
(其实设计上有点荒谬的233)
在破解的时候,若看到stdxxx就不要再往下追了,是C++标准库。
Alpha版本的目标不同于其他版本,最好可以实现逆向自定义字节码并绕过编译时字符串加密(如果目标是混过关,只是考验基本功)。
困难点在于
内部的 VM 调度器使用协程实现。线性执行流被粉碎成堆分配的帧,使标准的“单步跳过 (F10)几乎不可能
一打开 IDA,会看到一堆乱七八糟的 STL 符号(std::_Visit_helper, std::coroutine_handle),代码量比实际逻辑大 50 倍。
Alpha 版本的真正威力不在于它的校验算法多难,而在于通过 C++20 特性建立了一道不同于其他crackme的理解障碍
Beta版本
设计上论坛上一些高手能达到的水平,新手可能完全没有头绪。
困难点在于
挑一些能说的,还有一些要自己发现才好玩。
标准的控制流图几乎完全失效,没有if-else判断,几乎都是throw/catch处理
里面有某些反调试方法
Gamma版本
这个系列的终极形态
设计时候没有想过有人能不参考源代码纯解出来(不过也有可能有大佬没考虑到,其实夸张了),理论上应该是密码学安全的。强度应该与VMProtect类似。
这个完全是炫技的东西。
困难点在于
多态指令流,代码-数据纠缠(指令不以静态形式存在于二进制文件中)
无崩溃执行,即使输入错误的密钥,VM 也会在安全沙箱内执行“垃圾”逻辑。没有任何崩溃来帮助你定位错误。
全系列无壳,Alpha和Beta版本如果还给出pdb就太简单了,所以只在Gamma版本给出pdb。(如果能不参考pdb和源代码解出来那真的是超级无敌厉害了)
希望大家玩得开心,一会发教程。
以下是x64版本
以下是x32版本
如果无法访问论坛附件链接下载,也可以通过github的release下载(github/Tokisaki-Galaxy/crackme99)
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|
|