飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4837|回复: 12

[原创] 2006年PYG作业验证算法分析

[复制链接]

该用户从未签到

发表于 2007-6-4 20:24:04 | 显示全部楼层 |阅读模式
【文章标题】: 2006年PYG作业验证算法分析
【文章作者】: 千里之外
【作者邮箱】: 1986.1024@163.com
【作者主页】: www.wm5.net.cn
【作者QQ号】: 506398911
【软件名称】: PYG5.4Crackers作业验证之CrackMe
【加壳方式】: UPX
【保护方式】: 注册码
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: PEID OD
【操作平台】: WINXP2
【作者声明】: 谢谢 fonge大哥的热心指导 没有你 我也许离写出算法还很远 再次感谢 祝好人一生平安
--------------------------------------------------------------------------------
【详细过程】
  大家好 我是千里之外  这个CrackMe 字符做了加密处理 可以用DEDE 找到确定按钮 然后找到关键算法
  
  
  00468100  /.  55            PUSH EBP
  00468101  |.  8BEC          MOV EBP,ESP
  00468103  |.  33C9          XOR ECX,ECX
  00468105  |.  51            PUSH ECX
  00468106  |.  51            PUSH ECX
  00468107  |.  51            PUSH ECX
  00468108  |.  51            PUSH ECX
  00468109  |.  51            PUSH ECX
  0046810A  |.  51            PUSH ECX
  0046810B  |.  51            PUSH ECX
  0046810C  |.  53            PUSH EBX
  0046810D  |.  56            PUSH ESI
  0046810E  |.  8BD8          MOV EBX,EAX
  00468110  |.  33C0          XOR EAX,EAX
  00468112  |.  55            PUSH EBP
  00468113  |.  68 14824600   PUSH PYG5_4Cr.00468214
  00468118  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
  0046811B  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
  0046811E  |.  8D55 FC       LEA EDX,DWORD PTR SS:[EBP-4]
  00468121  |.  8B83 10030000 MOV EAX,DWORD PTR DS:[EBX+310]
  00468127  |.  E8 ECBBFCFF   CALL PYG5_4Cr.00433D18                   ;  用户名位数
  0046812C  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
  0046812F  |.  8B83 14030000 MOV EAX,DWORD PTR DS:[EBX+314]
  00468135  |.  E8 DEBBFCFF   CALL PYG5_4Cr.00433D18
  0046813A  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  注册码位数
  0046813D  |.  E8 CABFF9FF   CALL PYG5_4Cr.0040410C
  00468142  |.  8BF0          MOV ESI,EAX
  00468144  |.  837D FC 00    CMP DWORD PTR SS:[EBP-4],0
  00468148  |.  74 7E         JE SHORT PYG5_4Cr.004681C8               ;  没填就跳走
  0046814A  |.  837D F8 00    CMP DWORD PTR SS:[EBP-8],0
  0046814E  |.  74 78         JE SHORT PYG5_4Cr.004681C8
  00468150  |.  83C6 08       ADD ESI,8                                ;  esi=用户名位数+8=4+8=c
  00468153  |.  83EE 06       SUB ESI,6                                ;  esi=c-6=6
  00468156  |.  8BC6          MOV EAX,ESI                              ;  eax=esi=6
  00468158  |.  C1E0 0A       SHL EAX,0A                               ;  eax左移a=1800
  0046815B  |.  B9 36000000   MOV ECX,36                               ;  ecx=36
  00468160  |.  99            CDQ
  00468161  |.  F7F9          IDIV ECX                                 ;  eax=1800/36取商 71
  00468163  |.  8BF0          MOV ESI,EAX                              ;   esi=71
  00468165  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
  00468168  |.  8B83 14030000 MOV EAX,DWORD PTR DS:[EBX+314]
  0046816E  |.  E8 A5BBFCFF   CALL PYG5_4Cr.00433D18                   ;  注册码位数
  00468173  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]             ;  注册码送EAX
  00468176  |.  50            PUSH EAX
  00468177  |.  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
  0046817A  |.  8BC6          MOV EAX,ESI                              ;  EAX=71
  0046817C  |.  E8 C3FBF9FF   CALL PYG5_4Cr.00407D44                   ;  算法CALL
  00468181  |.  8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]
  00468184  |.  58            POP EAX                                  ;  
  00468185  |.  E8 CEC0F9FF   CALL PYG5_4Cr.00404258          113 真码
  0046818A  |.  75 1E         JNZ SHORT PYG5_4Cr.004681AA
  0046818C  |.  A1 D8A64600   MOV EAX,DWORD PTR DS:[46A6D8]
  00468191  |.  E8 76C1F9FF   CALL PYG5_4Cr.0040430C
  00468196  |.  8BD0          MOV EDX,EAX
  00468198  |.  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]
  0046819B  |.  E8 A4BEF9FF   CALL PYG5_4Cr.00404044
  004681A0  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]
  004681A3  |.  E8 B8F5FBFF   CALL PYG5_4Cr.00427760
  004681A8  |.  EB 3A         JMP SHORT PYG5_4Cr.004681E4
  004681AA  |>  A1 D4A64600   MOV EAX,DWORD PTR DS:[46A6D4]
  004681AF  |.  E8 58C1F9FF   CALL PYG5_4Cr.0040430C
  004681B4  |.  8BD0          MOV EDX,EAX
  004681B6  |.  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]
  004681B9  |.  E8 86BEF9FF   CALL PYG5_4Cr.00404044
  004681BE  |.  8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]
  004681C1  |.  E8 9AF5FBFF   CALL PYG5_4Cr.00427760                   ;  注册码错误
  004681C6  |.  EB 1C         JMP SHORT PYG5_4Cr.004681E4
  004681C8  |>  A1 D0A64600   MOV EAX,DWORD PTR DS:[46A6D0]
  
  第一个CALL
  00407D44    56              PUSH ESI                                 ; 71 为字符 q
  00407D45    89E6            MOV ESI,ESP
  00407D47    83EC 10         SUB ESP,10
  00407D4A    31C9            XOR ECX,ECX
  00407D4C    52              PUSH EDX
  00407D4D    31D2            XOR EDX,EDX
  00407D4F    E8 A4FFFFFF     CALL PYG5_4Cr.00407CF8                   ; 113q  算法CALL
  00407D54    89F2            MOV EDX,ESI
  00407D56    58              POP EAX
  00407D57    E8 E0C1FFFF     CALL PYG5_4Cr.00403F3C
  00407D5C    83C4 10         ADD ESP,10
  
  算法CALL
  00407CF8    08C9            OR CL,CL
  00407CFA    75 17           JNZ SHORT PYG5_4Cr.00407D13
  00407CFC    09C0            OR EAX,EAX
  00407CFE    79 0E           JNS SHORT PYG5_4Cr.00407D0E
  00407D00    F7D8            NEG EAX
  00407D02    E8 07000000     CALL PYG5_4Cr.00407D0E
  00407D07    B0 2D           MOV AL,2D
  00407D09    41              INC ECX
  00407D0A    4E              DEC ESI
  00407D0B    8806            MOV BYTE PTR DS:[ESI],AL
  00407D0D    C3              RETN
  00407D0E    B9 0A000000     MOV ECX,0A                               ; ecx=0a
  00407D13    52              PUSH EDX
  00407D14    56              PUSH ESI                                 ; 每步的商参与下次运算 直到商为0
  00407D15    31D2            XOR EDX,EDX                              ; eax=71
  00407D17    F7F1            DIV ECX                                  ; 71/oa  余数送DL=3  1  1
  00407D19    4E              DEC ESI
  00407D1A    80C2 30         ADD DL,30                                ; DL=3+30=33(字符3)  1+30=31(字符1)  1+30=31(字符1)
  00407D1D    80FA 3A         CMP DL,3A
  00407D20    72 03           JB SHORT PYG5_4Cr.00407D25
  00407D22    80C2 07         ADD DL,7
  00407D25    8816            MOV BYTE PTR DS:[ESI],DL                 ; 字符113 就是真码
  00407D27    09C0            OR EAX,EAX
  00407D29  ^ 75 EA           JNZ SHORT PYG5_4Cr.00407D15
  00407D2B    59              POP ECX
  00407D2C    5A              POP EDX
  
  
