飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 13905|回复: 59

[原创] Smart Install Maker 5.04算法分析

  [复制链接]
  • TA的每日心情
    慵懒
    2015-8-14 00:08
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    发表于 2015-5-8 16:12:44 | 显示全部楼层 |阅读模式
    本帖最后由 crackvip 于 2015-5-8 16:28 编辑

    【文章标题】: Smart Install Maker 5.04算法分析
    【文章作者】: Crackvip
    【作者主页】: http://www.sminstall.com
    【软件名称】: Smart Install Maker
    【下载地址】: 自己搜索下载
    【保护方式】: 无
    【使用工具】: OD+XP
    【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    --------------------------------------------------------------------------------
    【详细过程】
      一开始是找关键点难,找到关键点了之后是很容易找到算法CALL的

      首先看了下,无壳,直接打开相应目录下的语言文件,
      直接C:\Program Files\Smart Install Maker\Language\Interface\English.lng

      找到这一处
      [Strings]
      ...
      170=Thank you for registering!

      这个就是注册成功的标志,我是怎么知道,呵呵,因为你输错注册码他不会提示你,所以那肯定是正确了才会提示你

      ================================
      好,OD载入软件,直接搜索全部常量,输入0xAA----因为--->>>0xAA=170,所以搜索0xAA






      参考位于 SIM:CODE 到常量 0xAA
      地址       反汇编                                    注释
      ...
      004EF44F   MOV     EDX, 0xAA                         这里就是注册成功的提示
      00505ACC   MOV     EDX, 0xAA
      00505B03   MOV     EDX, 0xAA

      我们看到这三个比较可疑,一个个点进去,看然看上面有没有跳转

      ------------
      第1处
      004EF41B  |.  E8 CCC30100        CALL    SIM.0050B7EC                       ;   
      004EF420  |.  84C0               TEST    AL, AL
      004EF422  |.  74 4B              JE      SHORT SIM.004EF46F                 ;  这里有,直接下断
      004EF424  |.  A1 341F5100        MOV     EAX, DWORD PTR DS:[0x511F34]
      004EF429  |.  C600 01            MOV     BYTE PTR DS:[EAX], 0x1
      004EF42C  |.  A1 7C235100        MOV     EAX, DWORD PTR DS:[0x51237C]
      004EF431  |.  8B55 FC            MOV     EDX, DWORD PTR SS:[EBP-0x4]
      004EF434  |.  E8 F355F1FF        CALL    SIM.00404A2C
      004EF439  |.  E8 32630000        CALL    SIM.004F5770
      004EF43E  |.  6A 40              PUSH    0x40
      004EF440  |.  68 28F54E00        PUSH    SIM.004EF528                       ;  Smart Install Maker
      004EF445  |.  8D4D EC            LEA     ECX, DWORD PTR SS:[EBP-0x14]
      004EF448  |.  A1 A41E5100        MOV     EAX, DWORD PTR DS:[0x511EA4]
      004EF44D  |.  8B00               MOV     EAX, DWORD PTR DS:[EAX]
      004EF44F  |.  BA AA000000        MOV     EDX, 0xAA                          ;  第1处


      ------------
      第2,3处,相隔很近

      00505ABC   . /74 6D              JE      SHORT SIM.00505B2B                 ;  这里有跳,F2下断
      00505ABE   . |B2 01              MOV     DL, 0x1
      00505AC0   . |A1 D8584200        MOV     EAX, DWORD PTR DS:[0x4258D8]       ;  $YB
      00505AC5   . |E8 2E67F2FF        CALL    SIM.0042C1F8
      00505ACA   . |8BF8               MOV     EDI, EAX
      00505ACC   . |BA AA000000        MOV     EDX, 0xAA                          ;  第2处
      00505AD1   . |8BC7               MOV     EAX, EDI
      ...
      00505AFE   . |B9 3A000000        MOV     ECX, 0x3A
      00505B03   . |BA AA000000        MOV     EDX, 0xAA                          ;  第3处


      好,我们F9运行,直接随便输入用户名和注册码,点注册
      断下来了

      断在第1处,,好由此可见,我们找到的第1处是关键

      好,重新标注一下,这次,我们找到断首下断

      004EF3B4  /.  55                 PUSH    EBP                                ;  注册 验证开始
      004EF3B5  |.  8BEC               MOV     EBP, ESP
      004EF3B7  |.  33C9               XOR     ECX, ECX
      004EF3B9  |.  51                 PUSH    ECX
      004EF3BA  |.  51                 PUSH    ECX
      004EF3BB  |.  51                 PUSH    ECX
      004EF3BC  |.  51                 PUSH    ECX
      004EF3BD  |.  51                 PUSH    ECX
      004EF3BE  |.  53                 PUSH    EBX
      004EF3BF  |.  56                 PUSH    ESI
      004EF3C0  |.  8BD8               MOV     EBX, EAX
      004EF3C2  |.  33C0               XOR     EAX, EAX
      004EF3C4  |.  55                 PUSH    EBP
      004EF3C5  |.  68 1AF54E00        PUSH    SIM.004EF51A
      004EF3CA  |.  64:FF30            PUSH    DWORD PTR FS:[EAX]
      004EF3CD  |.  64:8920            MOV     DWORD PTR FS:[EAX], ESP
      004EF3D0  |.  8D55 F4            LEA     EDX, DWORD PTR SS:[EBP-0xC]
      004EF3D3  |.  8B83 F8020000      MOV     EAX, DWORD PTR DS:[EBX+0x2F8]
      004EF3D9  |.  E8 62FDF7FF        CALL    SIM.0046F140                       ;  取用户名
      004EF3DE  |.  8B45 F4            MOV     EAX, DWORD PTR SS:[EBP-0xC]        ;  用户名到EAX
      004EF3E1  |.  8D55 FC            LEA     EDX, DWORD PTR SS:[EBP-0x4]
      004EF3E4  |.  E8 6BFFFFFF        CALL    SIM.004EF354
      004EF3E9  |.  8D55 F0            LEA     EDX, DWORD PTR SS:[EBP-0x10]
      004EF3EC  |.  8B83 FC020000      MOV     EAX, DWORD PTR DS:[EBX+0x2FC]
      004EF3F2  |.  E8 49FDF7FF        CALL    SIM.0046F140                       ;  取假码
      004EF3F7  |.  8B45 F0            MOV     EAX, DWORD PTR SS:[EBP-0x10]
      004EF3FA  |.  8D55 F8            LEA     EDX, DWORD PTR SS:[EBP-0x8]
      004EF3FD  |.  E8 52FFFFFF        CALL    SIM.004EF354                       ;  应该是去首尾空格
      004EF402  |.  837D FC 00         CMP     DWORD PTR SS:[EBP-0x4], 0x0        ;  判断是否输入了用用户名
      004EF406  |.  74 67              JE      SHORT SIM.004EF46F
      004EF408  |.  8B45 F8            MOV     EAX, DWORD PTR SS:[EBP-0x8]
      004EF40B  |.  E8 A458F1FF        CALL    SIM.00404CB4                       ;  注册码长度
      004EF410  |.  83F8 1D            CMP     EAX, 0x1D                          ;  长度0x1D=29
      004EF413  |.  75 5A              JNZ     SHORT SIM.004EF46F                 ;  长度不等于则直接跳出来,这个是长度爆破点
      004EF415  |.  8B55 F8            MOV     EDX, DWORD PTR SS:[EBP-0x8]
      004EF418  |.  8B45 FC            MOV     EAX, DWORD PTR SS:[EBP-0x4]
      004EF41B  |.  E8 CCC30100        CALL    SIM.0050B7EC                       ;  算法CALL,这个算法CALL有两个地方调用了
      004EF420  |.  84C0               TEST    AL, AL
      004EF422  |.  74 4B              JE      SHORT SIM.004EF46F                 ;  等于0,则表示不成功,所以AL必须不等于0
      004EF424  |.  A1 341F5100        MOV     EAX, DWORD PTR DS:[0x511F34]
      004EF429  |.  C600 01            MOV     BYTE PTR DS:[EAX], 0x1
      004EF42C  |.  A1 7C235100        MOV     EAX, DWORD PTR DS:[0x51237C]
      004EF431  |.  8B55 FC            MOV     EDX, DWORD PTR SS:[EBP-0x4]
      004EF434  |.  E8 F355F1FF        CALL    SIM.00404A2C
      004EF439  |.  E8 32630000        CALL    SIM.004F5770
      004EF43E  |.  6A 40              PUSH    0x40
      004EF440  |.  68 28F54E00        PUSH    SIM.004EF528                       ;  Smart Install Maker
      004EF445  |.  8D4D EC            LEA     ECX, DWORD PTR SS:[EBP-0x14]
      004EF448  |.  A1 A41E5100        MOV     EAX, DWORD PTR DS:[0x511EA4]
      004EF44D  |.  8B00               MOV     EAX, DWORD PTR DS:[EAX]
      004EF44F  |.  BA AA000000        MOV     EDX, 0xAA                          ;  这里就是注册成功的提示
      004EF454  |.  8B30               MOV     ESI, DWORD PTR DS:[EAX]

      =================================
      我们判断004EF41B  |.  E8 CCC30100        CALL    SIM.0050B7EC 这处应该是算法CALL,所以,在此下断,F7跟进

      0050B7EC  /$  55                 PUSH    EBP                                ;  算法CALL
      0050B7ED  |.  8BEC               MOV     EBP, ESP
      0050B7EF  |.  83C4 C0            ADD     ESP, -0x40
      0050B7F2  |.  53                 PUSH    EBX
      0050B7F3  |.  56                 PUSH    ESI
      0050B7F4  |.  57                 PUSH    EDI
      0050B7F5  |.  8955 F8            MOV     DWORD PTR SS:[EBP-0x8], EDX
      0050B7F8  |.  8945 FC            MOV     DWORD PTR SS:[EBP-0x4], EAX
      0050B7FB  |.  8B45 FC            MOV     EAX, DWORD PTR SS:[EBP-0x4]
      0050B7FE  |.  E8 A196EFFF        CALL    SIM.00404EA4
      0050B803  |.  8B45 F8            MOV     EAX, DWORD PTR SS:[EBP-0x8]
      0050B806  |.  E8 9996EFFF        CALL    SIM.00404EA4
      0050B80B  |.  33C0               XOR     EAX, EAX
      0050B80D  |.  55                 PUSH    EBP
      0050B80E  |.  68 A4BA5000        PUSH    SIM.0050BAA4
      0050B813  |.  64:FF30            PUSH    DWORD PTR FS:[EAX]
      0050B816  |.  64:8920            MOV     DWORD PTR FS:[EAX], ESP
      0050B819  |.  BB 19000000        MOV     EBX, 0x19
      0050B81E  |>  8BC3               /MOV     EAX, EBX
      0050B820  |.  04 41              |ADD     AL, 0x41
      0050B822  |.  BA 19000000        |MOV     EDX, 0x19
      0050B827  |.  2BD3               |SUB     EDX, EBX
      0050B829  |.  884415 C0          |MOV     BYTE PTR SS:[EBP+EDX-0x40], AL    ;  ZYX
      0050B82D  |.  4B                 |DEC     EBX
      0050B82E  |.  83FB FF            |CMP     EBX, -0x1
      0050B831  |.^ 75 EB              \JNZ     SHORT SIM.0050B81E                ;   Z-A,动态生成字母表,Z-A
      0050B833  |.  33DB               XOR     EBX, EBX
      0050B835  |.  8D45 DA            LEA     EAX, DWORD PTR SS:[EBP-0x26]
      0050B838  |>  8BD3               /MOV     EDX, EBX
      0050B83A  |.  80C2 30            |ADD     DL, 0x30
      0050B83D  |.  8810               |MOV     BYTE PTR DS:[EAX], DL
      0050B83F  |.  43                 |INC     EBX
      0050B840  |.  40                 |INC     EAX
      0050B841  |.  83FB 0A            |CMP     EBX, 0xA
      0050B844  |.^ 75 F2              \JNZ     SHORT SIM.0050B838                ;  动态生成数字表0-9
      0050B846  |.  8B45 FC            MOV     EAX, DWORD PTR SS:[EBP-0x4]        ;  用户名到EAX
      0050B849  |.  E8 6694EFFF        CALL    SIM.00404CB4                       ;  用户名长度
      0050B84E  |.  8945 F4            MOV     DWORD PTR SS:[EBP-0xC], EAX
      0050B851  |.  33FF               XOR     EDI, EDI                           ;  EDI清零了
      0050B853  |.  33C0               XOR     EAX, EAX
      0050B855  |.  8945 EC            MOV     DWORD PTR SS:[EBP-0x14], EAX       ;  这里置0了
      0050B858  |.  33C0               XOR     EAX, EAX
      0050B85A  |.  8945 E8            MOV     DWORD PTR SS:[EBP-0x18], EAX
      0050B85D  |.  C745 E4 01000000   MOV     DWORD PTR SS:[EBP-0x1C], 0x1       ;  [EBP-0x1C]= 0x1
      0050B864  |.  BB 01000000        MOV     EBX, 0x1                           ;  计数器置1
      0050B869  |>  8BC3               /MOV     EAX, EBX
      0050B86B  |.  B9 06000000        |MOV     ECX, 0x6
      0050B870  |.  33D2               |XOR     EDX, EDX
      0050B872  |.  F7F1               |DIV     ECX
      0050B874  |.  85D2               |TEST    EDX, EDX                          ;  这里是MOD 6 之后的数,也就是说,是6的倍就,则跳过
      0050B876  |.  0F84 8D000000      |JE      SIM.0050B909
      0050B87C  |.  47                 |INC     EDI                               ;  这里将EDI加了1,也就是说,这个EDI最大可以到25,但这里在下面有个条件,如果你的这个数,大于用户名的长度,则又从0开始计算,因为6的倍数跳过,不累加
      0050B87D  |.  8B45 FC            |MOV     EAX, DWORD PTR SS:[EBP-0x4]       ;  用户名到EAX
      0050B880  |.  0FB67438 FF        |MOVZX   ESI, BYTE PTR DS:[EAX+EDI-0x1]    ;  逐字取ASCII,顺序取
      0050B885  |.  0175 E8            |ADD     DWORD PTR SS:[EBP-0x18], ESI      ;  相加
      0050B888  |.  83FB 05            |CMP     EBX, 0x5                          ;  这个EBX是,1-0x1E的循环,判断EBX是不是前5位
      0050B88B  |.  76 65              |JBE     SHORT SIM.0050B8F2                ;  不高于5则跳
      0050B88D  |.  83FB 19            |CMP     EBX, 0x19                         ;  判断是不是高于0x19
      0050B890  |.  73 60              |JNB     SHORT SIM.0050B8F2                ;  不低于则跳
      0050B892  |.  8B45 F4            |MOV     EAX, DWORD PTR SS:[EBP-0xC]       ;  前5位和0x19位后面的计算方法一样
      0050B895  |.  8B55 F4            |MOV     EDX, DWORD PTR SS:[EBP-0xC]       ;  用户名长度到EAX.EDX
      0050B898  |.  2BD7               |SUB     EDX, EDI                          ;  这句和下面这句的意思联起来就是0-EDI
      0050B89A  |.  2BD0               |SUB     EDX, EAX                          ;  上一行的这个EDI就是上面的累加的,非6的倍数的,下面又一个循环
      0050B89C  |.  77 26              |JA      SHORT SIM.0050B8C4                ;  高于则跳,这是一个无符号的比较,我的理解是大于0,则跳,有符号的话就是负数
      0050B89E  |.  4A                 |DEC     EDX                               ;  减1,这里相当于0-EDI-1
      0050B89F  |.  92                 |XCHG    EAX, EDX                          ;  交换位置
      0050B8A0  |.  8955 F0            |MOV     DWORD PTR SS:[EBP-0x10], EDX      ;  用户名 长度到[EBP-0x10]
      0050B8A3  |>  8B55 FC            |/MOV     EDX, DWORD PTR SS:[EBP-0x4]      ;  用户名到EDX
      0050B8A6  |.  8B4D F0            ||MOV     ECX, DWORD PTR SS:[EBP-0x10]     ;  [EBP-0x10]在下面递减
      0050B8A9  |.  0FB6540A FF        ||MOVZX   EDX, BYTE PTR DS:[EDX+ECX-0x1]   ;  逐位取,从后往前取ASCII
      0050B8AE  |.  03D6               ||ADD     EDX, ESI                         ;  相加,加上上面计算得到的ASCII的数
      0050B8B0  |.  8D4C1F 07          ||LEA     ECX, DWORD PTR DS:[EDI+EBX+0x7]
      0050B8B4  |.  03F1               ||ADD     ESI, ECX                         ;  又相加,ESI+EDI+EBX+7,这个EDI是除6倍数以外的1-0x1E循环的数,而EBX就是1-0x1E循环的数,ESI是上面循环得到的字母的ASC
      0050B8B6  |.  0FAF75 F4          ||IMUL    ESI, DWORD PTR SS:[EBP-0xC]      ;  上一行计算得到的数乘以长度
      0050B8BA  |.  03D6               ||ADD     EDX, ESI                         ;  再与上面0050B8AE 处得到的EDX
      0050B8BC  |.  8BF2               ||MOV     ESI, EDX                         ;  把EDX和ESI的数据复制成一样
      0050B8BE  |.  FF4D F0            ||DEC     DWORD PTR SS:[EBP-0x10]          ;  用户名长度-1
      0050B8C1  |.  40                 ||INC     EAX                              ;  这个EAx就是上面的0-EDI-1,直接+1,加到溢出为0,则跳出循环
      0050B8C2  |.^ 75 DF              |\JNZ     SHORT SIM.0050B8A3               ;  这里又是一个循环,判断EAX是否为0
      0050B8C4  |>  8BC6               |MOV     EAX, ESI                          ;  上面是补位不?逆向取
      0050B8C6  |.  B9 23000000        |MOV     ECX, 0x23                         ;  除数
      0050B8CB  |.  33D2               |XOR     EDX, EDX
      0050B8CD  |.  F7F1               |DIV     ECX                               ;  DIV计算
      0050B8CF  |.  8BF2               |MOV     ESI, EDX                          ;  余数到ESI
      0050B8D1  |.  8D55 C0            |LEA     EDX, DWORD PTR SS:[EBP-0x40]      ;  第一步计算出来的Z-A0-9的字串
      0050B8D4  |.  8B45 F8            |MOV     EAX, DWORD PTR SS:[EBP-0x8]       ;  假码到EAX
      0050B8D7  |.  8A4418 FF          |MOV     AL, BYTE PTR DS:[EAX+EBX-0x1]     ;  假码第2部分第1位
      0050B8DB  |.  B9 23000000        |MOV     ECX, 0x23
      0050B8E0  |.  E8 ABF4FFFF        |CALL    SIM.0050AD90                      ;  在串码里找相应的位置,取出相应的字母
      0050B8E5  |.  3BF0               |CMP     ESI, EAX                          ;  是否为第6的位置的字母,这里是注册码的第2组到第4组
      0050B8E7  |.  0F94C0             |SETE    AL                                ;  判断我们输入的假码是否有其相同,是则在下面累加个数
      0050B8EA  |.  25 FF000000        |AND     EAX, 0xFF                         ;  and FF
      0050B8EF  |.  0145 EC            |ADD     DWORD PTR SS:[EBP-0x14], EAX      ;  相加,这个相加很关键,因为这里判断有注册码有几位与算出来的是一样的,是则加1,不是则加0
      0050B8F2  |>  83FE 01            |CMP     ESI, 0x1                          ;  这个ESI就有两个意思了,如果是从顶上跳下来的,则为ASCII,如果是顺序下来的,则是
      0050B8F5  |.  76 08              |JBE     SHORT SIM.0050B8FF                ;  不高于 1则跳到下一位
      0050B8F7  |.  4E                 |DEC     ESI                               ;  ESI-1
      0050B8F8  |.  0FAF75 E4          |IMUL    ESI, DWORD PTR SS:[EBP-0x1C]      ;  -1相乘
      0050B8FC  |.  8975 E4            |MOV     DWORD PTR SS:[EBP-0x1C], ESI
      0050B8FF  |>  8B45 F4            |MOV     EAX, DWORD PTR SS:[EBP-0xC]       ;  假码长度到EAX, 这个也很关键
      0050B902  |.  48                 |DEC     EAX                               ;  用户名长度-1
      0050B903  |.  3BF8               |CMP     EDI, EAX                          ;  也就是说,当循环的EDI长度大于注册码长度时,则置0,从第1位开始取,这里的0代表第1位
      0050B905  |.  72 02              |JB      SHORT SIM.0050B909
      0050B907  |.  33FF               |XOR     EDI, EDI                          ;  清零
      0050B909  |>  43                 |INC     EBX                               ;  计数器加1
      0050B90A  |.  83FB 1E            |CMP     EBX, 0x1E                         ;  长度1E=30,循环,其中6的倍数去除
      0050B90D  |.^ 0F85 56FFFFFF      \JNZ     SIM.0050B869                      ;  1-30,6,12,18,24,30,共计5个是6的倍数,所以最多循环计算可得出25个数据
      0050B913  |.  8B45 E4            MOV     EAX, DWORD PTR SS:[EBP-0x1C]       ;  以下为计算第一组和第五组注册码,这里要用到三个数,即,算码出来的累加和,累积和,以及用户名的长度
      0050B916  |.  03C7               ADD     EAX, EDI                           ;  [ebp-0x1c]这个为累积
      0050B918  |.  83C0 02            ADD     EAX, 0x2                           ;  加上上面的EDI,再+2,除0x23求余数,然后找字母
      0050B91B  |.  B9 23000000        MOV     ECX, 0x23                          ;  下面的基本上是一样的,关键是要算出上面的数,才可以计算后面的位置
      0050B920  |.  33D2               XOR     EDX, EDX
      0050B922  |.  F7F1               DIV     ECX                                ;  余数
      0050B924  |.  8A4415 C0          MOV     AL, BYTE PTR SS:[EBP+EDX-0x40]
      0050B928  |.  8B55 F8            MOV     EDX, DWORD PTR SS:[EBP-0x8]
      0050B92B  |.  3A02               CMP     AL, BYTE PTR DS:[EDX]              ;  T
      0050B92D  |.  0F94C0             SETE    AL
      0050B930  |.  83E0 7F            AND     EAX, 0x7F
      0050B933  |.  0145 EC            ADD     DWORD PTR SS:[EBP-0x14], EAX
      0050B936  |.  8B45 E4            MOV     EAX, DWORD PTR SS:[EBP-0x1C]
      0050B939  |.  8D0440             LEA     EAX, DWORD PTR DS:[EAX+EAX*2]
      0050B93C  |.  B9 23000000        MOV     ECX, 0x23
      0050B941  |.  33D2               XOR     EDX, EDX
      0050B943  |.  F7F1               DIV     ECX
      0050B945  |.  8A4415 C0          MOV     AL, BYTE PTR SS:[EBP+EDX-0x40]     ;  Z
      0050B949  |.  8B55 F8            MOV     EDX, DWORD PTR SS:[EBP-0x8]
      0050B94C  |.  3A42 01            CMP     AL, BYTE PTR DS:[EDX+0x1]
      0050B94F  |.  0F94C0             SETE    AL
      0050B952  |.  83E0 7F            AND     EAX, 0x7F
      0050B955  |.  0145 EC            ADD     DWORD PTR SS:[EBP-0x14], EAX
      0050B958  |.  8B45 E4            MOV     EAX, DWORD PTR SS:[EBP-0x1C]
      0050B95B  |.  F7EF               IMUL    EDI
      0050B95D  |.  6BC0 0B            IMUL    EAX, EAX, 0xB
      0050B960  |.  B9 23000000        MOV     ECX, 0x23
      0050B965  |.  33D2               XOR     EDX, EDX
      0050B967  |.  F7F1               DIV     ECX
      0050B969  |.  8A4415 C0          MOV     AL, BYTE PTR SS:[EBP+EDX-0x40]     ;  这个地址是怎么来的呢?
      0050B96D  |.  8B55 F8            MOV     EDX, DWORD PTR SS:[EBP-0x8]
      0050B970  |.  3A42 02            CMP     AL, BYTE PTR DS:[EDX+0x2]          ;  Z
      0050B973  |.  0F94C0             SETE    AL
      0050B976  |.  83E0 7F            AND     EAX, 0x7F
      0050B979  |.  0145 EC            ADD     DWORD PTR SS:[EBP-0x14], EAX       ;  这里就11了
      0050B97C  |.  8B45 E4            MOV     EAX, DWORD PTR SS:[EBP-0x1C]
      0050B97F  |.  F76D F4            IMUL    DWORD PTR SS:[EBP-0xC]
      0050B982  |.  83C0 0D            ADD     EAX, 0xD
      0050B985  |.  B9 23000000        MOV     ECX, 0x23
      0050B98A  |.  33D2               XOR     EDX, EDX
      0050B98C  |.  F7F1               DIV     ECX
      0050B98E  |.  8A4415 C0          MOV     AL, BYTE PTR SS:[EBP+EDX-0x40]     ;  M
      0050B992  |.  8B55 F8            MOV     EDX, DWORD PTR SS:[EBP-0x8]
      0050B995  |.  3A42 03            CMP     AL, BYTE PTR DS:[EDX+0x3]
      0050B998  |.  0F94C0             SETE    AL
      0050B99B  |.  83E0 7F            AND     EAX, 0x7F
      0050B99E  |.  0145 EC            ADD     DWORD PTR SS:[EBP-0x14], EAX
      0050B9A1  |.  8B45 E4            MOV     EAX, DWORD PTR SS:[EBP-0x1C]
      0050B9A4  |.  03C0               ADD     EAX, EAX
      0050B9A6  |.  03C7               ADD     EAX, EDI
      0050B9A8  |.  83E8 03            SUB     EAX, 0x3
      0050B9AB  |.  B9 23000000        MOV     ECX, 0x23
      0050B9B0  |.  33D2               XOR     EDX, EDX
      0050B9B2  |.  F7F1               DIV     ECX
      0050B9B4  |.  8A4415 C0          MOV     AL, BYTE PTR SS:[EBP+EDX-0x40]     ;  Y
      0050B9B8  |.  8B55 F8            MOV     EDX, DWORD PTR SS:[EBP-0x8]
      0050B9BB  |.  3A42 04            CMP     AL, BYTE PTR DS:[EDX+0x4]
      0050B9BE  |.  0F94C0             SETE    AL
      0050B9C1  |.  83E0 7F            AND     EAX, 0x7F
      0050B9C4  |.  0145 EC            ADD     DWORD PTR SS:[EBP-0x14], EAX
      0050B9C7  |.  8B45 E8            MOV     EAX, DWORD PTR SS:[EBP-0x18]
      0050B9CA  |.  8D0440             LEA     EAX, DWORD PTR DS:[EAX+EAX*2]
      0050B9CD  |.  83C0 1B            ADD     EAX, 0x1B
      0050B9D0  |.  B9 23000000        MOV     ECX, 0x23
      0050B9D5  |.  33D2               XOR     EDX, EDX
      0050B9D7  |.  F7F1               DIV     ECX
      0050B9D9  |.  8A4415 C0          MOV     AL, BYTE PTR SS:[EBP+EDX-0x40]     ;  前面的为第一组注册码TZZMY
      0050B9DD  |.  8B55 F8            MOV     EDX, DWORD PTR SS:[EBP-0x8]        ;  C
      0050B9E0  |.  3A42 18            CMP     AL, BYTE PTR DS:[EDX+0x18]         ;  最后一组的第1位
      0050B9E3  |.  0F94C0             SETE    AL
      0050B9E6  |.  83E0 7F            AND     EAX, 0x7F
      0050B9E9  |.  0145 EC            ADD     DWORD PTR SS:[EBP-0x14], EAX
      0050B9EC  |.  8B45 E8            MOV     EAX, DWORD PTR SS:[EBP-0x18]
      0050B9EF  |.  C1E0 03            SHL     EAX, 0x3
      0050B9F2  |.  83E8 02            SUB     EAX, 0x2
      0050B9F5  |.  B9 23000000        MOV     ECX, 0x23
      0050B9FA  |.  33D2               XOR     EDX, EDX
      0050B9FC  |.  F7F1               DIV     ECX
      0050B9FE  |.  8A4415 C0          MOV     AL, BYTE PTR SS:[EBP+EDX-0x40]
      0050BA02  |.  8B55 F8            MOV     EDX, DWORD PTR SS:[EBP-0x8]        ;  8
      0050BA05  |.  3A42 19            CMP     AL, BYTE PTR DS:[EDX+0x19]         ;  最后一组第2位 8
      0050BA08  |.  0F94C0             SETE    AL
      0050BA0B  |.  83E0 7F            AND     EAX, 0x7F
      0050BA0E  |.  0145 EC            ADD     DWORD PTR SS:[EBP-0x14], EAX
      0050BA11  |.  8B45 E8            MOV     EAX, DWORD PTR SS:[EBP-0x18]
      0050BA14  |.  F76D F4            IMUL    DWORD PTR SS:[EBP-0xC]
      0050BA17  |.  03C0               ADD     EAX, EAX
      0050BA19  |.  8D0440             LEA     EAX, DWORD PTR DS:[EAX+EAX*2]
      0050BA1C  |.  B9 23000000        MOV     ECX, 0x23
      0050BA21  |.  33D2               XOR     EDX, EDX
      0050BA23  |.  F7F1               DIV     ECX
      0050BA25  |.  8A4415 C0          MOV     AL, BYTE PTR SS:[EBP+EDX-0x40]     ;  T
      0050BA29  |.  8B55 F8            MOV     EDX, DWORD PTR SS:[EBP-0x8]
      0050BA2C  |.  3A42 1A            CMP     AL, BYTE PTR DS:[EDX+0x1A]
      0050BA2F  |.  0F94C0             SETE    AL
      0050BA32  |.  83E0 7F            AND     EAX, 0x7F
      0050BA35  |.  0145 EC            ADD     DWORD PTR SS:[EBP-0x14], EAX
      0050BA38  |.  8B45 E8            MOV     EAX, DWORD PTR SS:[EBP-0x18]
      0050BA3B  |.  0345 F4            ADD     EAX, DWORD PTR SS:[EBP-0xC]
      0050BA3E  |.  83C0 04            ADD     EAX, 0x4
      0050BA41  |.  B9 23000000        MOV     ECX, 0x23
      0050BA46  |.  33D2               XOR     EDX, EDX
      0050BA48  |.  F7F1               DIV     ECX
      0050BA4A  |.  8A4415 C0          MOV     AL, BYTE PTR SS:[EBP+EDX-0x40]     ;  8
      0050BA4E  |.  8B55 F8            MOV     EDX, DWORD PTR SS:[EBP-0x8]
      0050BA51  |.  3A42 1B            CMP     AL, BYTE PTR DS:[EDX+0x1B]
      0050BA54  |.  0F94C0             SETE    AL
      0050BA57  |.  83E0 7F            AND     EAX, 0x7F
      0050BA5A  |.  0145 EC            ADD     DWORD PTR SS:[EBP-0x14], EAX       ;  最后一个数要算到0x18
      0050BA5D  |.  8B45 E8            MOV     EAX, DWORD PTR SS:[EBP-0x18]
      0050BA60  |.  8D0440             LEA     EAX, DWORD PTR DS:[EAX+EAX*2]
      0050BA63  |.  83C0 13            ADD     EAX, 0x13
      0050BA66  |.  B9 23000000        MOV     ECX, 0x23
      0050BA6B  |.  33D2               XOR     EDX, EDX
      0050BA6D  |.  F7F1               DIV     ECX
      0050BA6F  |.  8A4415 C0          MOV     AL, BYTE PTR SS:[EBP+EDX-0x40]
      0050BA73  |.  8B55 F8            MOV     EDX, DWORD PTR SS:[EBP-0x8]
      0050BA76  |.  3A42 1C            CMP     AL, BYTE PTR DS:[EDX+0x1C]         ;  K
      0050BA79  |.  0F94C0             SETE    AL
      0050BA7C  |.  83E0 7F            AND     EAX, 0x7F                          ;  这里计算出来的数据要比较?
      0050BA7F  |.  0145 EC            ADD     DWORD PTR SS:[EBP-0x14], EAX
      0050BA82  |.  837D EC 19         CMP     DWORD PTR SS:[EBP-0x14], 0x19      ;  那就是这里的长度了,判断有几个字母与其是相同的,如果有0x19位相同,则表示成功,否则就不成功
      0050BA86  |.  0F94C3             SETE    BL                                 ;  那么,其实这就是一个爆破点,你只要把这里的94改95就可以爆破
      0050BA89  |.  33C0               XOR     EAX, EAX
      0050BA8B  |.  5A                 POP     EDX
      0050BA8C  |.  59                 POP     ECX
      0050BA8D  |.  59                 POP     ECX
      0050BA8E  |.  64:8910            MOV     DWORD PTR FS:[EAX], EDX
      0050BA91  |.  68 ABBA5000        PUSH    SIM.0050BAAB
      0050BA96  |>  8D45 F8            LEA     EAX, DWORD PTR SS:[EBP-0x8]
      0050BA99  |.  BA 02000000        MOV     EDX, 0x2
      0050BA9E  |.  E8 598FEFFF        CALL    SIM.004049FC                       ;  这个CALL基本上不用看
      0050BAA3  \.  C3                 RETN
      0050BAA4   .^ E9 0B89EFFF        JMP     SIM.004043B4
      0050BAA9   .^ EB EB              JMP     SHORT SIM.0050BA96
      0050BAAB   .  8BC3               MOV     EAX, EBX                           ;  这里就是把上面是否注册成功的标志给了EAX,用EAX来判断是否成功,当然你在这里爆破也是一样的,只要将它置0就可以
      0050BAAD   .  5F                 POP     EDI
      0050BAAE   .  5E                 POP     ESI
      0050BAAF   .  5B                 POP     EBX
      0050BAB0   .  8BE5               MOV     ESP, EBP
      0050BAB2   .  5D                 POP     EBP
      0050BAB3   .  C3                 RETN







    --------------------------------------------------------------------------------
    【经验总结】
      总结嘛,其实是有点晕的,因为里面有很多个循环,这里我上传我写的算法工具,在把计算过程输出来,供你一起研究

    --------------------------------------------------------------------------------
    【版权声明】: 本文原创于Crackvip, 转载请注明作者并保持文章的完整, 谢谢!

                                                           2015年05月07日 23:44:05


    QQ截图20150508155735.jpg


    游客,如果您要查看本帖隐藏内容请回复




    评分

    参与人数 4威望 +40 飘云币 +56 收起 理由
    boyving + 4 现在还不会写这么难的。。。学习一下。谢谢.
    GGLHY + 20 + 40 好有才的妹子!
    GeekCat + 8 + 8 很给力!
    speedboy + 8 + 8 我现在越来越喜欢你了,哈哈

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2015-8-14 00:08
  • 签到天数: 25 天

    [LV.4]偶尔看看III

     楼主| 发表于 2015-5-8 16:14:03 | 显示全部楼层
    沙发是我的。。GGLHY你别抢

    点评

    我不抢你的沙发,我只抢妹子 真心赞一个了!  详情 回复 发表于 2015-5-8 17:20
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-11-20 21:29
  • 签到天数: 44 天

    [LV.5]常住居民I

    发表于 2015-5-8 16:16:14 | 显示全部楼层
    永远坐在你腿上!我是来学习的!
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 1668 天

    [LV.Master]伴坛终老

    发表于 2015-5-8 16:20:37 | 显示全部楼层
    感谢分享,慢慢学习
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-5-6 15:56
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-5-8 16:45:40 | 显示全部楼层
    感谢分享,慢慢学习
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    8 小时前
  • 签到天数: 1457 天

    [LV.10]以坛为家III

    发表于 2015-5-8 17:02:01 | 显示全部楼层
    我现在越来越喜欢你了,哈哈
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2015-10-9 11:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-5-8 17:11:00 | 显示全部楼层
    学习了,谢谢分享
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2024-1-15 11:56
  • 签到天数: 437 天

    [LV.9]以坛为家II

    发表于 2015-5-8 17:16:43 | 显示全部楼层
    看上去好复杂的算法{:soso_e134:}
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-23 23:49
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2015-5-8 17:20:34 | 显示全部楼层
    crackvip 发表于 2015-5-8 16:14
    沙发是我的。。GGLHY你别抢

    我不抢你的沙发,我只抢妹子{:soso_e120:}

    真心赞一个了!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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