首页
社区
课程
招聘
[求助]帮助分析下这个crackme?
发表于: 2008-12-5 18:28 4687

[求助]帮助分析下这个crackme?

2008-12-5 18:28
4687
这个就是book1里面的那个chap601.exe
OD载入在错误提示来到:

................
0040D975   .  8D45 AC       lea     eax, dword ptr [ebp-54]
0040D978   .  50            push    eax
0040D979   .  FF15 F4F04000 call    dword ptr [<&MSVBVM50.__vbaStrVa>;  MSVBVM50.__vbaStrVarMove //取用户名到eax
0040D97F   .  8B1D 8CF14000 mov     ebx, dword ptr [<&MSVBVM50.__vba>;  MSVBVM50.__vbaStrMove
0040D985   .  8BD0          mov     edx, eax   
0040D987   .  8D4D D8       lea     ecx, dword ptr [ebp-28]
0040D98A   .  FFD3          call    ebx                              ;  <&MSVBVM50.__vbaStrMove> //用户名移到[ebp-28]
0040D98C   .  8D4D AC       lea     ecx, dword ptr [ebp-54]
0040D98F   .  8D55 BC       lea     edx, dword ptr [ebp-44] //用户名
0040D992   .  51            push    ecx
0040D993   .  52            push    edx
0040D994   .  6A 02         push    2
0040D996   .  FF15 FCF04000 call    dword ptr [<&MSVBVM50.__vbaFreeV>;  MSVBVM50.__vbaFreeVarList
0040D99C   .  8B45 D8       mov     eax, dword ptr [ebp-28] //用户名
0040D99F   .  83C4 0C       add     esp, 0C
0040D9A2   .  50            push    eax                              ; /String
0040D9A3   .  FF15 F8F04000 call    dword ptr [<&MSVBVM50.__vbaLenBs>; \__vbaLenBstr ,得到文本长度
0040D9A9   .  8BC8          mov     ecx, eax
0040D9AB   .  FF15 44F14000 call    dword ptr [<&MSVBVM50.__vbaI2I4>>;  MSVBVM50.__vbaI2I4
0040D9B1   .  8985 48FFFFFF mov     dword ptr [ebp-B8], eax //文本长度
0040D9B7   .  BE 01000000   mov     esi, 1
0040D9BC   >  66:3BB5 48FFF>cmp    si, word ptr [ebp-B8] //循环N次,直到N>长度
//下面一段算法,看了头晕.
0040D9C3   .  0F8F 3A010000 jg      0040DB03
0040D9C9   .  8D4D D8       lea     ecx, dword ptr [ebp-28]
0040D9CC   .  8D55 BC       lea     edx, dword ptr [ebp-44]
0040D9CF   .  0FBFC6        movsx   eax, si
0040D9D2   .  894D 84       mov     dword ptr [ebp-7C], ecx
0040D9D5   .  52            push    edx                              ; /Length8
0040D9D6   .  8D8D 7CFFFFFF lea     ecx, dword ptr [ebp-84]          ; |
0040D9DC   .  50            push    eax                              ; |Start
0040D9DD   .  8D55 AC       lea     edx, dword ptr [ebp-54]          ; |
0040D9E0   .  51            push    ecx                              ; |dString8
0040D9E1   .  52            push    edx                              ; |RetBUFFER
0040D9E2   .  C745 C4 01000>mov     dword ptr [ebp-3C], 1            ; |
0040D9E9   .  C745 BC 02000>mov     dword ptr [ebp-44], 2            ; |
0040D9F0   .  C785 7CFFFFFF>mov     dword ptr [ebp-84], 4008         ; |
0040D9FA   .  FF15 30F14000 call    dword ptr [<&MSVBVM50.#632>]     ; \rtcMidCharVar
0040DA00   .  8D45 AC       lea     eax, dword ptr [ebp-54]
0040DA03   .  50            push    eax
0040DA04   .  FF15 F4F04000 call    dword ptr [<&MSVBVM50.__vbaStrVa>;  MSVBVM50.__vbaStrVarMove
0040DA0A   .  8BD0          mov     edx, eax
0040DA0C   .  8D4D E8       lea     ecx, dword ptr [ebp-18]
0040DA0F   .  FFD3          call    ebx
0040DA11   .  8D4D AC       lea     ecx, dword ptr [ebp-54]
0040DA14   .  8D55 BC       lea     edx, dword ptr [ebp-44]
0040DA17   .  51            push    ecx
0040DA18   .  52            push    edx
0040DA19   .  6A 02         push    2
0040DA1B   .  FF15 FCF04000 call    dword ptr [<&MSVBVM50.__vbaFreeV>;  MSVBVM50.__vbaFreeVarList
0040DA21   .  8B45 E8       mov     eax, dword ptr [ebp-18]
0040DA24   .  83C4 0C       add     esp, 0C
0040DA27   .  50            push    eax                              ; /String
0040DA28   .  FF15 08F14000 call    dword ptr [<&MSVBVM50.#516>]     ; \rtcAnsiValueBstr
0040DA2E   .  66:2D 4000    sub     ax, 40
0040DA32   .  0F80 A1020000 jo      0040DCD9
0040DA38   .  66:69C0 8200  imul    ax, ax, 82
0040DA3D   .  0F80 96020000 jo      0040DCD9
0040DA43   .  66:03C7       add     ax, di
0040DA46   .  0F80 8D020000 jo      0040DCD9
0040DA4C   .  66:05 5000    add     ax, 50
0040DA50   .  0F80 83020000 jo      0040DCD9
0040DA56   .  66:05 5000    add     ax, 50
0040DA5A   .  0F80 79020000 jo      0040DCD9
0040DA60   .  66:05 5000    add     ax, 50
0040DA64   .  0F80 6F020000 jo      0040DCD9
0040DA6A   .  66:05 5000    add     ax, 50
0040DA6E   .  0F80 65020000 jo      0040DCD9
0040DA74   .  66:05 5000    add     ax, 50
0040DA78   .  0F80 5B020000 jo      0040DCD9
0040DA7E   .  66:05 5000    add     ax, 50
0040DA82   .  0F80 51020000 jo      0040DCD9
0040DA88   .  66:05 5000    add     ax, 50
0040DA8C   .  0F80 47020000 jo      0040DCD9
0040DA92   .  66:05 5000    add     ax, 50
0040DA96   .  0F80 3D020000 jo      0040DCD9
0040DA9C   .  66:05 5000    add     ax, 50
0040DAA0   .  0F80 33020000 jo      0040DCD9
0040DAA6   .  66:05 5000    add     ax, 50
0040DAAA   .  0F80 29020000 jo      0040DCD9
0040DAB0   .  66:05 5000    add     ax, 50
0040DAB4   .  0F80 1F020000 jo      0040DCD9
0040DABA   .  66:05 5000    add     ax, 50
0040DABE   .  0F80 15020000 jo      0040DCD9
0040DAC4   .  66:05 5000    add     ax, 50
0040DAC8   .  0F80 0B020000 jo      0040DCD9
0040DACE   .  66:05 5000    add     ax, 50
0040DAD2   .  0F80 01020000 jo      0040DCD9
0040DAD8   .  66:05 5000    add     ax, 50
0040DADC   .  0F80 F7010000 jo      0040DCD9
0040DAE2   .  66:05 5000    add     ax, 50
0040DAE6   .  0F80 ED010000 jo      0040DCD9
0040DAEC   .  8BF8          mov     edi, eax
0040DAEE   .  B8 01000000   mov     eax, 1
0040DAF3   .  66:03C6       add     ax, si
0040DAF6   .  0F80 DD010000 jo      0040DCD9
0040DAFC   .  8BF0          mov     esi, eax  //出来eax=EA6
0040DAFE   .^ E9 B9FEFFFF   jmp     0040D9BC
0040DB03   >  8B45 08       mov     eax, dword ptr [ebp+8]
0040DB06   .  50            push    eax
0040DB07   .  8B08          mov     ecx, dword ptr [eax]
0040DB09   .  FF91 FC020000 call    dword ptr [ecx+2FC]
0040DB0F   .  8D55 CC       lea     edx, dword ptr [ebp-34]
0040DB12   .  50            push    eax
0040DB13   .  52            push    edx
0040DB14   .  FF15 20F14000 call    dword ptr [<&MSVBVM50.__vbaObjSe>;  MSVBVM50.__vbaObjSet
0040DB1A   .  8BF0          mov     esi, eax
0040DB1C   .  8D4D D4       lea     ecx, dword ptr [ebp-2C]
0040DB1F   .  51            push    ecx
0040DB20   .  56            push    esi
0040DB21   .  8B06          mov     eax, dword ptr [esi]
0040DB23   .  FF90 A0000000 call    dword ptr [eax+A0]
0040DB29   .  85C0          test    eax, eax
0040DB2B   .  7D 12         jge     short 0040DB3F
0040DB2D   .  68 A0000000   push    0A0
0040DB32   .  68 10D44000   push    0040D410
0040DB37   .  56            push    esi
0040DB38   .  50            push    eax
0040DB39   .  FF15 14F14000 call    dword ptr [<&MSVBVM50.__vbaHresu>;  MSVBVM50.__vbaHresultCheckObj
0040DB3F   >  8B55 D4       mov     edx, dword ptr [ebp-2C] //取序列号
0040DB42   .  52            push    edx
0040DB43   .  57            push    edi
0040DB44   .  FF15 E8F04000 call    dword ptr [<&MSVBVM50.__vbaStrI2>;  MSVBVM50.__vbaStrI2
0040DB4A   .  8BD0          mov     edx, eax
0040DB4C   .  8D4D D0       lea     ecx, dword ptr [ebp-30]
0040DB4F   .  FFD3          call    ebx
0040DB51   .  50            push    eax //可在此处看到正确的注册码
0040DB52   .  FF15 40F14000 call    dword ptr [<&MSVBVM50.__vbaStrCm>;  MSVBVM50.__vbaStrCmp
0040DB58   .  8BF0          mov     esi, eax
0040DB5A   .  8D45 D0       lea     eax, dword ptr [ebp-30]
0040DB5D   .  F7DE          neg     esi
0040DB5F   .  1BF6          sbb     esi, esi
0040DB61   .  8D4D D4       lea     ecx, dword ptr [ebp-2C]
0040DB64   .  50            push    eax
0040DB65   .  46            inc     esi
0040DB66   .  51            push    ecx
0040DB67   .  6A 02         push    2
0040DB69   .  F7DE          neg     esi
0040DB6B   .  FF15 78F14000 call    dword ptr [<&MSVBVM50.__vbaFreeS>;  MSVBVM50.__vbaFreeStrList
0040DB71   .  83C4 0C       add     esp, 0C
0040DB74   .  8D4D CC       lea     ecx, dword ptr [ebp-34]
0040DB77   .  FF15 9CF14000 call    dword ptr [<&MSVBVM50.__vbaFreeO>;  MSVBVM50.__vbaFreeObj
0040DB7D   .  B9 04000280   mov     ecx, 80020004
0040DB82   .  B8 0A000000   mov     eax, 0A
0040DB87   .  66:85F6       test    si, si
0040DB8A   .  894D 94       mov     dword ptr [ebp-6C], ecx
0040DB8D   .  8945 8C       mov     dword ptr [ebp-74], eax
0040DB90   .  894D A4       mov     dword ptr [ebp-5C], ecx
0040DB93   .  8945 9C       mov     dword ptr [ebp-64], eax
0040DB96   .  894D B4       mov     dword ptr [ebp-4C], ecx
0040DB99   .  8945 AC       mov     dword ptr [ebp-54], eax
0040DB9C   .  74 5E         je      short 0040DBFC
0040DB9E   .  8B35 10F14000 mov     esi, dword ptr [<&MSVBVM50.__vba>;  MSVBVM50.__vbaStrCat
0040DBA4   .  68 24D44000   push    0040D424                         ;  UNICODE "Nice Going!!! you Cracked the CrackMe!"
0040DBA9   .  68 6CD34000   push    0040D36C                         ; /String = CR,""
0040DBAE   .  FFD6          call    esi                              ; \__vbaStrCat
0040DBB0   .  8BD0          mov     edx, eax
0040DBB2   .  8D4D D4       lea     ecx, dword ptr [ebp-2C]
0040DBB5   .  FFD3          call    ebx
0040DBB7   .  50            push    eax
0040DBB8   .  68 84D44000   push    0040D484                         ;  UNICODE "Contact HackerG or DEATH to get your Present..."
0040DBBD   .  FFD6          call    esi
0040DBBF   .  8945 C4       mov     dword ptr [ebp-3C], eax
0040DBC2   .  8D55 8C       lea     edx, dword ptr [ebp-74]
0040DBC5   .  8D45 9C       lea     eax, dword ptr [ebp-64]
0040DBC8   .  52            push    edx
0040DBC9   .  8D4D AC       lea     ecx, dword ptr [ebp-54]
0040DBCC   .  50            push    eax
0040DBCD   .  51            push    ecx
0040DBCE   .  8D55 BC       lea     edx, dword ptr [ebp-44]
0040DBD1   .  6A 00         push    0
0040DBD3   .  52            push    edx
0040DBD4   .  C745 BC 08000>mov     dword ptr [ebp-44], 8
0040DBDB   .  FF15 1CF14000 call    dword ptr [<&MSVBVM50.#595>]     ;  MSVBVM50.rtcMsgBox
0040DBE1   .  8D4D D4       lea     ecx, dword ptr [ebp-2C]
0040DBE4   .  FF15 A0F14000 call    dword ptr [<&MSVBVM50.__vbaFreeS>;  MSVBVM50.__vbaFreeStr
0040DBEA   .  8D45 8C       lea     eax, dword ptr [ebp-74]
0040DBED   .  8D4D 9C       lea     ecx, dword ptr [ebp-64]
0040DBF0   .  50            push    eax
0040DBF1   .  8D55 AC       lea     edx, dword ptr [ebp-54]
0040DBF4   .  51            push    ecx
0040DBF5   .  8D45 BC       lea     eax, dword ptr [ebp-44]
0040DBF8   .  52            push    edx
0040DBF9   .  50            push    eax
0040DBFA   .  EB 5C         jmp     short 0040DC58
0040DBFC   >  8B35 10F14000 mov     esi, dword ptr [<&MSVBVM50.__vba>;  MSVBVM50.__vbaStrCat
0040DC02   .  68 E8D44000   push    0040D4E8                         ;  UNICODE "You Lamer!!! Cant Crack This?!"
0040DC07   .  68 6CD34000   push    0040D36C                         ; /String = CR,""
0040DC0C   .  FFD6          call    esi                              ; \__vbaStrCat
0040DC0E   .  8BD0          mov     edx, eax
0040DC10   .  8D4D D4       lea     ecx, dword ptr [ebp-2C]
0040DC13   .  FFD3          call    ebx
0040DC15   .  50            push    eax
0040DC16   .  68 2CD54000   push    0040D52C  ;  UNICODE "Try Again..."
0040DC1B   .  FFD6          call    esi
0040DC1D   .  8D4D 8C       lea     ecx, dword ptr [ebp-74]
0040DC20   .  8945 C4       mov     dword ptr [ebp-3C], eax
0040DC23   .  8D55 9C       lea     edx, dword ptr [ebp-64]
0040DC26   .  51            push    ecx
0040DC27   .  8D45 AC       lea     eax, dword ptr [ebp-54]
0040DC2A   .  52            push    edx

结果:
0040DB51可在此处看到正确的注册码

虽然可以知道注册码,可是算法不懂,哪位高人有空能帮看下,注释下?
小菜这里先谢了.

附件:
chap601.rar

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 227
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
哪位高手能看下呀..我是很想学习下的..
只是太菜了.老是绕晕.
还有哪位能加我QQ经常指点我下啊,不胜感激
2008-12-6 18:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
far
3
最好是把那个CRACKME发出来
!!!
2008-12-6 21:14
0
雪    币: 227
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有啊..那个附件就是crackme了..楼上的帮看下啊
2008-12-7 08:50
0
雪    币: 517
活跃值: (64)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
算法很简单

先把用户名转为大写

(用户名的每个字符的ASCII码-0x40)*0x82+以前的累加值+(0x50*0x10)

例如:
name: a

转为大字为A,ASCII码为0x41,

(0x41-0x40)0x82=0x82
0x82+0=0x82(与以前的结果累加,这是第一个字符,以前的累加结果为0)
0x82+(0x50*0x10)=0x82+0x500=130+1280=1410
2008-12-10 14:23
0
游客
登录 | 注册 方可回帖
返回
//