--------------------------------------------------------------------------------
【经验总结】
  我的试练码 hack   123456789
  
  1.用户名长度+8-6后左移a 结果为 1800
  2.1800/36 取商 71
  3.71/A  商B 余数 3  3+30=33取字符3
    B/A   商1 余数 1  1+30=31取字符1
    1/A   商0 余数 1  1+30=31取字符1
  即每步的商参与下次运算 直到商为0
  
  113 即为注册码
  
--------------------------------------------------------------------------------
【版权声明】: 谢谢 fonge大哥的热心指导 没有你 我也许离写出算法还很远 再次感谢 祝好人一生平安

                                                       2007年06月04日 20:22:36

[ 本帖最后由 千里之外 于 2007-6-5 08:37 编辑 ]

PYG5.4Crackers作业验证之CrackMe.rar

217.25 KB, 下载次数: 35, 下载积分: 飘云币 -2 枚

PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-2-17 18:27
  • 签到天数: 33 天

    [LV.5]常住居民I

    发表于 2007-6-4 21:07:58 | 显示全部楼层
    先顶你一个,再看
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-2-17 18:27
  • 签到天数: 33 天

    [LV.5]常住居民I

    发表于 2007-6-4 21:28:08 | 显示全部楼层
    终于搞懂了,谢了!
    另纠正一些错误
    0046817C  |.  E8 C3FBF9FF   CALL PYG5_4Cr.00407D44                   ;  算法CALL
      00468181  |.  8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]
      00468184  |.  58            POP EAX                                  ;  113 真码

    此时POP EAX      EAX  此是是假码 ,真码在EDX中
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-2-17 18:27
  • 签到天数: 33 天

    [LV.5]常住居民I

    发表于 2007-6-4 21:29:18 | 显示全部楼层
    希望多出一些算法分析,呵,跟你学习1
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-6-5 01:43:20 | 显示全部楼层
    /:02 00468158  |.  C1E0 0A       SHL EAX,0A                               ;  eax左移a=1800
    弱弱的问下:eax=6左移A=10位.这个1800怎么算出来的呢?
    还有:00468150  |.  83C6 08       ADD ESI,8                                ;  esi=注册码位数+8=4+8=c
    这里的ESI是用户名位数吧?

    [ 本帖最后由 yjz1409276 于 2007-6-5 01:46 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-6-5 06:41:16 | 显示全部楼层
    原帖由 千里之外 于 2007-6-4 20:24 发表
    【文章标题】: 2006年PYG作业验证算法分析
    【文章作者】: 千里之外
    【作者邮箱】: 1986.1024@163.com
    【作者主页】: www.wm5.net.cn
    【作者QQ号】: 506398911
    【软件名称】: PYG5.4Crackers作业验证之Crac ...


    其实第三步是在求商的10进制的数,也就是经过第三步的时候直接转成10进制数就行了
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2007-6-5 08:41:45 | 显示全部楼层
    原帖由 yjz1409276 于 2007-6-5 01:43 发表
    /:02 00468158  |.  C1E0 0A       SHL EAX,0A                               ;  eax左移a=1800
    弱弱的问下:eax=6左移A=10位.这个1800怎么算出来的呢?
    还有:00468150  |.  83C6 08       ADD ESI,8          ...

    先谢谢大家的支持/:09    那个ESI是用户名的位数 呵呵 谢谢指正  /:09
    eax左移a=1800  这个可用网上的科学计算器计算 注意都是16进制的 我提供个计算器地址 兄弟去试试
    http://www.hao123.com/haoserver/jishuqii.htm
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-6-5 11:37:46 | 显示全部楼层
    /:09 赞一个!终于能看懂一点点的算法了~呵呵~感谢LZ发的这么好的破文~支持/:09
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-6-6 20:45:06 | 显示全部楼层
    shl eax,0A
    =imul eax,400h(16进制的1024)

    就是eax乘以2的0A次方
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-6-7 09:46:23 | 显示全部楼层
    我个人认为关键算法部分还可以写的更详细些,这样大家也容易看懂,祝你成功/:09
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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