首页
社区
课程
招聘
[原创]vcrkme01算法分析
发表于: 2006-3-25 15:38 7130

[原创]vcrkme01算法分析

2006-3-25 15:38
7130

关于vcrkme01的算法分析


程序:vcrkme01


作者:[v0!d] 我入行时间短不知道是否是他,如果有错误还请见谅


以下是作者的文档资料:


[v0!d] - Crackme v0.01 :


~~~~~~~~~~~~~~~~~~~~~~~~


[This crack me is totally written for newbiez]



RuleZ :


~~~~~~~



1. Patching is not allwoed, cuz it is 2 easy to crack ...


2. Find a correct code for ur name...


3. Code a keygen, write a tut, then send it to me...



that's it!



P.S : to all advanced crackers plz don't try to crack this


cuz u will really be wasting ur time !!! :P



send ur solution to : v0id2k1@hotmail.com


cya


[v0!d]


工具:这次工具很简单的,就是一个OD,作者说得很清楚了, Patching is not allwoed,呵呵


说明:近来对算法有点兴趣了,今天又做了一个。不过例子是来自《加密解密实战》,只是算法和调试是我自己独立完成的。呵呵,主要是上次的那个精给了我很大的动力,我喜欢显摆,呵呵,不要见笑拉。有错的还望指出,在此先谢过!


感谢:CCDebuger的OD教程和小敏给我传的ASCII速查手册。



首先还是先运行


输入注册名:rockandtcl


注册码:123456


没有提示居然???


只好启动OD


载入后搜索所有的参看文本,找到GOOD JOB,双击进入


0040124D     .  68 306A4000       push vcrkme01.00406A30


00401252     .  68 30694000        push vcrkme01.00406930


00401257     .  E8 A4FDFFFF        call vcrkme01.00401000   


关键的CALL,设断


0040125C     .  83C4 08            add esp,8


0040125F     .  83F8 01            cmp eax,1


00401262     .  A3 646C4000        mov dword ptr ds:[406C64],eax


00401267     .  75 65              jnz short vcrkme01.004012CE


00401269     .  8B15 28694000      mov edx,dword ptr ds:[406928]


0040126F     .  6A 40              push 40                           


                           


                    ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL


00401271     .  68 80604000      push vcrkme01.00406080            


                     ; |Title = "GOOD JOB! - CRACKED!"


00401276     .  68 50604000      push vcrkme01.00406050            


                           


           ; |Text = "Send your solution to : v0id2k1@hotmail.com "


0040127B     .  52               push edx                           


                              ; |hOwner => NULL


0040127C     .  FF15 C4504000   call dword ptr ds[<&USER32.Message>;


\MessageBoxA



重新栽入:


点check后程序在


00401257     .  E8 A4FDFFFF      call vcrkme01.00401000  


被断了下来,按F8进入


00401000    /$  53               push ebx


00401001  |.  8B5C24 0C   mov ebx,dword ptr ss:[esp+C]  ;vcrkme01.00406A30


装入假的注册号


00401005    |.  55               push ebp


00401006    |.  56               push esi


00401007    |.  8B7424 10        mov esi,dword ptr ss:[esp+10]


装入注册名


0040100B    |.  8A0B             mov cl,byte ptr ds:[ebx]


取注册号第一位


0040100D    |.  33ED             xor ebp,ebp


0040100F    |.  57               push edi


00401010    |.  8A06             mov al,byte ptr ds:[esi]


取注册名第一位


00401012    |.  3AC1             cmp al,cl


00401014    |.  0F85 69010000    jnz vcrkme01.00401183


比较,不相等则结束


0040101A    |.  8BFE             mov edi,esi


把注册名放在[EDI]首地址中


0040101C    |.  83C9 FF          or ecx,FFFFFFFF


对ECX赋值:FFFFFFFF


0040101F    |.  33C0             xor eax,eax


EAX 清零


00401021    |.  F2:AE            repne scas byte ptr es:[edi]


00401023    |.  F7D1             not ecx


00401025    |.  49               dec ecx


得到注册名的位数


00401026    |.  83F9 05          cmp ecx,5


小于5则死


00401029    |.  0F82 54010000    jb vcrkme01.00401183


0040102F    |.  807B 01 2D       cmp byte ptr ds:[ebx+1],2D


00401033    |. /0F85 4A010000    jnz vcrkme01.00401183


比较注册码的第二位是否为2D就是‘-’否则就死



看来我们开始的注册码就不对


重新载入


注册名不变,注册码改为:r-1234


继续上面的地方开始


00401039    |.  8BFE             mov edi,esi


把注册名放入EDI的地址中


0040103B    |.  83C9 FF          or ecx,FFFFFFFF


0040103E    |.  33C0             xor eax,eax


00401040    |.  33D2             xor edx,edx


00401042    |.  F2:AE            repne scas byte ptr es:[edi]


00401044    |.  F7D1             not ecx


00401046    |.  49               dec ecx


以上还是计算注册名的位数


00401047    |.  74 17            je short vcrkme01.00401060


[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (4)
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
2
收藏,
多谢了
2006-3-25 17:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
crack me文件在里面吗?
2006-4-3 23:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
GOB 应该是0040127C处的call吧
2006-4-4 01:20
0
雪    币: 222
活跃值: (100)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
最初由 南海姑娘 发布
GOB 应该是0040127C处的call吧

实际上那个CALL是调用API函数用的,也就是说只有出现正确的结果的时候调用。
我们是找算法就要找到算法的那个CALL,我是个菜鸟。很多时候设置断点都不是很正规。其实断点在我看来只是个方便我们分析用的。所以断点不一定非得怎么样才可以。
至于你说的那个断点是无法找到正确的算法的。因为那个CALL不是调用算法的CALL,也就是非关键的CALL。我是个菜鸟,有错误还望指出。谢谢

CRACKME在压缩包里。 忘记说了。
2006-4-4 12:48
0
游客
登录 | 注册 方可回帖
返回