PYG 5.4 Cracker 小组 课外练习14
练手Crackme要求以下:+++++++++++++++++++
0)脱壳
1)爆破
2)追码
3)内存注册机(可行就选做)
4)算法分析(选做)
练习的目的只在于巩固学习成果.
希望大家积极相互交流相.互讨论.
++++++++++++++++++++++++
猫的话:
通过我们Crackme的练手很多朋友真的进步好快!
印象中阿地就是其一.
[ 本帖最后由 野猫III 于 2006-5-26 15:30 编辑 ] 新鲜啊练习下 原帖由 vacant 于 2006-5-26 16:58 发表
新鲜啊练习下
好棒,支持! 没有人写算法分析啊??
菜鸟学算法,还有好多不会!
手动脱壳:用peid查壳是:PEDiminisher 0.1 -> Teraphy,f8单步到
00401368 55 push ebp 脱壳!
用peid查是:Microsoft Visual C++ 6.0,可以运行!
******输入--reg name:MINGBIN --REG KEY:789789789 --点击REGISTER出错提示:registration fail!******
od载入:
Ultra 字符串参考,项目 2
地址=00401095
反汇编=push Crackme1.00405050
文本字符串=Registration fail.
爆破点:
00401072 /74 1B jne short Crackme1.0040108F 改为jz 就可以随便注册了!
追码过程:
00401062 /75 42 jnz short unCrackm.004010A6
00401064 |E8 C7010000 call unCrackm.00401230 ; 关键,跟入
00401069 |85C0 test eax,eax
0040106B |6A 00 push 0
0040106D |68 80504000 push unCrackm.00405080 ; ASCII "ncrackme"
00401072 |75 1B jnz short unCrackm.0040108F
*********************************call unCrackm.00401230***************************************
00401230 8B0D BC564000 mov ecx,dword ptr ds:
00401236 83EC 30 sub esp,30
00401239 8D4424 00 lea eax,dword ptr ss:
0040123D 53 push ebx
0040123E 56 push esi
0040123F 8B35 94404000 mov esi,dword ptr ds:[<&USER32.GetDlg>; USER32.GetDlgItemTextA
00401245 6A 10 push 10
00401247 50 push eax
00401248 68 E8030000 push 3E8
0040124D 51 push ecx
0040124E 33DB xor ebx,ebx
00401250 FFD6 call esi ; 用户名的call
00401252 83F8 03 cmp eax,3 ; eax=7与3比较:用户名要大于3位
00401255 73 0B jnb short unCrackm.00401262 ; 大于或等于转移
00401257 5E pop esi
00401258 B8 01000000 mov eax,1
0040125D 5B pop ebx
0040125E 83C4 30 add esp,30
00401261 C3 retn
00401262 A1 BC564000 mov eax,dword ptr ds: ; eax=7
00401267 8D5424 28 lea edx,dword ptr ss:
0040126B 6A 10 push 10
0040126D 52 push edx
0040126E 68 E9030000 push 3E9
00401273 50 push eax
00401274 FFD6 call esi ; 用户名的call
00401276 0FBE4424 08 movsx eax,byte ptr ss: ; 取用户名第一位ascii eax=4d
0040127B 0FBE4C24 09 movsx ecx,byte ptr ss: ; 取第二位ascii ecx=49
00401280 99 cdq ; 双字扩展
00401281 F7F9 idiv ecx ; 有符号除法ecx=49
00401283 8BCA mov ecx,edx ; edx送到ecx=4
00401285 83C8 FF or eax,FFFFFFFF
00401288 0FBE5424 0A movsx edx,byte ptr ss: ; 取第三位ascii edx=4e
0040128D 0FAFCA imul ecx,edx ; ecx=4e*4=138
00401290 41 inc ecx ; ecx=1=139
00401291 33D2 xor edx,edx ; edx清0
00401293 F7F1 div ecx ; 除ecx=139
00401295 50 push eax ; eax=00D16154入栈
00401296 E8 A5000000 call unCrackm.00401340
0040129B 83C4 04 add esp,4
0040129E 33F6 xor esi,esi
004012A0 E8 A5000000 call unCrackm.0040134A ; 以下循环可能是15位注册码的形成
004012A5 99 cdq
004012A6 B9 1A000000 mov ecx,1A ; ecx=1a(26)
004012AB F7F9 idiv ecx ; 除1a
004012AD 80C2 41 add dl,41 ; DL=DL+4F=E+4F=O以下值就是这样算出来的
004012B0 885434 18 mov byte ptr ss:,dl ; 0,A,L,B,K,H,D, V,T,D,U,I,C,I,J
004012B4 46 inc esi ; esi加1
004012B5 83FE 0F cmp esi,0F ; esi是否为15
004012B8^ 72 E6 jb short unCrackm.004012A0 ; 小于循环,比较完了向下继续运行
004012BA 57 push edi ; edi=0012FB70入栈
004012BB 8D7C24 0C lea edi,dword ptr ss:
004012BF 83C9 FF or ecx,FFFFFFFF
004012C2 33C0 xor eax,eax
004012C4 33F6 xor esi,esi
004012C6 F2:AE repne scas byte ptr es: ; 串扫描,不等返回
004012C8 F7D1 not ecx
004012CA 49 dec ecx
004012CB 74 59 je short unCrackm.00401326
004012CD 8A4434 0C mov al,byte ptr ss: ; 以下是前七位注册码的验证
004012D1 C0F8 05 sar al,5
004012D4 0FBEC0 movsx eax,al
004012D7 8D1480 lea edx,dword ptr ds:
004012DA 8D04D0 lea eax,dword ptr ds:
004012DD 8D0440 lea eax,dword ptr ds:
004012E0 85C0 test eax,eax
004012E2 7E 0A jle short unCrackm.004012EE
004012E4 8BF8 mov edi,eax
004012E6 E8 5F000000 call unCrackm.0040134A
004012EB 4F dec edi
004012EC^ 75 F8 jnz short unCrackm.004012E6
004012EE E8 57000000 call unCrackm.0040134A
004012F3 99 cdq
004012F4 B9 1A000000 mov ecx,1A ; ecx=7
004012F9 8D7C24 0C lea edi,dword ptr ss:
004012FD F7F9 idiv ecx
004012FF 0FBE4C34 2C movsx ecx,byte ptr ss:
00401304 80C2 41 add dl,41 ; DI=DI+41=45=E以下的就是这样算出来的
00401307 0FBEC2 movsx eax,dl ; E,P,N,I,C,S,U
0040130A 2BC1 sub eax,ecx
0040130C 885434 1C mov byte ptr ss:,dl ; O,A,L,B,K,H,D
(前面算出来的前七位与用户的位数有关,我的是七位)
00401310 99 cdq
00401311 33C2 xor eax,edx
00401313 83C9 FF or ecx,FFFFFFFF
00401316 2BC2 sub eax,edx
00401318 03D8 add ebx,eax
0040131A 33C0 xor eax,eax
0040131C 46 inc esi
0040131D F2:AE repne scas byte ptr es:
0040131F F7D1 not ecx
00401321 49 dec ecx
00401322 3BF1 cmp esi,ecx
00401324^ 72 A7 jb short unCrackm.004012CD 多谢分享,下载学习
页:
[1]