吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3649|回复: 11
收起左侧

[KeyGenMe] 【大叔的草莓CM20140314】题解及注册机

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

本帖最后由 MistHill 于 2014-3-19 17:53 编辑

也搞个开放注册,增加点儿娱乐性

原帖请参阅Peace的《庆开放,大叔的草莓CM20140314强势推出》。

昨天去拿来看了看,因为之前摆弄过《吾爱破解六周年小玩具-大叔的草莓CM20140313》,所以这次拣了个便宜。可见多参加活动好处大大的,而且Peace大笔一挥,我立马跻身于土豪的队列。

CM20140314与CM20140313相比,手法其实是一样的;只是之前的两个对称密码算法变化为哈希+对称密码算法的组合。

先玩个游戏,从界面的致谢名单来猜测一下各位参与的工作:
Kido应该是再次完成了加壳封装部分;
终于看到了L4Nce的乱序代码,虽然比较简单,但不失为很好的开始,希望能够坚持。那些带VM的商业产品如果没有乱序和膨胀,分分钟就会被人搞定。曾看过Nooby早期一篇这方面的文档,很有意思;
我是用户对算法比较熟,那个对称密码算法应该是在某标准算法的基础上进行的修改。
蒙得对不对,还请各位大人指教!玩逆向可以多一些连蒙带猜,有时可节省不少时间。

哈希算法这次直接用了API,在每一次哈希计算时按以下顺序调用函数:
[Asm] 纯文本查看 复制代码
advapi32.CryptAcquireContextA
advapi32.CryptCreateHash
advapi32.CryptHashData
advapi32.CryptGetHashParam
advapi32.CryptDestroyHash
advapi32.CryptReleaseContext

只用到了ALG_ID=CALG_MD2,即只计算MD2 Hash。主要用在:
  • 序列号:先由硬盘信息计算出一个32位的Hash值,然后再计算它的MD2,得到序列号,显示给用户,并用于解密。
  • 用户名哈希:将输入的用户名计算一个MD2,后面用作比较。
  • 文件校验值的哈希:先计算原执行文件前0x0004A4AB字节的CRC32,转换为字符串"653359BB",计算MD2,用于解密。如果已脱壳,需要Patch这个CRC32。
  • 原执行文件末尾有个字符串"1BCB4B",也计算了一个MD2。在004DE8D9处CALL 00405E3B将此MD2的字符串与文件校验值的MD2字符串进行比较,没搞明白是啥意思,感觉是忽悠,没管它。

下面简单说下注册算法。以下图为例:

用户名:MistHill
序列号:1A2C760693343C4C63F7B614E78EED70
注册码:AE48E3DA28AB50DFC0E4A4E552F806CCA47E756323107BF1154D2E538432F9DA

  • 这里序列号就是硬件信息的哈希:1A2C760693343C4C63F7B614E78EED70。
  • 文件校验值"653359BB"的哈希:c87fbc6084bc9715c5ffca0f879936c6。
  • 两者作strcat,CRC_Hash + HWID_Hash:c87fbc6084bc9715c5ffca0f879936c61A2C760693343C4C63F7B614E78EED70。(请注意字符的大小写!)
  • 用3.作为Key去解密输入的注册码。
  • 用户名"MistHill"的哈希:6f92e73c9bc964301e9299789b692400。
  • 将解密结果与用户名哈希作比较,若匹配则注册成功!

解密的地方在004B626C处:
[Asm] 纯文本查看 复制代码
...
004B626A   CC                  INT3
004B626B   CC                  INT3
004B626C   E8 7C04F5FF         CALL    004066ED
stack:
   0012F6BC   0012F6DC
      0012F6DC  0016FAC8  ASCII "AE48E3DA28AB50DFC0E4A4E552F806CCA47E756323107BF1154D2E538432F9DA"
   0012F6C0   0012F6E0
      0012F6E0  0016F618  ASCII "c87fbc6084bc9715c5ffca0f879936c61A2C760693343C4C63F7B614E78EED70"
   0012F6C4   00000001
004B6271   E9 03E10000         JMP     004C4379
004B6276   CC                  INT3
004B6277   CC                  INT3
...
004C4377   CC                  INT3
004C4378   CC                  INT3
004C4379   8945 D4             MOV     DWORD PTR [EBP-0x2C], EAX
   0012F6D8   001BAC48  ASCII "6f92e73c9bc964301e9299789b692400"
