首页
社区
课程
招聘
CrackMe_#1_by_JoJo 算法
发表于: 2006-12-8 13:20 5841

CrackMe_#1_by_JoJo 算法

2006-12-8 13:20
5841

【破文标题】CrackMe_#1_by_JoJo  算法
【破文作者】XXNB
【作者邮箱】
【作者主页】http://free.ys168.com/?binbinbin7456
【破解工具】OD
【破解平台】xpsp2
【软件名称】CrackMe_#1_by_JoJo
【软件大小】
【原版下载】
【保护方式】
【软件简介】
【破解声明】向大侠们学习!!!只为学习!请尊重作者的劳动成功!
------------------------------------------------------------------------
【破解过程】

可以使用字符串参考,查找Unicode然后就轻松定位 了。

004028A0   > \55            push    ebp
004028A1   .  8BEC          mov     ebp, esp
004028A3   .  83EC 0C       sub     esp, 0C
004028A6   .  68 76114000   push    <jmp.&MSVBVM60.__vbaExceptHandle>;  SE 处理程序安装
004028AB   .  64:A1 0000000>mov     eax, dword ptr fs:[0]
004028B1   .  50            push    eax
004028B2   .  64:8925 00000>mov     dword ptr fs:[0], esp
004028B9   .  81EC C0000000 sub     esp, 0C0
004028BF   .  53            push    ebx
004028C0   .  56            push    esi
004028C1   .  57            push    edi
004028C2   .  8965 F4       mov     dword ptr [ebp-C], esp
004028C5   .  C745 F8 28114>mov     dword ptr [ebp-8], 00401128
004028CC   .  8B75 08       mov     esi, dword ptr [ebp+8]
004028CF   .  8BC6          mov     eax, esi
004028D1   .  83E0 01       and     eax, 1
004028D4   .  8945 FC       mov     dword ptr [ebp-4], eax
004028D7   .  83E6 FE       and     esi, FFFFFFFE
004028DA   .  56            push    esi
004028DB   .  8975 08       mov     dword ptr [ebp+8], esi
004028DE   .  8B0E          mov     ecx, dword ptr [esi]
004028E0   .  FF51 04       call    dword ptr [ecx+4]
004028E3   .  8B16          mov     edx, dword ptr [esi]
004028E5   .  33FF          xor     edi, edi
004028E7   .  56            push    esi
004028E8   .  897D E8       mov     dword ptr [ebp-18], edi
004028EB   .  897D E4       mov     dword ptr [ebp-1C], edi
004028EE   .  897D D4       mov     dword ptr [ebp-2C], edi
004028F1   .  897D C4       mov     dword ptr [ebp-3C], edi
004028F4   .  897D B4       mov     dword ptr [ebp-4C], edi
004028F7   .  897D A4       mov     dword ptr [ebp-5C], edi
004028FA   .  897D 94       mov     dword ptr [ebp-6C], edi
004028FD   .  897D 84       mov     dword ptr [ebp-7C], edi
00402900   .  89BD 74FFFFFF mov     dword ptr [ebp-8C], edi
00402906   .  89BD 64FFFFFF mov     dword ptr [ebp-9C], edi
0040290C   .  89BD 54FFFFFF mov     dword ptr [ebp-AC], edi
00402912   .  89BD 44FFFFFF mov     dword ptr [ebp-BC], edi
00402918   .  FF92 04030000 call    dword ptr [edx+304]
0040291E   .  50            push    eax
0040291F   .  8D45 E4       lea     eax, dword ptr [ebp-1C]
00402922   .  50            push    eax
00402923   .  FF15 40104000 call    dword ptr [<&MSVBVM60.__vbaObjSe>;  MSVBVM60.__vbaObjSet
00402929   .  8BD8          mov     ebx, eax
0040292B   .  8D55 E8       lea     edx, dword ptr [ebp-18]
0040292E   .  52            push    edx
0040292F   .  53            push    ebx
00402930   .  8B0B          mov     ecx, dword ptr [ebx]
00402932   .  FF91 A0000000 call    dword ptr [ecx+A0]
00402938   .  3BC7          cmp     eax, edi
0040293A   .  DBE2          fclex
0040293C   .  7D 12         jge     short 00402950
0040293E   .  68 A0000000   push    0A0
00402943   .  68 10214000   push    00402110
00402948   .  53            push    ebx
00402949   .  50            push    eax
0040294A   .  FF15 30104000 call    dword ptr [<&MSVBVM60.__vbaHresu>;  MSVBVM60.__vbaHresultCheckObj
00402950   >  DD05 20114000 fld     qword ptr [401120]               ;  这里出现550。因为是固定注册码,所以是常量550
00402956   .  833D 00404000>cmp     dword ptr [404000], 0
0040295D   .  75 08         jnz     short 00402967
0040295F   .  DC35 18114000 fdiv    qword ptr [401118]               ;  550除以2。实数相除
00402965   .  EB 11         jmp     short 00402978
00402967   >  FF35 1C114000 push    dword ptr [40111C]
0040296D   .  FF35 18114000 push    dword ptr [401118]
00402973   .  E8 1CE8FFFF   call    <jmp.&MSVBVM60._adj_fdiv_m64>
00402978   >  8B45 E8       mov     eax, dword ptr [ebp-18]          ;  我们输入的假码出现了
0040297B   .  68 00001440   push    40140000
00402980   .  8945 9C       mov     dword ptr [ebp-64], eax
00402983   .  57            push    edi
00402984   .  BB 05000000   mov     ebx, 5
00402989   .  68 00002040   push    40200000
0040298E   .  57            push    edi
0040298F   .  897D E8       mov     dword ptr [ebp-18], edi
00402992   .  C745 94 08800>mov     dword ptr [ebp-6C], 8008
00402999   .  C785 7CFFFFFF>mov     dword ptr [ebp-84], 0EA94        ;  60052 这个常数要注意哦。
004029A3   .  C785 74FFFFFF>mov     dword ptr [ebp-8C], 3
004029AD   .  899D 64FFFFFF mov     dword ptr [ebp-9C], ebx
004029B3   .  DD9D 6CFFFFFF fstp    qword ptr [ebp-94]               ;  刚才上面550除以2的结果275
004029B9   .  DFE0          fstsw   ax
004029BB   .  A8 0D         test    al, 0D
004029BD   .  0F85 15020000 jnz     00402BD8
004029C3   .  FF15 B0104000 call    dword ptr [<&MSVBVM60.__vbaPower>;  MSVBVM60.__vbaPowerR8
004029C9   .  DC0D 10114000 fmul    qword ptr [401110]               ;  32768乘以225=7372800
004029CF   .  68 00000840   push    40080000
004029D4   .  57            push    edi
004029D5   .  68 004CCD40   push    40CD4C00
004029DA   .  57            push    edi
004029DB   .  DD9D 5CFFFFFF fstp    qword ptr [ebp-A4]               ;  乘的结果
004029E1   .  DFE0          fstsw   ax
004029E3   .  A8 0D         test    al, 0D
004029E5   .  0F85 ED010000 jnz     00402BD8
004029EB   .  899D 54FFFFFF mov     dword ptr [ebp-AC], ebx
004029F1   .  FF15 B0104000 call    dword ptr [<&MSVBVM60.__vbaPower>;  MSVBVM60.__vbaPowerR8
004029F7   .  DD9D 4CFFFFFF fstp    qword ptr [ebp-B4]               ;  这个函数是“用来求一个数字的某次方”
004029FD   .  8D45 94       lea     eax, dword ptr [ebp-6C]
00402A00   .  83C6 34       add     esi, 34
00402A03   .  50            push    eax
00402A04   .  8D8D 74FFFFFF lea     ecx, dword ptr [ebp-8C]
00402A0A   .  56            push    esi
00402A0B   .  8D55 D4       lea     edx, dword ptr [ebp-2C]
00402A0E   .  51            push    ecx
00402A0F   .  52            push    edx
00402A10   .  899D 44FFFFFF mov     dword ptr [ebp-BC], ebx          ;  下面是60052*-856302534
00402A16   .  FF15 7C104000 call    dword ptr [<&MSVBVM60.__vbaVarMu>;  MSVBVM60.__vbaVarMul
00402A1C   .  8B35 C4104000 mov     esi, dword ptr [<&MSVBVM60.__vba>;  MSVBVM60.__vbaVarAdd
00402A22   .  50            push    eax                              ;  上面是一个乘
00402A23   .  8D85 64FFFFFF lea     eax, dword ptr [ebp-9C]          ;  然后把加的函数付给esi。以后call esi就是加了
00402A29   .  8D4D C4       lea     ecx, dword ptr [ebp-3C]          ;  -51422679771768  这个是上面乘的结果
00402A2C   .  50            push    eax
00402A2D   .  51            push    ecx
00402A2E   .  FFD6          call    esi                              ;  <&MSVBVM60.__vbaVarAdd>
00402A30   .  50            push    eax                              ;  加。跟进去的话可以知道加的是275(500÷2)
00402A31   .  8D95 54FFFFFF lea     edx, dword ptr [ebp-AC]          ;  我们也可以在寄存器窗口的ST7看结果
00402A37   .  8D45 B4       lea     eax, dword ptr [ebp-4C]
00402A3A   .  52            push    edx
00402A3B   .  50            push    eax
00402A3C   .  FFD6          call    esi                              ;  又加
00402A3E   .  8D8D 44FFFFFF lea     ecx, dword ptr [ebp-BC]          ;  跟进去可以看到是加7372800
00402A44   .  50            push    eax                              ;  ST7看结果
00402A45   .  8D55 A4       lea     edx, dword ptr [ebp-5C]
00402A48   .  51            push    ecx
00402A49   .  52            push    edx
00402A4A   .  FF15 00104000 call    dword ptr [<&MSVBVM60.__vbaVarSu>;  MSVBVM60.__vbaVarSub
00402A50   .  50            push    eax                              ;  减。ST7看结果。这个结果就是固定的注册码了
00402A51   .  FF15 60104000 call    dword ptr [<&MSVBVM60.__vbaVarTs>;  MSVBVM60.__vbaVarTstEq
00402A57   .  8D4D E4       lea     ecx, dword ptr [ebp-1C]          ;  上面比较。eax的值就是返回的结果
00402A5A   .  8BD8          mov     ebx, eax
00402A5C   .  FF15 F4104000 call    dword ptr [<&MSVBVM60.__vbaFreeO>;  MSVBVM60.__vbaFreeObj
00402A62   .  8B35 14104000 mov     esi, dword ptr [<&MSVBVM60.__vba>;  MSVBVM60.__vbaFreeVarList
00402A68   .  8D45 94       lea     eax, dword ptr [ebp-6C]
00402A6B   .  8D4D B4       lea     ecx, dword ptr [ebp-4C]
00402A6E   .  50            push    eax
00402A6F   .  8D55 C4       lea     edx, dword ptr [ebp-3C]
00402A72   .  51            push    ecx
00402A73   .  52            push    edx
00402A74   .  6A 03         push    3
00402A76   .  FFD6          call    esi                              ;  <&MSVBVM60.__vbaFreeVarList>
00402A78   .  B9 04000280   mov     ecx, 80020004
00402A7D   .  B8 0A000000   mov     eax, 0A
00402A82   .  83C4 10       add     esp, 10
00402A85   .  66:3BDF       cmp     bx, di                           ;  这里比较。
00402A88   .  894D AC       mov     dword ptr [ebp-54], ecx
00402A8B   .  8945 A4       mov     dword ptr [ebp-5C], eax
00402A8E   .  894D BC       mov     dword ptr [ebp-44], ecx
00402A91   .  8945 B4       mov     dword ptr [ebp-4C], eax
00402A94   .  74 6E         je      short 00402B04                   ;  关键跳转
00402A96   .  8B1D CC104000 mov     ebx, dword ptr [<&MSVBVM60.__vba>;  MSVBVM60.__vbaVarDup
00402A9C   .  8D95 64FFFFFF lea     edx, dword ptr [ebp-9C]
00402AA2   .  8D4D C4       lea     ecx, dword ptr [ebp-3C]          ;  成功信息
00402AA5   .  C785 6CFFFFFF>mov     dword ptr [ebp-94], 00402174     ;  Good!
00402AAF   .  C785 64FFFFFF>mov     dword ptr [ebp-9C], 8
00402AB9   .  FFD3          call    ebx                              ;  <&MSVBVM60.__vbaVarDup>
00402ABB   .  8D95 74FFFFFF lea     edx, dword ptr [ebp-8C]
00402AC1   .  8D4D D4       lea     ecx, dword ptr [ebp-2C]
00402AC4   .  C785 7CFFFFFF>mov     dword ptr [ebp-84], 00402124     ;  Good! - now write a Serial Retriever!
00402ACE   .  C785 74FFFFFF>mov     dword ptr [ebp-8C], 8
00402AD8   .  FFD3          call    ebx
00402ADA   .  8D45 A4       lea     eax, dword ptr [ebp-5C]
00402ADD   .  8D4D B4       lea     ecx, dword ptr [ebp-4C]
00402AE0   .  50            push    eax
00402AE1   .  8D55 C4       lea     edx, dword ptr [ebp-3C]
00402AE4   .  51            push    ecx
00402AE5   .  52            push    edx
00402AE6   .  8D45 D4       lea     eax, dword ptr [ebp-2C]
00402AE9   .  6A 40         push    40
00402AEB   .  50            push    eax
00402AEC   .  FF15 44104000 call    dword ptr [<&MSVBVM60.#595>]     ;  MSVBVM60.rtcMsgBox
00402AF2   .  8D4D A4       lea     ecx, dword ptr [ebp-5C]
00402AF5   .  8D55 B4       lea     edx, dword ptr [ebp-4C]
00402AF8   .  51            push    ecx
00402AF9   .  8D45 C4       lea     eax, dword ptr [ebp-3C]
00402AFC   .  52            push    edx
00402AFD   .  8D4D D4       lea     ecx, dword ptr [ebp-2C]
00402B00   .  50            push    eax
00402B01   .  51            push    ecx
00402B02   .  EB 6C         jmp     short 00402B70
00402B04   >  8B1D CC104000 mov     ebx, dword ptr [<&MSVBVM60.__vba>;  MSVBVM60.__vbaVarDup
00402B0A   .  8D95 64FFFFFF lea     edx, dword ptr [ebp-9C]          ;  失败信息
00402B10   .  8D4D C4       lea     ecx, dword ptr [ebp-3C]
00402B13   .  C785 6CFFFFFF>mov     dword ptr [ebp-94], 004021AC     ;  Sorry
00402B1D   .  C785 64FFFFFF>mov     dword ptr [ebp-9C], 8
00402B27   .  FFD3          call    ebx                              ;  <&MSVBVM60.__vbaVarDup>
00402B29   .  8D95 74FFFFFF lea     edx, dword ptr [ebp-8C]
00402B2F   .  8D4D D4       lea     ecx, dword ptr [ebp-2C]
00402B32   .  C785 7CFFFFFF>mov     dword ptr [ebp-84], 00402184     ;  Sorry, try again!
00402B3C   .  C785 74FFFFFF>mov     dword ptr [ebp-8C], 8
00402B46   .  FFD3          call    ebx

大家有空的也下载来分析下。就是一些实数加减乘除。

我这里的固定注册码是-54797672398693。如果直接下断MSVBVM60.__vbaVarTstEq这个函数的话,可以直接在寄存器窗口的ST7直接看到结果。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (4)
雪    币: 272
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持楼主!学习了。。。。
2006-12-9 08:42
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
8错8错,学习了.
2006-12-9 13:21
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哦.谢谢哦.虽然不是很了解.
2006-12-9 13:37
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rwx
5
要是写出注册机就好了
2011-3-1 21:43
0
游客
登录 | 注册 方可回帖
返回
// // 统计代码