吾爱破解160个crackme之005

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011027286/article/details/77345364

题目只做到了爆破这一层,注册流程比较麻烦,跟了一阵子没有头绪就放弃了,不想熬夜- -,大家可以看看吾爱论坛的帖子参考一下。
爆破来说还是比较简单的,拿到程序,运行了一下发现代码不太对劲,应该是被加壳了的,用peid一查,发现时upx的壳,脱掉还是比较简单的,之后拿到正常运行的程序运行,同时拿到dede下面分析:
发现1:
button注册的函数只有两行,可以判断出这个函数没有什么用。不是关键点:

004474C0   C7801C030000E7030000   mov     dword ptr [eax+$031C], $000003E7
004474CA   C3                     ret

查看其他的过程函数Timer2Timer

004473E4   53                     push    ebx
004473E5   8BD8                   mov     ebx, eax
004473E7   81BB04030000340C0000   cmp     dword ptr [ebx+$0304], $00000C34
004473F1   0F8488000000           jz      0044747F
004473F7   81BB080300000D230000   cmp     dword ptr [ebx+$0308], $0000230D
00447401   747C                   jz      0044747F
00447403   81BB10030000940F0000   cmp     dword ptr [ebx+$0310], $00000F94
0044740D   7570                   jnz     0044747F
0044740F   8B8318030000           mov     eax, [ebx+$0318]
00447415   3B8314030000           cmp     eax, [ebx+$0314]
0044741B   7562                   jnz     0044747F
0044741D   81BB1C030000E7030000   cmp     dword ptr [ebx+$031C], $000003E7
00447427   7456                   jz      0044747F
00447429   33D2                   xor     edx, edx
0044742B   8B83D8020000           mov     eax, [ebx+$02D8]
00447431   8B08                   mov     ecx, [eax]
00447433   FF515C                 call    dword ptr [ecx+$5C]
00447436   33D2                   xor     edx, edx
00447438   8B83DC020000           mov     eax, [ebx+$02DC]
0044743E   8B08                   mov     ecx, [eax]
00447440   FF515C                 call    dword ptr [ecx+$5C]
00447443   33D2                   xor     edx, edx
00447445   8B83E0020000           mov     eax, [ebx+$02E0]
0044744B   8B08                   mov     ecx, [eax]
0044744D   FF515C                 call    dword ptr [ecx+$5C]
00447450   33D2                   xor     edx, edx
00447452   8B83E4020000           mov     eax, [ebx+$02E4]
00447458   8B08                   mov     ecx, [eax]
0044745A   FF515C                 call    dword ptr [ecx+$5C]
0044745D   A1A8984400             mov     eax, dword ptr [$004498A8]
00447462   83C070                 add     eax, +$70
00447465   BA8C744400             mov     edx, $0044748C

有很多的cmp和jmp函数,可以看出这个函数的作用应该是比较大的,用ollydbg跟一下看到如下字符:

00447465    BA 8C744400     mov edx,dumped_.0044748C                 ; 厉害厉害真厉害!佩服佩服真佩服!!
0044746A    E8 EDC4FBFF     call dumped_.0040395C
0044746F    BA B8744400     mov edx,dumped_.004474B8                 ; 注册了
00447474    8B83 EC020000   mov eax,dword ptr ds:[ebx+0x2EC]
0044747A    E8 3DCCFDFF     call dumped_.004240BC
0044747F    5B              pop ebx
00447480    C3              retn

可以判断这就是关键的判断函数,找到这里就很容易爆破这个程序了。我们往上观察其实是有4个image的mousedown函数的,然后都会提示注册没有成功,

00447378    55              push ebp
00447379    8BEC            mov ebp,esp
0044737B    53              push ebx
0044737C    56              push esi
0044737D    8BD9            mov ebx,ecx
0044737F    8BF0            mov esi,eax
00447381    6A 00           push 0x0
00447383    66:8B0D B473440>mov cx,word ptr ds:[0x4473B4]
0044738A    B2 02           mov dl,0x2
0044738C    B8 C0734400     mov eax,dumped_.004473C0                 ; 注册尚未成功,同志仍需努力!  8)
00447391    E8 FEE2FFFF     call dumped_.00445694
00447396    84DB            test bl,bl
00447398    75 07           jnz short dumped_.004473A1
0044739A    8386 18030000 0>add dword ptr ds:[esi+0x318],0x7
004473A1    80FB 01         cmp bl,0x1
004473A4    75 07           jnz short dumped_.004473AD
004473A6    8386 18030000 1>add dword ptr ds:[esi+0x318],0x1B
004473AD    5E              pop esi
004473AE    5B              pop ebx
004473AF    5D              pop ebp
004473B0    C2 0C00         retn 0xC

嗯,,,之后就这样,,,嗯,,
看一下注册流程好了:

第一步:新建一个路径为X:\ajj.126.c0m\j\o\j\o\ok.txt的文本文件,文件内容的二进制为
20 61 6A 6A D0 B4 B5 C4 43 4B 6D 65D5 E6 C0 C3 21 FF FF,给出二进制的原因主要是因为后面两个字符FF FF打文本打不出来,这句话的文本显示为“ajj写的CKme真烂!
这个文件的作用就是会在界面中多显示出一个输入框(下面记为Edit2),但是初始是禁用的,输不了东西。
第二步:打开程序,初始化完成之后,鼠标右键点击“注册”按钮5次。记住一定是鼠标右键,而且必须是点击5次,如果点错不要找我哦;
第三步:在显示图片的图片框中双击没有图片显示的地方;
这一步完成之后,输入框Edit2就可以输入内容了。
第四步:输入注册名和Edit2,。这两个输入的内容也是有要求的,注册名长度必须是3的倍数,Edit2输入的内容长度必须为8,且第2个字符为’_’,第6个字符为’,’。
我在跟踪的时候分别输入的”trisinker”和”1_345,78”
第五步:输入完成之后,双击Edit2;
第六步:在图片3(“性相近“)出现时,移动鼠标从界面的右下角外部进入程序界面;
第七步:在图片2(“性本善“)出现时,移动鼠标从界面的左下角外部进入程序界面;
第八步:在图片 4(“习相远“)出现时,鼠标左键点击1次图片4,右键点击8次图片4.
注意这是最后一步,可能每台机器的状况都不一样。请勿按照上面说的点击。
其实这一步中点击图片1(“人之初“),图片2、图片3、图片4哪些图片,鼠标左键和右键各点击多少次,这个是一个很复杂的算法。
决定点击方式的参数就是输入的两个字符串,以及程序所在磁盘的剩余磁盘空间,在第五步的双击Edit2时候会计算出一个值存储在ds:[ebx+0x30C]中,
根据这个值就可以知道如何点击图片。

以上引用https://www.52pojie.cn/thread-366291-1-1.html的帖子。
发现其实button注册是有用的哈- -,但是这个注册key,,佩服大大的思想。。

展开阅读全文

没有更多推荐了,返回首页