首页
社区
课程
招聘
[旧帖] [原创]大菜一号Crack Me算法分析 0.00雪花
发表于: 2007-7-14 23:43 5602

[旧帖] [原创]大菜一号Crack Me算法分析 0.00雪花

2007-7-14 23:43
5602
【破文标题】大菜一号Crack Me算法分析
【破文作者】小子贼野(MayDay)
【作者主页】http://mayday.unpack.cn
【破解工具】OD
【破解平台】纯D版XPsp2
【软件名称】CrAkME
【软件大小】11.7KB
【原版下载】见附件
【保护方式】用户名+序列号
【软件简介】一个Crack Me
【破解声明】初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
------------------------------------------------------------------------

感谢大菜一号提供了这么好的Crack Me,感谢他对我的帮助

00401062   > \66:83BC24 6C0>CMP WORD PTR SS:[ESP+16C],1              ;  案例 111 (WM_COMMAND) --> 分支 0040103A
0040106B   .  0F85 B5010000 JNZ CrAckME.00401226
00401071   .  B9 08000000   MOV ECX,8                                ;  在这下断
00401076   .  BE 78604000   MOV ESI,CrAckME.00406078                 ;  密码表
0040107B   .  8D7C24 74     LEA EDI,DWORD PTR SS:[ESP+74]
0040107F   .  33C0          XOR EAX,EAX
00401081   .  F3:A5         REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
00401083   .  A4            MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
00401084   .  B9 19000000   MOV ECX,19
00401089   .  8DBC24 FC0000>LEA EDI,DWORD PTR SS:[ESP+FC]
00401090   .  F3:AB         REP STOS DWORD PTR ES:[EDI]
00401092   .  B9 19000000   MOV ECX,19
00401097   .  8D7C24 10     LEA EDI,DWORD PTR SS:[ESP+10]
0040109B   .  8BAC24 640100>MOV EBP,DWORD PTR SS:[ESP+164]
004010A2   .  8B1D 9C504000 MOV EBX,DWORD PTR DS:[<&USER32.GetDlgIte>;  USER32.GetDlgItemTextA
004010A8   .  F3:AB         REP STOS DWORD PTR ES:[EDI]
004010AA   .  B9 19000000   MOV ECX,19
004010AF   .  8DBC24 980000>LEA EDI,DWORD PTR SS:[ESP+98]            ;  密码表给EDI
004010B6   .  F3:AB         REP STOS DWORD PTR ES:[EDI]
004010B8   .  8D4424 10     LEA EAX,DWORD PTR SS:[ESP+10]            ;  分别给EAX和ECX清零
004010BC   .  6A FF         PUSH -1                                  ; /Count = FFFFFFFF (-1.)
004010BE   .  50            PUSH EAX                                 ; |Buffer
004010BF   .  68 E8030000   PUSH 3E8                                 ; |ControlID = 3E8 (1000.)
004010C4   .  55            PUSH EBP                                 ; |hWnd
004010C5   .  33F6          XOR ESI,ESI                              ; |ESI=0
004010C7   .  FFD3          CALL EBX                                 ; \GetDlgItemTextA
004010C9   .  8D7C24 10     LEA EDI,DWORD PTR SS:[ESP+10]            ;  获取用户名的位数
004010CD   .  83C9 FF       OR ECX,FFFFFFFF
004010D0   .  33C0          XOR EAX,EAX
004010D2   .  F2:AE         REPNE SCAS BYTE PTR ES:[EDI]
004010D4   .  F7D1          NOT ECX
004010D6   .  49            DEC ECX
004010D7   .  83F9 08       CMP ECX,8
004010DA   .  75 35         JNZ SHORT CrAckME.00401111               ;  不是8就挂了
004010DC   .  8D8C24 980000>LEA ECX,DWORD PTR SS:[ESP+98]
004010E3   .  6A FF         PUSH -1                                  ; /Count = FFFFFFFF (-1.)
004010E5   .  51            PUSH ECX                                 ; |ECX=12F9BC
004010E6   .  68 E9030000   PUSH 3E9                                 ; |ControlID = 3E9 (1001.)
004010EB   .  55            PUSH EBP                                 ; |hWnd
004010EC   .  FFD3          CALL EBX                                 ; \GetDlgItemTextA
004010EE   .  8DBC24 980000>LEA EDI,DWORD PTR SS:[ESP+98]            ;  假码位数
004010F5   .  83C9 FF       OR ECX,FFFFFFFF
004010F8   .  33C0          XOR EAX,EAX
004010FA   .  F2:AE         REPNE SCAS BYTE PTR ES:[EDI]
004010FC   .  F7D1          NOT ECX
004010FE   .  49            DEC ECX
004010FF   .  8D7C24 10     LEA EDI,DWORD PTR SS:[ESP+10]
00401103   .  8BD1          MOV EDX,ECX
00401105   .  83C9 FF       OR ECX,FFFFFFFF
00401108   .  F2:AE         REPNE SCAS BYTE PTR ES:[EDI]
0040110A   .  F7D1          NOT ECX
0040110C   .  49            DEC ECX
0040110D   .  3BD1          CMP EDX,ECX                              ;  比较ECX,EDX,相等就GO
0040110F   .  74 23         JE SHORT CrAckME.00401134
00401111   >  6A 30         PUSH 30                                  ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
00401113   .  68 6C604000   PUSH CrAckME.0040606C                    ; |Sorry..!
00401118   .  68 54604000   PUSH CrAckME.00406054                    ; |不对不对,再加油!^o^
0040111D   .  55            PUSH EBP                                 ; |hOwner
0040111E   .  FF15 A0504000 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
00401124   .  5F            POP EDI
00401125   .  5E            POP ESI
00401126   .  5D            POP EBP
00401127   .  B8 01000000   MOV EAX,1
0040112C   .  5B            POP EBX
0040112D   .  81C4 50010000 ADD ESP,150
00401133   .  C3            RETN
00401134   >  8A4434 10     MOV AL,BYTE PTR SS:[ESP+ESI+10]
00401138   .  8B3D A0504000 MOV EDI,DWORD PTR DS:[<&USER32.MessageBo>;  USER32.MessageBoxA
0040113E   .  3C 30         CMP AL,30
00401140   .  7C 0C         JL SHORT CrAckME.0040114E
00401142   .  3C 7D         CMP AL,7D
00401144   .  7F 08         JG SHORT CrAckME.0040114E
00401146   .  46            INC ESI
00401147   .  83FE 08       CMP ESI,8
0040114A   .^ 7C E8         JL SHORT CrAckME.00401134                ;  用户名的ascii不能大于7D而且不能小于30
0040114C   .  EB 0F         JMP SHORT CrAckME.0040115D
0040114E   >  6A 30         PUSH 30
00401150   .  68 6C604000   PUSH CrAckME.0040606C                    ;  Sorry..!
00401155   .  68 54604000   PUSH CrAckME.00406054                    ;  不对不对,再加油!^o^
0040115A   .  55            PUSH EBP
0040115B   .  FFD7          CALL EDI
0040115D   >  33C9          XOR ECX,ECX                              ;  ECX=0
0040115F   >  0FBE440C 10   MOVSX EAX,BYTE PTR SS:[ESP+ECX+10]       ;  ESP+ECX+10的内存地址=用户名的ascii,EAX=用户名最后一位的ascii
00401164   .  99            CDQ
00401165   .  BE 30000000   MOV ESI,30                               ;  ESI=30
0040116A   .  F7FE          IDIV ESI                                 ;  除以30,所得的商放在eax,余数放在edx
0040116C   .  41            INC ECX                                  ;  ECX+1,指向下一位注册码,同时循环计数器加一
0040116D   .  83F9 08       CMP ECX,8                                ;  比较是否循环完8次
00401170   .  8A4414 74     MOV AL,BYTE PTR SS:[ESP+EDX+74]          ;  ESP+EDX+74的内存地址指向的位置就是注册码的第一位
00401174   .  88840C FB0000>MOV BYTE PTR SS:[ESP+ECX+FB],AL
0040117B   .^ 7C E2         JL SHORT CrAckME.0040115F                ;  没循环完就跳上去
0040117D   .  8DB424 980000>LEA ESI,DWORD PTR SS:[ESP+98]            ;  假码
00401184   .  8D8424 FC0000>LEA EAX,DWORD PTR SS:[ESP+FC]            ;  真码
0040118B   >  8A10          MOV DL,BYTE PTR DS:[EAX]                 ;  可做内存注册机

看到各位大大们经常在最后都会写个算法总结,我也模仿模仿

这个的算法,其实就是首先设置一个密码表,然后通过一个循环,让内存地址的指针指向密码表的

某个位置,所指的字符就是注册码(当时有点感觉是指针,结果朋友说用数组也行,没办法,谁让

我菜 ),还有就是用户名和注册码必须是8位,不然就挂了,用户名必须是数字和字母,总

结的比较乱,这个是第二个算法分析,还不大会写,如果有什么不妥,还请大家多多指出,我以后

会加以改正

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 215
活跃值: (85)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
顶一个先啦,小子~,学习了~
2007-7-14 23:46
0
雪    币: 2181
活跃值: (94)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
你的第一个精华诞生了
2007-7-14 23:46
0
雪    币: 623
活跃值: (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
支持! 进步不少!
2007-7-14 23:47
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
5
支持一个
2007-7-14 23:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我也来支持一个 呵呵
2007-7-14 23:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
从我菜起~~
2007-7-14 23:53
0
雪    币: 264
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
精华啊。。顶
2007-7-14 23:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
呵呵,支持,等哪天俺会了,俺也写一个
2007-7-14 23:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
#include<iostream>
using namespace std;

void main()
{
        int i,j,p,len;
        char temp[8],tmp[40]="Q!W@E#$%RT^Y&U*()POI_+|-=\\ZXCV~!",name[8];
        cout<<"请输入用户名:"<<endl;
        cin>>name;
        len=strlen(name);
        for (i=0; i<len; i++)
        {
                p=name[i]%0x30;
                temp[i]=tmp

;
        }
        for (j=0; j<8; j++)
          cout<<temp[j];
        cout<<endl;
}

我这里写了个注册机   
给大家分享一下把  呵呵
记得用户名要用8为啊  
我这里就没有去判断啊 呵呵

2007-7-15 01:04
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
11
顶``

2007-7-15 11:58
0
雪    币: 347
活跃值: (30)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
12
如此多的大大都来支持我,真是受宠若惊啊
2007-7-15 13:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
看标题还以为楼主是大菜一号呢……呵呵谢了
2007-7-15 14:01
0
雪    币: 347
活跃值: (30)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
14
看到这样的回贴,真的不知道该怎样说了
2007-7-15 14:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
学习学习再学习
2007-7-16 00:16
0
游客
登录 | 注册 方可回帖
返回
//