吾爱破解160个crackme之005

来源:互联网 发布:知其所以然技术论坛 编辑:程序博客网 时间:2024/05/01 03:53

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

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

查看其他的过程函数Timer2Timer

004473E4   53                     push    ebx004473E5   8BD8                   mov     ebx, eax004473E7   81BB04030000340C0000   cmp     dword ptr [ebx+$0304], $00000C34004473F1   0F8488000000           jz      0044747F004473F7   81BB080300000D230000   cmp     dword ptr [ebx+$0308], $0000230D00447401   747C                   jz      0044747F00447403   81BB10030000940F0000   cmp     dword ptr [ebx+$0310], $00000F940044740D   7570                   jnz     0044747F0044740F   8B8318030000           mov     eax, [ebx+$0318]00447415   3B8314030000           cmp     eax, [ebx+$0314]0044741B   7562                   jnz     0044747F0044741D   81BB1C030000E7030000   cmp     dword ptr [ebx+$031C], $000003E700447427   7456                   jz      0044747F00447429   33D2                   xor     edx, edx0044742B   8B83D8020000           mov     eax, [ebx+$02D8]00447431   8B08                   mov     ecx, [eax]00447433   FF515C                 call    dword ptr [ecx+$5C]00447436   33D2                   xor     edx, edx00447438   8B83DC020000           mov     eax, [ebx+$02DC]0044743E   8B08                   mov     ecx, [eax]00447440   FF515C                 call    dword ptr [ecx+$5C]00447443   33D2                   xor     edx, edx00447445   8B83E0020000           mov     eax, [ebx+$02E0]0044744B   8B08                   mov     ecx, [eax]0044744D   FF515C                 call    dword ptr [ecx+$5C]00447450   33D2                   xor     edx, edx00447452   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, +$7000447465   BA8C744400             mov     edx, $0044748C

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

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

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

00447378    55              push ebp00447379    8BEC            mov ebp,esp0044737B    53              push ebx0044737C    56              push esi0044737D    8BD9            mov ebx,ecx0044737F    8BF0            mov esi,eax00447381    6A 00           push 0x000447383    66:8B0D B473440>mov cx,word ptr ds:[0x4473B4]0044738A    B2 02           mov dl,0x20044738C    B8 C0734400     mov eax,dumped_.004473C0                 ; 注册尚未成功,同志仍需努力!  8)00447391    E8 FEE2FFFF     call dumped_.0044569400447396    84DB            test bl,bl00447398    75 07           jnz short dumped_.004473A10044739A    8386 18030000 0>add dword ptr ds:[esi+0x318],0x7004473A1    80FB 01         cmp bl,0x1004473A4    75 07           jnz short dumped_.004473AD004473A6    8386 18030000 1>add dword ptr ds:[esi+0x318],0x1B004473AD    5E              pop esi004473AE    5B              pop ebx004473AF    5D              pop ebp004473B0    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,,佩服大大的思想。。