好友
阅读权限40
听众
最后登录1970-1-1
|
cyane
发表于 2012-5-16 21:28
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。
本帖最后由 cyane 于 2012-5-16 21:34 编辑
Crackme大赛刚刚颁奖了,先恭喜有礼品的人了,同时也看了几位不错的MM,哈哈,说正题吧。
看到 零度x 朋友说这个有难度,就来尝试了下,就有了这篇东西,我这人懒,少写点,说关键的啦。
在OD<调试选项>-<事件>中勾选下面两项
中断于新DLL
中断于新线程
运行crackme,然后附加进程,然后F9跑起来
输入用户名和注册码后,点击确定
程序自动断在下面的地址
7C8106F9 33ED XOR EBP,EBP
7C8106FB 53 PUSH EBX
7C8106FC 50 PUSH EAX
7C8106FD 6A 00 PUSH 0x0
7C8106FF ^ E9 EEAFFFFF JMP 7C80B6F2
.......
7C80B6F2 6A 10 PUSH 0x10
7C80B6F4 68 30B7807C PUSH 0x7C80B730
7C80B6F9 E8 D86DFFFF CALL 7C8024D6
7C80B6FE 8365 FC 00 AND DWORD PTR SS:[EBP-0x4],0x0
7C80B702 64:A1 18000000 MOV EAX,DWORD PTR FS:[0x18]
7C80B708 8945 E0 MOV DWORD PTR SS:[EBP-0x20],EAX
7C80B70B 8178 10 001E000>CMP DWORD PTR DS:[EAX+0x10],0x1E00
7C80B712 75 0F JNZ SHORT 7C80B723
7C80B714 803D 0850887C 0>CMP BYTE PTR DS:[0x7C885008],0x0
7C80B71B 75 06 JNZ SHORT 7C80B723
7C80B71D FF15 F812807C CALL DWORD PTR DS:[0x7C8012F8] 关键CALL 跟入
7C80B723 FF75 0C PUSH DWORD PTR SS:[EBP+0xC]
7C80B726 FF55 08 CALL DWORD PTR SS:[EBP+0x8]
7C80B729 50 PUSH EAX
7C80B72A E8 C9090000 CALL 7C80C0F8
F7跟入关键CALL后,来到下面地址
00401090 55 PUSH EBP
......................中间的省略了,我反正是没大看............................
004010E6 8955 08 MOV DWORD PTR SS:[EBP+0x8],EDX
004010E9 813D E4CD4000 2>CMP DWORD PTR DS:[0x40CDE4],0x1215132C 关键比较
004010F3 74 04 JE SHORT 004010F9
004010F5 33C0 XOR EAX,EAX
004010F7 EB 6E JMP SHORT 00401167
主要来讲讲004010E9处的比较吧,这里比较关键
当改变注册码时,在注册码小于8位时,.data[0x40CDE4]总返回0x66666666,当注册码位数大于8位时,.data[0x40CDE4]的
数据就开始改变,例如注册码是111111111时,.data[0x40CDE4]显示的是0x57575757,就是这样的,但是和ASCII表并不一
一对应,试了试就看到所有的对应了,况且作者还提供了一组注册码,哈哈,节省时间了。所以004010E9比较的数据其实就是"Just”,剩下的字符随便输入了,就可以注册成功了。
用户名: cyane (用户名和注册没关系)
注册码: Justxxxxx (x为任意字符)
*刚看到AloneWolf兄早就搞定了,呵呵,算了,这篇不删了,那篇讲解的更详细!
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|