飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4511|回复: 4

[原创] 3D Art Screen Saver 5.0算法分析和C注册机源码

[复制链接]
  • TA的每日心情
    开心
    2018-12-18 12:34
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2008-8-6 01:45:00 | 显示全部楼层 |阅读模式
    【文章标题】: 3D Art Screen Saver 5.0算法分析和C注册机源码
    【文章作者】: qifeon
    【软件名称】: 3D Art Screen Saver 5.0
    【下载地址】: http://www.onlinedown.net/soft/33724.htm
    【保护方式】: 注册码
    【编写语言】: 英文
    【使用工具】: OD
    【软件介绍】: 3D Art Screen Saver 是一个精美的3D艺术屏幕保护程
    【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    --------------------------------------------------------------------------------
    【详细过程】
      一、破解过程
      
      这是一个屏保程序,安装后看不到主程序。运行文件夹里的Launch Setup后启动主程序,然后利用OD的附加功能,附加进程里的 3D Art.SCR
      
      未命名的窗口
      进程       名称       窗口                         路径
      
      00001244   3D Art     3D Art Screen Saver          C:\WINDOWS\system32\3D Art.SCR                     附加程序
      000013CC   Launch Se                               C:\Program Files\3D Art\Launch Setup.exe
      
      然后就可以正常调试了。about项里找到注册项,输入“qifeon,123456”,出现错误提示“this user name does not match the registration code entered”,
      利用插件查找此字符串
      
      Ultra String Reference, 条目 20
       Address=0040172F
       Disassembly=push    0045E258
       Text String=this user name does not match the registration code entered.
      
      双击后来到
      *******************************************************************************************************************************************************
      
      00401705  |.  68 F8E14500   push    0045E1F8                         ;  registration successful!
      0040170A  |.  68 14E24500   push    0045E214                         ;  thank you for registering the program.
      0040170F  |.  8B8D 64FFFFFF mov     ecx, dword ptr [ebp-9C]
      00401715  |.  E8 B13E0400   call    004455CB
      0040171A  |.  C645 FC 02    mov     byte ptr [ebp-4], 2
      0040171E  |.  8D4D 80       lea     ecx, dword ptr [ebp-80]
      00401721  |.  E8 2B5A0400   call    00447151
      00401726  |.  EB 17         jmp     short 0040173F
      00401728  |>  6A 10         push    10
      0040172A  |.  68 3CE24500   push    0045E23C                         ;  registration unsuccessful
      0040172F  |.  68 58E24500   push    0045E258                         ;  this user name does not match the registration code entered.
                   返回处
      *********************************************************************************************************************************************************
      
      向上可以找到段首
      
      ************************************************************************************************************************************************************
      
      004013BD  /.  55            push    ebp                              段首
      004013BE  |.  8BEC          mov     ebp, esp
      004013C0  |.  6A FF         push    -1
      004013C2  |.  68 09DD4400   push    0044DD09                         ;  SE 处理程序安装
      004013C7  |.  64:A1 0000000>mov     eax, dword ptr fs:[0]
      004013CD  |.  50            push    eax
      004013CE  |.  64:8925 00000>mov     dword ptr fs:[0], esp
      004013D5  |.  81EC C4000000 sub     esp, 0C4
      004013DB  |.  898D 64FFFFFF mov     dword ptr [ebp-9C], ecx
      004013E1  |.  8D4D E8       lea     ecx, dword ptr [ebp-18]
      004013E4  |.  E8 C7070000   call    00401BB0
      004013E9  |.  C745 FC 00000>mov     dword ptr [ebp-4], 0
      004013F0  |.  8D4D EC       lea     ecx, dword ptr [ebp-14]
      004013F3  |.  E8 B8070000   call    00401BB0
      004013F8  |.  C645 FC 01    mov     byte ptr [ebp-4], 1
      004013FC  |.  8B85 64FFFFFF mov     eax, dword ptr [ebp-9C]
      00401402  |.  50            push    eax
      00401403  |.  8D4D 84       lea     ecx, dword ptr [ebp-7C]
      00401406  |.  E8 652F0100   call    00414370
      0040140B  |.  C645 FC 02    mov     byte ptr [ebp-4], 2
      0040140F  |.  8D4D 84       lea     ecx, dword ptr [ebp-7C]
      00401412  |.  E8 7D220400   call    00443694                         ;  出现程序注册对话框
      00401417  |.  8945 F0       mov     dword ptr [ebp-10], eax
      0040141A  |.  837D F0 01    cmp     dword ptr [ebp-10], 1            ;  判断注册或取消按钮,点注册则返回eax=1
      0040141E  |.  0F85 1B030000 jnz     0040173F                         ;  点注册按钮则不跳
      00401424  |.  8D4D E4       lea     ecx, dword ptr [ebp-1C]
      00401427  |.  51            push    ecx
      00401428  |.  8D4D E8       lea     ecx, dword ptr [ebp-18]
      0040142B  |.  E8 0E5E0400   call    0044723E
      00401430  |.  8D55 E0       lea     edx, dword ptr [ebp-20]
      00401433  |.  52            push    edx
      00401434  |.  8D4D EC       lea     ecx, dword ptr [ebp-14]
      00401437  |.  E8 025E0400   call    0044723E
      0040143C  |.  8D4D E8       lea     ecx, dword ptr [ebp-18]
      0040143F  |.  E8 8C070000   call    00401BD0                         ;  检查用户名是否为空
      00401444  |.  85C0          test    eax, eax                         ;  不为空eax=0
      00401446  |.  74 43         je      short 0040148B
      00401448  |.  6A 10         push    10
      0040144A  |.  68 60E14500   push    0045E160                         ;  registration unsuccessful
      0040144F  |.  68 7CE14500   push    0045E17C                         ;  please enter a username
      00401454  |.  8B8D 64FFFFFF mov     ecx, dword ptr [ebp-9C]
      0040145A  |.  E8 6C410400   call    004455CB
      0040145F  |.  C645 FC 01    mov     byte ptr [ebp-4], 1
      00401463  |.  8D4D 84       lea     ecx, dword ptr [ebp-7C]
      00401466  |.  E8 95060000   call    00401B00
      0040146B  |.  C645 FC 00    mov     byte ptr [ebp-4], 0
      0040146F  |.  8D4D EC       lea     ecx, dword ptr [ebp-14]
      00401472  |.  E8 DA5C0400   call    00447151
      00401477  |.  C745 FC FFFFF>mov     dword ptr [ebp-4], -1
      0040147E  |.  8D4D E8       lea     ecx, dword ptr [ebp-18]
      00401481  |.  E8 CB5C0400   call    00447151
      00401486  |.  E9 DB020000   jmp     00401766
      0040148B  |>  8D4D EC       lea     ecx, dword ptr [ebp-14]
      0040148E  |.  E8 3D070000   call    00401BD0                         ;  试炼码是否为空?
      00401493  |.  85C0          test    eax, eax                         ;  不为空则返回eax=0
      00401495  |.  74 43         je      short 004014DA
      00401497  |.  6A 10         push    10
      00401499  |.  68 94E14500   push    0045E194                         ;  registration unsuccessful
      0040149E  |.  68 B0E14500   push    0045E1B0                         ;  please enter a registration code
      004014A3  |.  8B8D 64FFFFFF mov     ecx, dword ptr [ebp-9C]
      004014A9  |.  E8 1D410400   call    004455CB
      004014AE  |.  C645 FC 01    mov     byte ptr [ebp-4], 1
      004014B2  |.  8D4D 84       lea     ecx, dword ptr [ebp-7C]
      004014B5  |.  E8 46060000   call    00401B00
      004014BA  |.  C645 FC 00    mov     byte ptr [ebp-4], 0
      004014BE  |.  8D4D EC       lea     ecx, dword ptr [ebp-14]
      004014C1  |.  E8 8B5C0400   call    00447151
      004014C6  |.  C745 FC FFFFF>mov     dword ptr [ebp-4], -1
      004014CD  |.  8D4D E8       lea     ecx, dword ptr [ebp-18]
      004014D0  |.  E8 7C5C0400   call    00447151
      004014D5  |.  E9 8C020000   jmp     00401766
      004014DA  |>  51            push    ecx
      004014DB  |.  8BCC          mov     ecx, esp
      004014DD  |.  89A5 7CFFFFFF mov     dword ptr [ebp-84], esp
      004014E3  |.  8D45 EC       lea     eax, dword ptr [ebp-14]
      004014E6  |.  50            push    eax
      004014E7  |.  E8 DA590400   call    00446EC6
      004014EC  |.  8985 60FFFFFF mov     dword ptr [ebp-A0], eax
      004014F2  |.  8B8D 60FFFFFF mov     ecx, dword ptr [ebp-A0]
      004014F8  |.  898D 5CFFFFFF mov     dword ptr [ebp-A4], ecx
      004014FE  |.  C645 FC 03    mov     byte ptr [ebp-4], 3
      00401502  |.  51            push    ecx
      00401503  |.  8BCC          mov     ecx, esp
      00401505  |.  89A5 78FFFFFF mov     dword ptr [ebp-88], esp
      0040150B  |.  8D55 E8       lea     edx, dword ptr [ebp-18]
      0040150E  |.  52            push    edx
      0040150F  |.  E8 B2590400   call    00446EC6
      00401514  |.  8985 58FFFFFF mov     dword ptr [ebp-A8], eax
      0040151A  |.  8B85 58FFFFFF mov     eax, dword ptr [ebp-A8]
      00401520  |.  8985 54FFFFFF mov     dword ptr [ebp-AC], eax
      00401526  |.  C645 FC 04    mov     byte ptr [ebp-4], 4
      0040152A  |.  E8 F1060000   call    00401C20
      0040152F  |.  8BC8          mov     ecx, eax
      00401531  |.  C645 FC 02    mov     byte ptr [ebp-4], 2
      00401535  |.  E8 F25F0100   call    0041752C                         ;  算法CALL
      0040153A  |.  8985 50FFFFFF mov     dword ptr [ebp-B0], eax
      00401540  |.  83BD 50FFFFFF>cmp     dword ptr [ebp-B0], 0
      00401547  |.  0F84 DB010000 je      00401728                         ;  关键跳转
      0040154D  |.  51            push    ecx
      0040154E  |.  8BCC          mov     ecx, esp
      00401550  |.  89A5 74FFFFFF mov     dword ptr [ebp-8C], esp
      00401556  |.  8D55 EC       lea     edx, dword ptr [ebp-14]
      00401559  |.  52            push    edx
      0040155A  |.  E8 67590400   call    00446EC6
      0040155F  |.  8985 4CFFFFFF mov     dword ptr [ebp-B4], eax
      00401565  |.  8B85 4CFFFFFF mov     eax, dword ptr [ebp-B4]
      0040156B  |.  8985 48FFFFFF mov     dword ptr [ebp-B8], eax
      00401571  |.  C645 FC 05    mov     byte ptr [ebp-4], 5
      00401575  |.  51            push    ecx
      00401576  |.  8BCC          mov     ecx, esp
      00401578  |.  89A5 70FFFFFF mov     dword ptr [ebp-90], esp
      0040157E  |.  8D55 E8       lea     edx, dword ptr [ebp-18]
      00401581  |.  52            push    edx
      00401582  |.  E8 3F590400   call    00446EC6
      00401587  |.  8985 44FFFFFF mov     dword ptr [ebp-BC], eax
      0040158D  |.  8B85 44FFFFFF mov     eax, dword ptr [ebp-BC]
      00401593  |.  8985 40FFFFFF mov     dword ptr [ebp-C0], eax
      00401599  |.  C645 FC 06    mov     byte ptr [ebp-4], 6
      0040159D  |.  E8 7E060000   call    00401C20
      004015A2  |.  8BC8          mov     ecx, eax
      004015A4  |.  C645 FC 02    mov     byte ptr [ebp-4], 2
      004015A8  |.  E8 D1620100   call    0041787E
      004015AD  |.  8D4D 80       lea     ecx, dword ptr [ebp-80]
      004015B0  |.  E8 FB050000   call    00401BB0
      004015B5  |.  C645 FC 07    mov     byte ptr [ebp-4], 7
      004015B9  |.  68 D4E14500   push    0045E1D4                         ;  .
      004015BE  |.  E8 5D060000   call    00401C20
      004015C3  |.  05 04020000   add     eax, 204
      004015C8  |.  50            push    eax
      004015C9  |.  68 D8E14500   push    0045E1D8                         ;  this program is registered to
      004015CE  |.  8D8D 6CFFFFFF lea     ecx, dword ptr [ebp-94]
      004015D4  |.  51            push    ecx
      ----------------------------————————————————————————————————-
      略去若干代码
      ————————————————————————————————————————————————
      
      00401703  |.  6A 40         push    40
      00401705  |.  68 F8E14500   push    0045E1F8                         ;  registration successful!
      0040170A  |.  68 14E24500   push    0045E214                         ;  thank you for registering the program.
      0040170F  |.  8B8D 64FFFFFF mov     ecx, dword ptr [ebp-9C]
      00401715  |.  E8 B13E0400   call    004455CB
      0040171A  |.  C645 FC 02    mov     byte ptr [ebp-4], 2
      0040171E  |.  8D4D 80       lea     ecx, dword ptr [ebp-80]
      00401721  |.  E8 2B5A0400   call    00447151
      00401726  |.  EB 17         jmp     short 0040173F
      00401728  |>  6A 10         push    10
      0040172A  |.  68 3CE24500   push    0045E23C                         ;  registration unsuccessful
      0040172F  |.  68 58E24500   push    0045E258                         ;  this user name does not match the registration code entered.
      00401734  |.  8B8D 64FFFFFF mov     ecx, dword ptr [ebp-9C]
      0040173A  |.  E8 8C3E0400   call    004455CB
      
      ****************************************************************************************************************************************
      
      段首下断,重载。点ABOUT,再点Regster now 断下,单步,中间输入试炼码,进入算法CALL call    0041752C
      
      ***************************************************************************************************************************************
      
      
      
      0041752C  /$  55            push    ebp
      0041752D  |.  8BEC          mov     ebp, esp
      0041752F  |.  6A FF         push    -1
      00417531  |.  68 51F24400   push    0044F251                         ;  SE 处理程序安装
      00417536  |.  64:A1 0000000>mov     eax, dword ptr fs:[0]
      0041753C  |.  50            push    eax
      0041753D  |.  64:8925 00000>mov     dword ptr fs:[0], esp
      00417544  |.  83EC 44       sub     esp, 44
      00417547  |.  894D CC       mov     dword ptr [ebp-34], ecx
      0041754A  |.  C745 FC 01000>mov     dword ptr [ebp-4], 1
      00417551  |.  68 000F4600   push    00460F00                         ;  141040
      00417556  |.  8D45 0C       lea     eax, dword ptr [ebp+C]
      00417559  |.  50            push    eax
      0041755A  |.  E8 91BDFEFF   call    004032F0                         ;  判断是否是固定注册码码“141040”
      0041755F  |.  25 FF000000   and     eax, 0FF
      00417564  |.  85C0          test    eax, eax
      00417566  |.  75 17         jnz     short 0041757F                   ;  验证失败则进入第2组注册码判断
      00417568  |.  68 080F4600   push    00460F08                         ;  117445
      0041756D  |.  8D4D 0C       lea     ecx, dword ptr [ebp+C]
      00417570  |.  51            push    ecx
      00417571  |.  E8 7ABDFEFF   call    004032F0                         ;  判断是否是固定注册码码“117445”
      00417576  |.  25 FF000000   and     eax, 0FF
      0041757B  |.  85C0          test    eax, eax
      0041757D  |.  74 64         je      short 004175E3                   ;  验证失败则进入另一组注册码判断
      0041757F  |>  51            push    ecx
      00417580  |.  8BCC          mov     ecx, esp
      00417582  |.  8965 E8       mov     dword ptr [ebp-18], esp
      00417585  |.  8D55 0C       lea     edx, dword ptr [ebp+C]
      00417588  |.  52            push    edx
      00417589  |.  E8 38F90200   call    00446EC6
      0041758E  |.  8945 C8       mov     dword ptr [ebp-38], eax
      00417591  |.  8B45 C8       mov     eax, dword ptr [ebp-38]
      00417594  |.  8945 C4       mov     dword ptr [ebp-3C], eax
      00417597  |.  C645 FC 02    mov     byte ptr [ebp-4], 2
      0041759B  |.  51            push    ecx
      0041759C  |.  8BCC          mov     ecx, esp
      0041759E  |.  8965 E4       mov     dword ptr [ebp-1C], esp
      004175A1  |.  8D55 08       lea     edx, dword ptr [ebp+8]
      004175A4  |.  52            push    edx
      004175A5  |.  E8 1CF90200   call    00446EC6
      004175AA  |.  8945 C0       mov     dword ptr [ebp-40], eax
      004175AD  |.  8B4D CC       mov     ecx, dword ptr [ebp-34]
      004175B0  |.  C645 FC 01    mov     byte ptr [ebp-4], 1
      004175B4  |.  E8 C5020000   call    0041787E
      004175B9  |.  C745 E0 FFFFF>mov     dword ptr [ebp-20], -1
      004175C0  |.  C645 FC 00    mov     byte ptr [ebp-4], 0
      004175C4  |.  8D4D 08       lea     ecx, dword ptr [ebp+8]
      004175C7  |.  E8 85FB0200   call    00447151
      004175CC  |.  C745 FC FFFFF>mov     dword ptr [ebp-4], -1
      004175D3  |.  8D4D 0C       lea     ecx, dword ptr [ebp+C]
      004175D6  |.  E8 76FB0200   call    00447151
      004175DB  |.  8B45 E0       mov     eax, dword ptr [ebp-20]
      004175DE  |.  E9 0A010000   jmp     004176ED
      004175E3  |>  8D4D EC       lea     ecx, dword ptr [ebp-14]          ;  第2组注册码失败后跳到这里
      004175E6  |.  E8 C5A5FEFF   call    00401BB0
      004175EB  |.  C645 FC 03    mov     byte ptr [ebp-4], 3
      004175EF  |.  6A 0A         push    0A
      004175F1  |.  68 00010000   push    100
      004175F6  |.  8D4D EC       lea     ecx, dword ptr [ebp-14]
      004175F9  |.  E8 F6FE0200   call    004474F4
      004175FE  |.  50            push    eax
      004175FF  |.  68 2C010000   push    12C
      00417604  |.  E8 909E0000   call    00421499
      00417609  |.  83C4 0C       add     esp, 0C
      0041760C  |.  6A FF         push    -1
      0041760E  |.  8D4D EC       lea     ecx, dword ptr [ebp-14]
      00417611  |.  E8 2DFF0200   call    00447543
      00417616  |.  51            push    ecx
      00417617  |.  8BCC          mov     ecx, esp
      00417619  |.  8965 DC       mov     dword ptr [ebp-24], esp
      0041761C  |.  8D45 EC       lea     eax, dword ptr [ebp-14]
      0041761F  |.  50            push    eax
      00417620  |.  E8 A1F80200   call    00446EC6
      00417625  |.  8945 BC       mov     dword ptr [ebp-44], eax
      00417628  |.  8B4D BC       mov     ecx, dword ptr [ebp-44]
      0041762B  |.  894D B8       mov     dword ptr [ebp-48], ecx
      0041762E  |.  C645 FC 04    mov     byte ptr [ebp-4], 4
      00417632  |.  51            push    ecx
      00417633  |.  8BCC          mov     ecx, esp
      00417635  |.  8965 D8       mov     dword ptr [ebp-28], esp
      00417638  |.  8D55 08       lea     edx, dword ptr [ebp+8]
      0041763B  |.  52            push    edx
      0041763C  |.  E8 85F80200   call    00446EC6
      00417641  |.  8945 B4       mov     dword ptr [ebp-4C], eax
      00417644  |.  8D45 F0       lea     eax, dword ptr [ebp-10]
      00417647  |.  50            push    eax
      00417648  |.  8B4D CC       mov     ecx, dword ptr [ebp-34]
      0041764B  |.  C645 FC 03    mov     byte ptr [ebp-4], 3
      0041764F  |.  E8 A9000000   call    004176FD                         ;  算法CALL
      00417654  |.  8945 B0       mov     dword ptr [ebp-50], eax
      00417657  |.  C645 FC 05    mov     byte ptr [ebp-4], 5
      0041765B  |.  8D4D 0C       lea     ecx, dword ptr [ebp+C]
      0041765E  |.  51            push    ecx
      0041765F  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
      00417662  |.  52            push    edx
      00417663  |.  E8 7805FFFF   call    00407BE0                         ;  上面计算得到注册码与试炼码比较
      00417668  |.  25 FF000000   and     eax, 0FF
      0041766D  |.  85C0          test    eax, eax
      0041766F  |.  74 3F         je      short 004176B0
      00417671  |.  C745 D4 01000>mov     dword ptr [ebp-2C], 1
      00417678  |.  C645 FC 03    mov     byte ptr [ebp-4], 3
      0041767C  |.  8D4D F0       lea     ecx, dword ptr [ebp-10]
      0041767F  |.  E8 CDFA0200   call    00447151
      00417684  |.  C645 FC 01    mov     byte ptr [ebp-4], 1
      00417688  |.  8D4D EC       lea     ecx, dword ptr [ebp-14]
      0041768B  |.  E8 C1FA0200   call    00447151
      00417690  |.  C645 FC 00    mov     byte ptr [ebp-4], 0
      00417694  |.  8D4D 08       lea     ecx, dword ptr [ebp+8]
      00417697  |.  E8 B5FA0200   call    00447151
      0041769C  |.  C745 FC FFFFF>mov     dword ptr [ebp-4], -1
      004176A3  |.  8D4D 0C       lea     ecx, dword ptr [ebp+C]
      004176A6  |.  E8 A6FA0200   call    00447151
      004176AB  |.  8B45 D4       mov     eax, dword ptr [ebp-2C]
      004176AE  |.  EB 3D         jmp     short 004176ED
      004176B0  |>  C745 D0 00000>mov     dword ptr [ebp-30], 0
      004176B7  |.  C645 FC 03    mov     byte ptr [ebp-4], 3
      004176BB  |.  8D4D F0       lea     ecx, dword ptr [ebp-10]
      004176BE  |.  E8 8EFA0200   call    00447151
      004176C3  |.  C645 FC 01    mov     byte ptr [ebp-4], 1
      004176C7  |.  8D4D EC       lea     ecx, dword ptr [ebp-14]
      004176CA  |.  E8 82FA0200   call    00447151
      004176CF  |.  C645 FC 00    mov     byte ptr [ebp-4], 0
      004176D3  |.  8D4D 08       lea     ecx, dword ptr [ebp+8]
      004176D6  |.  E8 76FA0200   call    00447151
      004176DB  |.  C745 FC FFFFF>mov     dword ptr [ebp-4], -1
      004176E2  |.  8D4D 0C       lea     ecx, dword ptr [ebp+C]
      004176E5  |.  E8 67FA0200   call    00447151
      004176EA  |.  8B45 D0       mov     eax, dword ptr [ebp-30]
      004176ED  |>  8B4D F4       mov     ecx, dword ptr [ebp-C]
      004176F0  |.  64:890D 00000>mov     dword ptr fs:[0], ecx
      004176F7  |.  8BE5          mov     esp, ebp
      004176F9  |.  5D            pop     ebp
      004176FA  \.  C2 0800       retn    8
      
      ***********************************************************************************************************************
      
      进入第3组注册码算法CALL  004176FD  
      
      *************************************************************************************************************************
      
      004176FD  /$  55            push    ebp
      004176FE  |.  8BEC          mov     ebp, esp
      00417700  |.  6A FF         push    -1
      00417702  |.  68 9FF24400   push    0044F29F                         ;  SE 处理程序安装
      00417707  |.  64:A1 0000000>mov     eax, dword ptr fs:[0]
      0041770D  |.  50            push    eax
      0041770E  |.  64:8925 00000>mov     dword ptr fs:[0], esp
      00417715  |.  83EC 30       sub     esp, 30
      00417718  |.  894D CC       mov     dword ptr [ebp-34], ecx
      0041771B  |.  C745 D0 00000>mov     dword ptr [ebp-30], 0
      00417722  |.  C745 FC 02000>mov     dword ptr [ebp-4], 2
      00417729  |.  8D4D E4       lea     ecx, dword ptr [ebp-1C]
      0041772C  |.  E8 7FA4FEFF   call    00401BB0
      00417731  |.  C645 FC 03    mov     byte ptr [ebp-4], 3
      00417735  |.  8D4D D8       lea     ecx, dword ptr [ebp-28]
      00417738  |.  E8 73A4FEFF   call    00401BB0
      0041773D  |.  C645 FC 04    mov     byte ptr [ebp-4], 4
      00417741  |.  C745 E8 00000>mov     dword ptr [ebp-18], 0
      00417748  |.  8D45 10       lea     eax, dword ptr [ebp+10]
      0041774B  |.  50            push    eax
      0041774C  |.  8D4D 0C       lea     ecx, dword ptr [ebp+C]
      0041774F  |.  51            push    ecx
      00417750  |.  8D55 D4       lea     edx, dword ptr [ebp-2C]
      00417753  |.  52            push    edx
      00417754  |.  E8 9AFB0200   call    004472F3
      00417759  |.  8945 C8       mov     dword ptr [ebp-38], eax
      0041775C  |.  8B45 C8       mov     eax, dword ptr [ebp-38]
      0041775F  |.  8945 C4       mov     dword ptr [ebp-3C], eax
      00417762  |.  C645 FC 05    mov     byte ptr [ebp-4], 5
      00417766  |.  8B4D C4       mov     ecx, dword ptr [ebp-3C]
      00417769  |.  51            push    ecx
      0041776A  |.  8D4D 0C       lea     ecx, dword ptr [ebp+C]
      0041776D  |.  E8 CCFA0200   call    0044723E
      00417772  |.  C645 FC 04    mov     byte ptr [ebp-4], 4
      00417776  |.  8D4D D4       lea     ecx, dword ptr [ebp-2C]
      00417779  |.  E8 D3F90200   call    00447151
      0041777E  |.  8D4D 0C       lea     ecx, dword ptr [ebp+C]
      00417781  |.  E8 4ABBFEFF   call    004032D0
      00417786  |.  8945 EC       mov     dword ptr [ebp-14], eax
      00417789  |.  68 00010000   push    100
      0041778E  |.  8D4D 10       lea     ecx, dword ptr [ebp+10]
      00417791  |.  E8 5EFD0200   call    004474F4
      00417796  |.  50            push    eax
      00417797  |.  E8 E1A60000   call    00421E7D
      0041779C  |.  83C4 04       add     esp, 4
      0041779F  |.  8945 DC       mov     dword ptr [ebp-24], eax
      004177A2  |.  6A FF         push    -1
      004177A4  |.  8D4D 10       lea     ecx, dword ptr [ebp+10]
      004177A7  |.  E8 97FD0200   call    00447543
      004177AC  |.  68 00010000   push    100
      004177B1  |.  8D4D 0C       lea     ecx, dword ptr [ebp+C]
      004177B4  |.  E8 3BFD0200   call    004474F4                         ;  试炼码与固定字符串“300”连接
      004177B9  |.  8945 F0       mov     dword ptr [ebp-10], eax
      004177BC  |.  C745 E0 00000>mov     dword ptr [ebp-20], 0
      004177C3  |.  EB 09         jmp     short 004177CE
      004177C5  |>  8B55 E0       /mov     edx, dword ptr [ebp-20]         ;  ebp-20的值传送回edx
      004177C8  |.  83C2 01       |add     edx, 1                          ;  edx值增1
      004177CB  |.  8955 E0       |mov     dword ptr [ebp-20], edx         ;  edx值放入ebp-20,以便于后面参与计算
      004177CE  |>  8B45 E0        mov     eax, dword ptr [ebp-20]         ;  ebp-20的值放入eax
      004177D1  |.  3B45 EC       |cmp     eax, dword ptr [ebp-14]         ;  判断是否是否最后一位字符,ebp-14放置字符串长度len
      004177D4  |.  7D 13         |jge     short 004177E9                  ;  大于或等于则跳出循环
      004177D6  |.  8B4D F0       |mov     ecx, dword ptr [ebp-10]         ;  连接后字符串放入ecx
      004177D9  |.  034D E0       |add     ecx, dword ptr [ebp-20]         ;  ecx值由ebp-20传送,每次循环增1
      004177DC  |.  0FBE11        |movsx   edx, byte ptr [ecx]             ;  连接后字符串逐位扩充放入edx
      004177DF  |.  8B45 E8       |mov     eax, dword ptr [ebp-18]         ;  ebp-18 值放入eax
      004177E2  |.  03C2          |add     eax, edx                        ;  eax与edx值相加
      004177E4  |.  8945 E8       |mov     dword ptr [ebp-18], eax         ;  相加后的值存入ebp-18
      004177E7  |.^ EB DC         \jmp     short 004177C5
      004177E9  |>  8B4D E8       mov     ecx, dword ptr [ebp-18]          ;  连接后字符串ASCII值之和设为sum
      004177EC  |.  2B4D DC       sub     ecx, dword ptr [ebp-24]          ;  减去300的16进制12Ch
      004177EF  |.  894D E8       mov     dword ptr [ebp-18], ecx          ;  sum-12Ch值放入ebp-18
      004177F2  |.  8B55 DC       mov     edx, dword ptr [ebp-24]          ;  12Ch放入edx
      004177F5  |.  2B55 EC       sub     edx, dword ptr [ebp-14]          ;  edx=12Ch-len
      004177F8  |.  8B45 E8       mov     eax, dword ptr [ebp-18]          ;  eax=sum-12Ch
      004177FB  |.  0FAFC2        imul    eax, edx                         ;  eax相乘edx
      004177FE  |.  8945 E8       mov     dword ptr [ebp-18], eax          ;  相乘结果放在ebp-18
      00417801  |.  6A 0A         push    0A
      00417803  |.  68 00010000   push    100
      00417808  |.  8D4D E4       lea     ecx, dword ptr [ebp-1C]
      0041780B  |.  E8 E4FC0200   call    004474F4
      00417810  |.  50            push    eax
      00417811  |.  8B4D E8       mov     ecx, dword ptr [ebp-18]          ;  相乘结果放入ecx
      00417814  |.  51            push    ecx
      00417815  |.  E8 7F9C0000   call    00421499                         ;  相乘结果10进制转为字符串,即为注册码
      0041781A  |.  83C4 0C       add     esp, 0C
      0041781D  |.  6A FF         push    -1                                    
      0041781F  |.  8D4D E4       lea     ecx, dword ptr [ebp-1C]
      00417822  |.  E8 1CFD0200   call    00447543                         ;  取计算后长度
      00417827  |.  8D55 E4       lea     edx, dword ptr [ebp-1C]
      0041782A  |.  52            push    edx
      0041782B  |.  8B4D 08       mov     ecx, dword ptr [ebp+8]
      0041782E  |.  E8 93F60200   call    00446EC6
      00417833  |.  8B45 D0       mov     eax, dword ptr [ebp-30]
      00417836  |.  0C 01         or      al, 1
      00417838  |.  8945 D0       mov     dword ptr [ebp-30], eax
      0041783B  |.  C645 FC 03    mov     byte ptr [ebp-4], 3
      0041783F  |.  8D4D D8       lea     ecx, dword ptr [ebp-28]
      00417842  |.  E8 0AF90200   call    00447151
      00417847  |.  C645 FC 02    mov     byte ptr [ebp-4], 2
      0041784B  |.  8D4D E4       lea     ecx, dword ptr [ebp-1C]
      0041784E  |.  E8 FEF80200   call    00447151
      00417853  |.  C645 FC 01    mov     byte ptr [ebp-4], 1
      00417857  |.  8D4D 0C       lea     ecx, dword ptr [ebp+C]
      0041785A  |.  E8 F2F80200   call    00447151
      0041785F  |.  C645 FC 00    mov     byte ptr [ebp-4], 0
      00417863  |.  8D4D 10       lea     ecx, dword ptr [ebp+10]
      00417866  |.  E8 E6F80200   call    00447151
      0041786B  |.  8B45 08       mov     eax, dword ptr [ebp+8]
      0041786E  |.  8B4D F4       mov     ecx, dword ptr [ebp-C]
      00417871  |.  64:890D 00000>mov     dword ptr fs:[0], ecx
      00417878  |.  8BE5          mov     esp, ebp
      0041787A  |.  5D            pop     ebp
      0041787B  \.  C2 0C00       retn    0C
      
      *********************************************************************************************************
      
      限于篇幅,有些CALL调试时都跟进了,这里破文就略去了。兄弟们如果玩玩需要进去看看。比如
      
      0040143F  |.  E8 8C070000   call    00401BD0                         ;  检查用户名是否为空
      
       还有
      
      0041755A  |.  E8 91BDFEFF   call    004032F0                         ;  判断是否是固定注册码码“141040”
                              
      ***************************************************************************************************************
      
      
      二。算法总结
      
      1、注册码有3组,前2组为固定字符串,与用户名无关。第一组可用注册码“141040”
      
          第二组可用注册码“117445"”
      
      2、第3组注册码由用户名与固定字符串“300”计算而来:
          
        用户名与固定字符串“300”连接后字符串ASCII值之和设为sum,长度设为len,300的16进制为12Ch
      
          (sum-300)乘以(300-len)十进制的值转化为字符串即为对应用户名的注册码
      
      
      ************************************************************************************************************************
      
      三、C算法注册机源代码
      
      #include "stdio.h"
      #include "string.h"
      void main()
      {
              int i,cheng,sum=0,len;
              char name[20];
              scanf("%s",name);
              strcat (name,"300");
              len=strlen(name);
              for (i=0;i<len;i++)
              sum=sum+name;
              cheng=(sum-300)*(300-len);
              printf("%d",cheng);
              system("PAUSE");      
      }

    [ 本帖最后由 qifeon 于 2008-8-6 01:46 编辑 ]

    评分

    参与人数 1威望 +20 飘云币 +40 收起 理由
    tianxj + 20 + 40 您的贴子很精彩,希望能再次分享!

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-8-6 10:41:05 | 显示全部楼层
    /:018 下软件对照学习一下  感谢~~~~~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-11 23:17:21 | 显示全部楼层

    问一下~!!

    你用的是什么插件查找字符串~!!
    我怎么查不到~!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-12-18 12:34
  • 签到天数: 4 天

    [LV.2]偶尔看看I

     楼主| 发表于 2008-9-12 10:02:42 | 显示全部楼层
    原帖由 nv21 于 2008-9-11 23:17 发表
    你用的是什么插件查找字符串~!!
    我怎么查不到~!

    Ultra String Reference 插件,OD 里没有的话,自己找个下载放进去就可以
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2018-3-5 11:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-9-29 10:35:07 | 显示全部楼层
    #include "stdio.h"
      #include "string.h"
      void main()
      {
              int i,cheng,sum=0,len;
              char name[20];
              scanf("%s",name);
              strcat (name,"300");
              len=strlen(name);
              for (i=0;i<len;i++)           
              sum=sum+name; // 请教一下楼主,这里是不是应该是sum=sum+name;啊?
              cheng=(sum-300)*(300-len);
              printf("%d",cheng);
              system("PAUSE");      
      }


    晕,知道了,原来是论坛代码屏蔽了数组后边的下标变量

    [ 本帖最后由 hdy981 于 2008-9-29 10:43 编辑 ]
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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