飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2649|回复: 1

[原创] 一个 [UBC]crackme #1 的算法分析

[复制链接]

该用户从未签到

发表于 2007-12-26 12:21:33 | 显示全部楼层 |阅读模式
【文章标题】: 一个 [UBC]crackme #1 的算法分析
【文章作者】: CuteSnail
【作者QQ号】: 121567771
【作者声明】: 只是感兴趣的自娱自乐,没有其他目的。失误之处还要敬请诸位大侠赐教!
-------------------------------------------------------------------------------
【详细过程】

  使用OD载入该程序后运行它,然后输入 假的注册名: 1 和 假的注册码: 2, 然后通过字符串参考'You cracked the UBC Cra
  ckMe#1 ! Please send your solution to ubcrackers@hotmail.com !'来到注册相关的地方:
  
  
  00458800  /.  55                push    ebp                         ;  从这里开始分析:
  00458801  |.  8BEC              mov     ebp, esp
  00458803  |.  6A 00             push    0
  00458805  |.  53                push    ebx
  00458806  |.  8BD8              mov     ebx, eax
  00458808  |.  33C0              xor     eax, eax
  0045880A  |.  55                push    ebp
  0045880B  |.  68 74884500       push    [UBC]cra.00458874
  00458810  |.  64:FF30           push    dword ptr fs:[eax]
  00458813  |.  64:8920           mov     dword ptr fs:[eax], esp
  00458816  |.  E8 45FFFFFF       call    [UBC]cra.00458760           ;  由 注册名 产生结果,需要跟进分析
  0045881B  |.  8D55 FC           lea     edx, dword ptr [ebp-4]
  0045881E  |.  8B83 D0020000     mov     eax, dword ptr [ebx+2D0]
  00458824  |.  E8 97CDFCFF       call    [UBC]cra.004255C0           ;  得到注册码
  00458829  |.  8B45 FC           mov     eax, dword ptr [ebp-4]      ;  地址送 eax
  0045882C  |.  E8 43EFFAFF       call    [UBC]cra.00407774           ;  将注册码转为16进制数, 放 eax 中
  00458831  |.  3B05 44B84500     cmp     eax, dword ptr [45B844]     ;  比较两者是否相同
  00458837      75 1B             jnz     short [UBC]cra.00458854     ;  不相同,跳走,失败
  00458839  |.  B8 88884500       mov     eax, [UBC]cra.00458888      ;  You cracked the UBC CrackMe#1 !
  0045883E  |.  E8 29C1FEFF       call    [UBC]cra.0044496C
  00458843  |.  BA E8884500       mov     edx, [UBC]cra.004588E8      ;  CRACKED
  00458848  |.  A1 3CB84500       mov     eax, dword ptr [45B83C]
  0045884D  |.  E8 9ECDFCFF       call    [UBC]cra.004255F0
  00458852  |.  EB 0A             jmp     short [UBC]cra.0045885E
  00458854  |>  B8 F8884500       mov     eax, [UBC]cra.004588F8      ;  Try Again !
  00458859  |.  E8 0EC1FEFF       call    [UBC]cra.0044496C
  0045885E  |>  33C0              xor     eax, eax
  
  
  进入到: 00458816 的关键 call 中后:
  
  
  00458760  /$  55                push    ebp
  00458761  |.  8BEC              mov     ebp, esp
  00458763  |.  6A 00             push    0
  00458765  |.  53                push    ebx
  00458766  |.  56                push    esi
  00458767  |.  57                push    edi
  00458768  |.  BB 44B84500       mov     ebx, [UBC]cra.0045B844
  0045876D  |.  BE 48B84500       mov     esi, [UBC]cra.0045B848
  00458772  |.  BF 40B84500       mov     edi, [UBC]cra.0045B840      ;  ASCII "淜?
  00458777  |.  33C0              xor     eax, eax
  00458779  |.  55                push    ebp
  0045877A  |.  68 F3874500       push    [UBC]cra.004587F3
  0045877F  |.  64:FF30           push    dword ptr fs:[eax]
  00458782  |.  64:8920           mov     dword ptr fs:[eax], esp
  00458785  |.  8D55 FC           lea     edx, dword ptr [ebp-4]
  00458788  |.  A1 3CB84500       mov     eax, dword ptr [45B83C]
  0045878D  |.  8B80 CC020000     mov     eax, dword ptr [eax+2CC]
  00458793  |.  E8 28CEFCFF       call    [UBC]cra.004255C0           ;  得到注册名长度
  00458798  |.  8B55 FC           mov     edx, dword ptr [ebp-4]
  0045879B  |.  8BC7              mov     eax, edi
  0045879D  |.  E8 9AB0FAFF       call    [UBC]cra.0040383C
  004587A2  |.  33C0              xor     eax, eax
  004587A4  |.  8903              mov     dword ptr [ebx], eax
  004587A6  |.  8B07              mov     eax, dword ptr [edi]
  004587A8  |.  E8 B7B2FAFF       call    [UBC]cra.00403A64           ;  得到注册名长度
  004587AD  |.  85C0              test    eax, eax                    ;  是否为空
  004587AF  |.  7E 19             jle     short [UBC]cra.004587CA     ;  为空,跳走
  004587B1  |.  C706 01000000     mov     dword ptr [esi], 1
  004587B7  |>  8B17              /mov     edx, dword ptr [edi]       ;  注册名
  004587B9  |.  8B0E              |mov     ecx, dword ptr [esi]       ;  计数加1
  004587BB  |.  0FB6540A FF       |movzx   edx, byte ptr [edx+ecx-1]  ;  依次取注册名的ASCII码值
  004587C0  |.  C1E2 03           |shl     edx, 3                     ;  左移3位
  004587C3  |.  0113              |add     dword ptr [ebx], edx       ;  结果送变量 累加
  004587C5  |.  FF06              |inc     dword ptr [esi]            ;  计数增加1
  004587C7  |.  48                |dec     eax                        ;  注册名长度减去1
  004587C8  |.^ 75 ED             \jnz     short [UBC]cra.004587B7    ;  注册名长度是否被减为0了,是则跳出循环
  004587CA  |>  8B07              mov     eax, dword ptr [edi]
  004587CC  |.  E8 93B2FAFF       call    [UBC]cra.00403A64           ;  得到注册名长度
  004587D1  |.  C1E0 03           shl     eax, 3                      ;  然后左移3位
  004587D4  |.  0103              add     dword ptr [ebx], eax        ;  再与上面循环结果 相加
  004587D6  |.  8B03              mov     eax, dword ptr [ebx]        ;  回送 eax
  004587D8  |.  C1E0 02           shl     eax, 2                      ;  再左移2位
  004587DB  |.  8903              mov     dword ptr [ebx], eax        ;  得到最终结果
  004587DD  |.  33C0              xor     eax, eax                    ;  eax 清零
  004587DF  |.  5A                pop     edx
  004587E0  |.  59                pop     ecx
  004587E1  |.  59                pop     ecx
  004587E2  |.  64:8910           mov     dword ptr fs:[eax], edx
  004587E5  |.  68 FA874500       push    [UBC]cra.004587FA
  004587EA  |>  8D45 FC           lea     eax, dword ptr [ebp-4]
  004587ED  |.  E8 F6AFFAFF       call    [UBC]cra.004037E8
  004587F2  \.  C3                retn
  
  
  从上面,便知道这个程序的运算就是: 以注册名的长度为循环次数,依次取注册名的每一位字符的ASCII码值并左移3位,得到其
  结果依次累加后,放入到变量[ebx]处; 再取注册名的长度并将长度左移3位,再和前面循环得到的结果相加,最后将相加后的结
  果再左移2位,便得到了一个最终结果; 然后再读入注册码的数据,并转换为16进制数,然后两者比较,相等,便注册成功了,那么
  当我的注册名是: 1 时,我的正确注册码就是: 1600 了, 哈哈 ^_^
         
  成功的注册信息:
         
  注册名: 1
  注册码: 1600
  
-----------------------------------------------------------------------------------
【版权声明】: 本文由 CuteSnail 原创, 转载请注明作者并保持文章的完整性, 谢谢! 再见!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

x
PYG19周年生日快乐!

该用户从未签到

发表于 2008-1-9 20:47:07 | 显示全部楼层
没了人顶吗,顶下,适合新手
/:001 /:001
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表