004C437C   E9 F0B7FFFF         JMP     004BFB71
004C4381   CC                  INT3
004C4382   CC                  INT3
...

你会注意到前后那些CC中孤立的两条指令CALL和JMP,这就是乱序搞的鬼。用[0012F6E0]去解密[0012F6DC],正确的解密结果返回在EAX,应该是一个ASCII字符串!
比较的地方在004B2A19处:
[Asm] 纯文本查看 复制代码
...
004B2A17   CC                  INT3
004B2A18   CC                  INT3
004B2A19   E8 1D34F5FF         CALL    00405E3B
stack:
   0012F6C0   001BAC48  ASCII "6f92e73c9bc964301e9299789b692400"
   0012F6C4   001BAD18  ASCII "6f92e73c9bc964301e9299789b692400"
004B2A1E   E9 07DE0000         JMP     004C082A
004B2A23   CC                  INT3
004B2A24   CC                  INT3
...

栈上是两个要比较的字符串。这是注册码正确的情形,否则栈[0012F6C0]的指针不为字符串。
爆破点也选在这里!这个CM有点小问题:不检查用户名和注册码是否为空!你可以试试,在004B2A19处下个断点,F9,什么都不用输入,直接点“注 册”按钮,断下后Patch调用00405E3B的返回值为0,它会显示“注册成功”。

解密算法是个啥,没仔细看。感觉是在RC4的基础上改的,先将CRC_Hash+HWID_Hash复制4次,凑足0x100的长度(0x40 * 4),然后用它去初始化state[256],这点和RC4非常相象。最后解密注册码。
活动结束后请哪位大牛解释一下,让咱也学习学习!

注册机和源码就暂时不发了。也发不了,呵呵,还没写好呢!不过大家动作要快喔,不要让我抢先了!

说过免费提供注册码,有正确的东西分析起来方便一点:只要你给我用户名和序列号,我保证给出有效注册码!我现在是用Peace送给我的注册机{:1_912:} 。不应该哟,我并不领情!

先写这些吧,一个快餐文化充斥的社会,讲究速战速决。你要给他一份法式大餐让他悠闲地坐在那里慢慢品尝、享受,他反而不习惯。

怎么利用CM自身进行Keygen,请参阅我的前一篇帖子《【吾爱破解六周年小玩具-大叔的草莓】题解》,里面有提示!

19/03/2014 编辑
放出命令行的注册机。用法:
[Plain Text] 纯文本查看 复制代码
Keygen.exe 用户名 序列号


前面说过,那个加密/解密算法是修改过的RC4!这个比较坑爹。
找了个E的RC4模块来看了看,其将Password扩展为Key的部分和CM是一样的(不推荐,容易让人糊涂!),但KSA和PRGA仍然符合规范,与标准RC4的输出结果一致。
但这个CM的KSA和PRGA都被修改了。
如果是故意的,可以理解,意在增加Keygen的难度。因为RC4的算法很简单,可以容易地发现其区别。
如果不是有意的,那就…………。话就难听了,此处删掉数句——恕我直言!

注册机源码就不放出了,不规范的东西不应模仿!

本帖子中包含更多资源

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

x

免费评分

参与人数 2热心值 +2 收起 理由
610100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
No_what_can't + 1 大牛 求带超神

查看全部评分

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

w254800370 发表于 2014-3-18 10:03
膜拜大牛,抢先吃到草霉。
H2o 发表于 2014-3-18 10:04
monicappp 发表于 2014-3-18 10:13
吾爱-路人甲 发表于 2014-3-18 10:13
分析的太好了。大神呀
 楼主| MistHill 发表于 2014-3-19 17:56
注册机已上传。
a070458 发表于 2014-3-19 20:17
看完LZ的文章 对RC4有了一定的了解了{:1_931:}
感谢楼主
xjun 发表于 2014-3-19 20:23
看完LZ文章,学习到了很多经验。感谢!
浮夸的科比 发表于 2014-3-28 12:43
谢谢分享,楼主辛苦
anchsss 发表于 2014-3-28 16:09
谢谢楼主分享!!!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 21:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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